camscanner
CamScanner 官方文档处理 Skill,代码实现良好(含校验和、回滚),但存在远程升级 CDN 供应链单点风险和文档中 `curl|sh` 管道执行模式两个需要注意的安全考量。
为什么得出这个结论
1/4 个维度触发声明资源与推断能力基本一致。
提取到 1 个高危 IOC 或外联信号。
没有形成明确的恶意路径。
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
SKILL.md 注释和 setup.sh 注释均包含 `curl ... | sh` 模式,虽已正确实现为临时文件执行,但该模式本身属于高危指标
upgrade.sh/upgrade.cjs 从 https://data.camscanner.com 下载 CLI 二进制和 Skill ZIP 并覆盖本地文件,若 CDN 被入侵可被恶意更新替换
setup.sh/download 分支中校验和验证失败仅打印 [WARN] 而不中止,upgrade.sh 虽强制检查但下载失败时不阻止
未发现凭证窃取、敏感路径遍历、base64 混淆或数据外传
最关键的证据
远程升级依赖单一 CDN,存在供应链单点风险
upgrade.sh 和 upgrade.cjs 从 https://data.camscanner.com 下载 CLI 二进制和 Skill ZIP 包并直接覆盖本地文件系统。若 CDN 被入侵,攻击者可推送恶意二进制/SKILL.md/scripts 以合法签名分发更新。
scripts/upgrade.sh:131 文档注释中包含危险管道执行模式 `curl | sh`
SKILL.md 和 setup.sh 注释均展示了 `curl -fsSL <CDN>/setup.sh | sh` 模式,这是典型的高危远程代码执行指标。虽实际代码使用安全的临时文件下载方式,但注释本身暴露了危险用法。
SKILL.md:36 setup.sh 下载校验和失败时仅告警不中止
当 checksums.txt 下载失败或缺少条目时,setup.sh 仅打印 [WARN] 继续执行,不中止安装过程,存在校验和验证可被绕过的风险。
scripts/setup.sh:96 声明能力 vs 实际能力
SKILL.md:1 — 输出文件写入本地路径,setup.sh 安装 CLI 到 ~/.local/bin SKILL.md:1 — 上传文件到 CamScanner 服务器处理(WRITE),下载 CLI 二进制(upgrade.sh:131-143) setup.sh:88 — chmod +x 安装二进制;upgrade.sh:155 — mv/cp 替换正在运行的 CLI setup.sh:6 — 读取 CAMSCANNER_CLI_VERSION/CDN/DIR 等环境变量用于配置(符合工具合法用途) 可疑产物与外联
curl -fsSL <CDN>/setup.sh | sh scripts/setup.sh:7
https://www.camscanner.com SKILL.md:8
https://data.camscanner.com/camscanner-cli/releases scripts/setup.cjs:22
https://data.camscanner.com/camscanner-cli scripts/upgrade.cjs:24
依赖与供应链
没有结构化依赖告警。
文件构成
SKILL.md scripts/upgrade.cjs scripts/upgrade.sh scripts/setup.cjs scripts/setup.sh