用途
Supply Chain Risk Auditor 用于系统性地评估项目的所有依赖,找出具有较高被利用或被接管风险的依赖项,并生成一份风险总结报告。它适用于在安全审计前评估依赖风险、评估项目的供应链攻击面、识别缺乏维护或存在风险的依赖,以及为供应链相关的安全工作做前期范围界定。
主要能力
该技能按照一组明确的风险标准逐项评估依赖,若依赖满足其中任一风险因素,则将其标记为高风险:
- 单一维护者或个人团队:项目主要由单个个人或少数个人维护,而非由 Linux Foundation 等组织或 Microsoft 等公司管理。若维护者是极高产且知名的贡献者,风险会降低但不会消除;若维护者匿名、GitHub 身份难以关联真实身份,风险显著更高。
- 缺乏维护:项目长期无更新,或已明确弃用/归档;维护者可能在 README 或 issue 中说明项目不活跃、人手不足或寻求新维护者;仓库可能存在大量未回应的 bug 或安全问题 issue(功能请求类 issue 不计入)。
- 流行度低:相比目标项目使用的其他依赖,GitHub 星标数和/或下载量相对较低。
- 高风险功能:项目实现了天然易被利用的功能,包括 FFI、反序列化或第三方代码执行。
- 存在历史 CVE:项目有高或严重级别的 CVE,尤其相对于其流行度和复杂度数量较多时。
- 缺少安全联系方式:项目未在 .github/SECURITY.md、CONTRIBUTING.md、README.md 或项目网站上列出安全联系人。
使用方式
前置条件:使用前需确保 gh 工具可用,若未找到会要求用户安装。
初始设置:
- 在工作区创建 .supply-chain-risk-auditor 目录。
- 基于该技能目录中的 resources/results-template.md 创建 results.md 报告文件。
- 查找所有直接依赖的 git 仓库。
- 将 git 仓库条目规范化为 URL,若仅有 name/project 格式,则前置 GitHub URL。
依赖审计: 对初始设置中识别出的每个依赖仓库,按上述风险标准评估。对需要计数的标准(如未解决 GitHub issue 数),使用 gh 工具查询准确数据,引用的数字(星标数、issue 数等)必须准确,可用 ~ 表示近似,如“~4000 stars”。若依赖满足任一风险标准,将其加入 results.md 的高风险依赖表,并清楚注明标记原因。为简洁起见,跳过低风险依赖,只记录至少有一个风险因素的依赖。报告中不出现某依赖即表示其低风险或无风险。
审计后处理:
- 为高风险依赖表中的每个依赖填写 Suggested Alternative 字段,给出功能相同或相似但更流行、维护更好的替代依赖,优先选择直接后继或可直接替换的替代品,并附简短理由。
- 在 Counts by Risk Factor 表中记录各风险因素类别的总数,并在 Executive Summary 部分总结整体安全态势。
- 在 Recommendations 部分总结建议。
注意:不要添加 resources/results-template.md 之外的章节。
适用场景
- 在安全审计前评估依赖风险。
- 评估项目的供应链攻击面。
- 识别缺乏维护或存在风险的依赖。
- 为供应链相关关注点做前期范围界定。
限制
以下场景不适用:
- 主动漏洞扫描(应使用 npm audit、pip-audit 等专用工具)。
- 运行时依赖分析。
- 许可证合规审计。