GitHub AE 报告的依赖项检测结果可能不同于其他工具返回的结果。 这是有原因的,它有助于了解 GitHub 如何确定项目的依赖项。
为什么似乎缺少某些依赖项?
GitHub 生成和显示依赖项数据不同于其他工具。 因此,如果您过去使用其他工具来识别依赖项,则几乎可以肯定您会看到不同的结果。 考虑以下情况:
- GitHub Advisory Database 是 GitHub 用来识别漏洞依赖项的数据源之一。 它是一款免费的精选数据库,用于收集 GitHub 上常见软件包生态系统的安全公告。 它包括从 GitHub Security Advisories 直接报告给 GitHub 的数据,以及官方馈送和社区来源。 这些数据由 GitHub 审查和整理,以确保不会与开发社区分享虚假或不可行的信息。 有关详细信息,请参阅“在 GitHub Advisory Database 中浏览安全公告”。
- 依赖项图解析用户仓库中所有已知的包清单文件。 例如,对于 npm,它将解析 package-lock.json 文件。 它构造所有仓库依赖项和公共依赖项的图表。 当启用依赖关系图时,当任何人推送到默认分支时,都会发生这种情况,其中包括对支持的清单格式进行更改的提交。 有关详细信息,请参阅“关于依赖关系图”和“依赖关系图疑难排解”。
- Dependabot 扫描对包含清单文件的默认分支的任何推送。 添加新公告时,它会扫描所有现有存储库并为每个受影响的存储库生成警报。 Dependabot alerts 在存储库级别汇总,而不是针对每条公告创建一个警报。 有关详细信息,请参阅“关于 Dependabot 警报”。
- Dependabot 不会按计划扫描存储库,而是在发生某些变更时扫描存储库。 例如,新增依赖项时(GitHub 在每次推送时都会进行此项检查),或者当新的公告添加到数据库以及同步到 你的企业时,就会触发扫描。 有关详细信息,请参阅“关于 Dependabot 警报”。
Dependabot alerts 是否仅与清单和锁定文件中的不安全依赖项相关?
Dependabot alerts 提醒您应更新的依赖项,包括可从清单或锁定文件确定版本的过渡依赖项。
检查:未在存储库的清单或锁定文件中指定的组件是否存在未捕获的漏洞?
为什么我无法获取某些生态系统的 Dependabot alerts?
Dependabot alerts 支持一组可提供高质量、可操作数据的生态系统。 GitHub Advisory Database 中的特选公告、依赖项关系图、 和 Dependabot alerts 提供用于多个生态系统,包括 Java’s Maven、JavaScript’s npm 和 Yarn、.NET’s NuGet、Python’s pip、Ruby's RubyGems 以及 PHP’s Composer。 我们将在今后继续增加对更多生态系统的支持。 有关我们支持的包生态系统的概述,请参阅“关于依赖关系图”。
值得注意的是,可能存在其他生态系统的安全公告。 未经审查的安全公告中的信息由特定存储库的维护员提供。 此数据不是由 GitHub 策展的。 有关详细信息,请参阅“在 GitHub Advisory Database 中浏览安全公告”。
检查:未捕获的漏洞是否适用于不受支持的生态系统?
Dependabot 是否会针对已知多年的漏洞生成警报?
GitHub Advisory Database 于 2019 年 11 月推出,并在最初回顾性包含了受支持生态系统的安全风险公告(从 2017 年开始)。 将 CVE 添加到数据库时,我们会优先处理较新的 CVE,以及影响较新版本软件的 CVE。
提供了一些有关较旧漏洞的信息,尤其是在这些 CVE 特别普遍的地方,但一些较旧的漏洞未包含在 GitHub Advisory Database 中。 如果您需要将一些特定的旧漏洞包含在数据库中,请联系 你的企业所有者。
检查:未捕获的漏洞在国家漏洞数据库中的发布日期是否早于 2017 年?
为什么 GitHub Advisory Database 使用已发布漏洞数据的子集?
有些第三方工具使用未经人为检查或过滤的未整理 CVE 数据。 这意味着 CVE 带有标签或严重错误或其他质量问题,将导致更频繁,更嘈杂且更无用的警报。
由于 Dependabot 使用 GitHub Advisory Database 中的策展数据,因此警报量可能较少,但是收到的警报将是准确和相关的。