GitHub 为 Dependabot 告警推出可达性分析公开预览
Prioritize Dependabot alerts with reachability analysis
GitHub 为 Dependabot 告警上线可达性分析公开预览,支持 JavaScript 和 TypeScript,通过 CodeQL 构建调用图,判断代码是否存在通往依赖中漏洞函数的调用路径。
原文说明了可达性判定如何与严重度、EPSS 等信号并列使用,读者可据此调整依赖漏洞的修复优先级。
Dependabot 警报的累积速度可能超过团队的处理速度。依赖树中存在易受攻击的包,并不总是意味着你的代码会使用其中易受攻击的部分,因此了解代码是否确实调用了该部分,能在你决定从何处着手时提供更多背景信息。
适用于 Dependabot 的可达性分析现已面向 JavaScript 和 TypeScript 推出公开预览版,可为你的警报补充这一背景信息。它会查找从你的代码到依赖项中易受攻击函数的调用路径,并在每条警报上显示证据。你可以结合严重性、EPSS 评分、生产环境背景以及你对自身应用的了解,以适合团队的方式对依赖项漏洞进行优先级排序和修复。
工作原理
Dependabot 会在托管的 GitHub Actions 工作流中为你运行可达性分析,因此无需安装或维护任何内容。对于每条安全公告,分析会使用经过整理的数据来识别受影响包中的易受攻击函数。CodeQL 会在你的仓库及其依赖项之间构建调用图,然后搜索从你的代码到上述每个函数的路径。
每条未关闭的 Dependabot 警报都会获得以下判定之一:
- 可达:你的代码至少有一条通往易受攻击函数的调用路径。
- 可能可达:分析无法确定你的代码是否调用了易受攻击的函数。请将这些警报视为可达。
- 不可达:分析已完成,未发现通往易受攻击函数的调用路径。这些警报的优先级较低。
- 可达性不可用:无法分析该警报。请按常规方式对其进行分类处理。
判定结果会显示在你已在使用的 Dependabot 警报上,并且绝不会关闭或忽略警报。你可以在仓库和组织警报页面上按判定结果进行筛选和排序,或使用 Dependabot alerts REST API 将同样的信号引入你自己的工具和代理中。
可用性与要求
在公开预览期间:
- 费用:免费。你不需要 GitHub Advanced Security 许可证,分析所用的 GitHub Actions 分钟数也不会向你计费。
- 计划:GitHub Enterprise Cloud,包括具有数据驻留功能的 GitHub Enterprise Cloud。
- 语言:JavaScript 和 TypeScript,且仓库中包含 npm、Yarn 或 pnpm 锁文件。
- 运行器:分析在 GitHub 托管的运行器上运行。预览期间不支持自托管运行器。与 Dependabot 更新一样,你无需开启 GitHub Actions 即可运行分析。
- 仓库大小与代码复杂度:预览期间,某些 monorepo 和/或在多个目录中包含清单文件的仓库可能不受支持。在预览期间,如果分析运行时间超过三小时,部分结果可能会显示“可达性不可用”。
- 公告覆盖范围:覆盖 GitHub Advisory Database 中所有经过 GitHub 审核、且会收到 Dependabot 警报的 JavaScript 公告。
开始使用
可达性分析默认关闭。你可以通过为企业或组织设置自定义安全配置,一次性为多个仓库开启;也可以在单个仓库的 Settings > Advanced Security 的 Dependabot 部分中开启。必须开启 Dependabot 警报才能看到可达性判定结果。
首次扫描会立即开始,可能需要几分钟到几小时。之后,只要仓库存在未关闭的 Dependabot 警报,扫描就会每天重新运行,因此随着代码和公告的变化,判定结果会保持最新。
要了解更多信息,请参阅 GitHub Docs 中的关于 Dependabot 警报的可达性分析。
如果您有任何问题或反馈,请在我们的社区讨论中留言。
来源:GitHub Changelog · github.blog