安全决策报告
bt-download
BT下载工具存在未声明的外部网络访问行为(bt_get_trackers静默从GitHub获取数据),但功能本身符合工具声明用途,风险可控。
最直接的威胁证据
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 1 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
发现 2 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
未声明的网络访问 +25
bt_get_trackers通过curl访问GitHub获取tracker列表,SKILL.md未声明此外部网络行为
外部URL内容获取 +15
无条件curl远程URL,存在供应链风险(URL内容可能被篡改)
shell执行能力 +10
使用child_process.exec执行系统命令,能力符合下载工具定位但属高权限操作
sudo权限要求 +5
bt_install_aria2需要sudo安装系统包,未在参数说明中明确
最关键的证据
中危 文档欺骗
未声明的外部网络访问
bt_get_trackers函数通过curl从GitHub获取tracker列表,但SKILL.md的功能说明中完全未提及此网络行为。这是典型的文档-行为差异,属于阴影功能。
plugin.ts:133 在SKILL.md的bt_get_trackers描述中明确说明需要网络访问权限,声明获取来源URL
低危 供应链
外部URL内容获取无完整性校验
curl获取的tracker列表内容直接使用,无哈希校验或签名验证。若攻击者篡改上游仓库,可注入恶意tracker
plugin.ts:133 考虑内嵌一份tracker列表作为fallback,或添加内容完整性校验
低危 权限提升
sudo安装系统包未在文档声明
bt_install_aria2使用'sudo apt-get install'安装aria2,需要提升权限,但SKILL.md参数说明中未提及此权限要求
plugin.ts:101 在工具描述中明确说明需要sudo权限,或改用非root安装方式
提示 敏感访问
环境变量读取下载目录
代码读取DOWNLOAD_DIR环境变量作为默认下载目录,这是合法的配置能力
plugin.ts:213 无需修改,属于正常的配置机制
声明能力 vs 实际能力
文件系统 通过
声明 READ
→ 推断 READ
plugin.ts:217 readFile读取.torrent文件 网络访问 阻止
声明 NONE
→ 推断 READ
plugin.ts:133 curl访问github.com/ngosang/trackerslist 命令执行 通过
声明 WRITE
→ 推断 WRITE
plugin.ts 多处child_process.exec调用 环境变量 通过
声明 NONE
→ 推断 READ
plugin.ts:213 process.env.DOWNLOAD_DIR读取 可疑产物与外联
中危 外部 URL
https://aria2.github.io SKILL.md:4
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| node-fetch | * | dynamic import | 否 | 按需导入用于RPC调用 |
| aria2c | * | system package | 否 | 系统依赖,通过apt安装 |
文件构成
2 个文件 · 591 行
TypeScript 1 个文件 · 456 行Markdown 1 个文件 · 135 行
需关注文件 · 2
plugin.ts 未声明的外部网络访问 · 外部URL内容获取无完整性校验 · sudo安装系统包未在文档声明 · 环境变量读取下载目录
SKILL.md https://aria2.github.io
安全亮点
使用aria2 RPC模式而非直接操作下载文件,隔离良好
RPC服务仅监听localhost:6800,不对外暴露
日志写入/tmp/aria2-rpc.log,不包含敏感信息
工具功能定位清晰,符合BT下载助手声明
fallback tracker列表硬编码,防止网络失败完全阻塞