用途
供应链风险审计器用于系统性地评估项目全部依赖,识别出具有较高被利用或被接管风险的依赖项,并生成一份摘要报告。它适用于以下场景:在安全审计前评估依赖风险、评估项目的供应链攻击面、识别无人维护或存在风险的依赖,以及围绕供应链问题开展审计前的范围界定(pre-engagement scoping)。
该技能在用户说出“audit this project's dependencies”时激活。
主要能力(风险判定标准)
当某个依赖满足以下任一风险因素时,即被视为高风险:
- 单一维护者或个人团队:项目主要由某一个人或少数个人维护,而非由 Linux Foundation 这类组织或 Microsoft 这类公司管理。如果该个人是生态中极其高产且知名的贡献者(如 sindresorhus 或 Drew Devault),风险会降低但不会消除;反之,如果该个人是匿名的——即其 GitHub 身份难以对应到现实世界身份——风险显著更高。理由:若开发者被贿赂或钓鱼,可能单方面推送恶意代码。
- 无人维护:项目停滞(长期无更新)或已被明确废弃/归档。维护者可能在 README.md 或 GitHub issue 中说明项目不活跃、人手不足或正在寻找新维护者。仓库可能存在大量维护者未回应的 bug 或安全 issue(功能请求类 issue 不计入)。理由:若项目中发现漏洞,可能无法及时修补。
- 流行度低:相比目标使用的其他依赖,GitHub star 和/或下载量相对偏低。理由:用户少意味着关注少,若引入恶意代码不会被及时发现。
- 高风险特性:项目实现的功能本身特别容易被利用,包括 FFI、反序列化或第三方代码执行。理由:这些依赖对目标的安全态势至关重要,需要经受高标准审查。
- 存在历史 CVE:项目存在高危或严重级别 CVE,尤其数量相对其流行度和复杂度偏多。理由:对于极受欢迎的、仅仅因受到更多审查和安全研究而被记录更多问题的项目,这不一定代表需要担忧。
- 缺少安全联系方式:项目在 .github/SECURITY.md、CONTRIBUTING.md、README.md 等文件中,或在其官网(若有)上均未列出安全联系方式。理由:发现漏洞的人将难以安全且及时地上报。
使用方式
前置条件:在使用前确保 gh 工具可用。若未找到,请用户安装。
初始设置工作流:
- 创建
.supply-chain-risk-auditor工作目录,并基于该目录中的results-template.md开始编写results.md报告文件。 - 找到所有直接依赖的 git 仓库。
- 将 git 仓库条目规范化为 URL;如果条目仅为 name/project 格式,确保在前面补上 GitHub URL。
依赖审计工作流:
- 对初始设置中已识别仓库的每个依赖,按上述风险标准评估其风险。对于需要诸如统计 open GitHub issue 数等操作的标准,使用
gh工具查询确切数据;引用的任何数字(如 star 数、open issue 数)必须准确,可用 ~ 符号对 issue 和 star 数进行四舍五入(如“~4000 stars”)。 - 若某个依赖满足任一风险标准,将其加入
results.md中的高风险依赖表,并清楚注明标记其为高风险的原因。为简洁起见,跳过低风险依赖,只记录至少具有一项风险因素的依赖。不要记录风险因素的“反面”,例如不要为“有组织支持(较低风险)”的依赖设立一列。某依赖未出现在报告中,即表示其为低风险或无风险。
审计后工作流:
- 对高风险依赖表中的每个依赖,在“Suggested Alternative”字段填写一个功能相同或相似、但更流行或维护更好的替代依赖。优先选择直接后继者或可直接替换(drop-in replacement)的方案,并简要说明推荐理由。
- 在 Counts by Risk Factor 表中记录各风险因素类别的总数,并在 Executive Summary 部分总结整体安全态势。
- 在 Recommendations 部分汇总建议。
注意:不要添加 results-template.md 中未提及的章节。
适用场景
- 安全审计前的依赖风险评估。
- 评估项目的供应链攻击面。
- 识别无人维护或有风险的依赖。
- 针对供应链关注的审计前范围界定。
限制
该技能不适用于:
- 主动漏洞扫描(应使用 npm audit、pip-audit 等专门工具)。
- 运行时依赖分析。
- 许可证合规审计。
该技能的具体收费、价格与平台信息暂未提供。
引用文档
以下为作者声明的引用来源,保留指定版本、署名和许可。
- trailofbits/skills/plugins/supply-chain-risk-auditor/skills/supply-chain-risk-auditor/SKILL.md — 署名:Trail of Bits;许可:CC-BY-SA-4.0;版本:
5c15f4f5644b4bd3d48882a802a7232d501852b6。