具有易受攻击的依赖项并不总是意味着应用程序调用受影响的函数。 Reachability analysis 为每个 Dependabot 警报添加一个判定,以帮助你根据代码使用依赖项的方式确定修复的优先级。
注意
Reachability analysis 的 Dependabot alerts 位于 公开预览,且可能会更改。
reachability analysis的工作原理
Reachability analysis 分析已打开的 Dependabot alerts,以确定应用程序是否可以调用易受攻击的函数。 它使用 CodeQL 静态分析和特选数据来标识受影响的函数,以查找从代码到这些函数的调用路径。
每个经过分析的Dependabot警报都会收到一个有助于确定其优先级的判定结果。 在可用的情况下,调用路径证据显示代码如何到达易受攻击的函数,以便您了解为何该警报对您的应用程序很重要。
要求和支持的生态系统
Reachability analysis 支持使用 npm、pnpm 或 Yarn 的 JavaScript 存储库,以及 TypeScript 存储库。 仓库必须具有锁文件,例如 package-lock.json、pnpm-lock.yaml 或 yarn.lock。
必须启用 Dependabot alerts,reachability analysis 才能正常工作。
分析在 GitHub 托管的运行器上运行。 不支持自托管运行器。
了解可达性判定
使用可达性以及严重性、攻击预测评分系统(EPSS)分数、依赖项范围和依赖项关系来确定要首先解决的警报。
| 判决 | Meaning | 推荐的响应 |
|---|---|---|
| 可达 | 分析发现至少一个从存储库代码到易受攻击的函数的调用路径。 | 确定修正的优先级并查看调用路径证据。 |
| 可能可达 | 分析无法排除对易受攻击函数的调用。 这种不确定性不是由不受支持的生态系统或失败扫描引起的。 在具有多个清单的代码库中,仅在清单目录外找到的调用被视为可能可达的。 | 将修正与可处理的警报一起确定优先级。 |
| 不可访问 | 分析已完成,未找到应用程序代码对易受攻击函数的调用。 | 给予告警较低的优先级,但不要仅仅因为此判定而忽略或关闭它。 |
| 可达性不可用 | 分析无法提供结论,例如,警报针对不受支持的生态系统或扫描失败或超时。 | 使用其他优先级信号对警报进行分类处置。 |
使用可达性来确定告警优先级,而不是关闭告警
Reachability analysis 将信息添加到现有打开的警报,以帮助确定修正的优先级。 它不会发现新的漏洞,也不会自动关闭或消除警报。
判决是某一时点的评估。 不应仅根据警报的可达性判定关闭或忽略警报;虽然某个函数当前可能无法从您的代码中到达,但代码更改或对安全公告的更新可能会更改后续扫描的结果。
可达性不等于可利用性
可达函数不一定是可被利用的。 可达性表明调用路径存在,而不是攻击者可以使用它来利用漏洞。
同样,“无法访问”判决不能保证依赖项是安全的。 继续查看这些警报,并使依赖项保持最新。
调用路径证据
对于可达警报,调用路径证据显示来自您的代码的调用如何沿调用路径到达易受攻击的函数。 使用此证据来了解应用程序在何处使用受影响的依赖项,并规划修复措施。
警报最多可以显示五个示例路径。 这些示例并非每个可能的调用路径的详尽列表。
了解何时更新结果
启用reachability analysis会开始对存储库中未解决警报的初始扫描。 之后,只要存储库存在开放警报,扫描每隔 24 小时运行一次。 每次扫描都会检查所有未处理的警报。
推送代码更改不会触发扫描。 更改代码后,在后续扫描完成之前,判定结果不会反映这些更改。
在此期间 公开预览,无法安排或触发按需扫描。
扫描持续时间取决于存储库大小和依赖项。 扫描可以在几分钟内完成,但较大的扫描需要更长的时间。 在公开预览期间,扫描有三个小时的时间限制。
在 公开预览 期间的计费和使用情况
Reachability analysis在公开预览期间免费。 其扫描不会消耗计费 GitHub Actions 分钟数。
已知的限制
Reachability analysis 在 公开预览 期间具有以下限制:
- 生态系统支持:不支持受支持的 JavaScript 和 TypeScript 生态系统之外的警报。
- 大型存储库和 monorepos:某些存储库可以达到三小时的扫描限制或遇到资源限制,从而使结果不可用。
通过 REST API 使用裁决结果
Dependabot alerts REST API 公开了针对 reachability analysis 的裁定结果。 可以通过存储库、组织和企业警报终结点检索裁定结果。 请参阅“Dependabot alerts 的 REST API 端点”。
后续步骤
若要为存储库启用 reachability analysis ,请参阅 为 Dependabot 警报配置可达性分析。