关于 GitHub Advisory Database
我们从以下来源向 GitHub Advisory Database 添加公告信息:
- GitHub 上报告的安全通告
- 国家漏洞数据库
- npm 安全顾问数据库
- FriendsOfPHP 数据库
- Go Vulncheck 数据库
- Python Packaging Advisory 数据库
- Ruby Advisory 数据库
- RustSec Advisory 数据库
- 社区贡献。 有关详细信息,请参阅 https://github.com/github/advisory-database/pulls。
如果你知道我们应该从中导入顾问的另一个数据库,请通过在 https://github.com/github/advisory-database 中创建问题来告诉我们。
安全公告以开放源代码漏洞 (OSV) 格式的 JSON 文件形式发布。 有关 OSV 格式的详细信息,请参阅“开放源代码漏洞格式”。
关于安全公告的类型
GitHub Advisory Database 中的每个公告都涉及开放源代码项目中的漏洞或恶意开放源代码软件。
漏洞是项目代码中的问题,可能被利用来损害机密性、完整性或者该项目或其他使用其代码的项目的可用性。 漏洞的类型、严重性和攻击方法各不相同。 代码中的漏洞通常是偶然引入的,并在被发现后很快会得到修复。 应更新代码,以便在依赖项可用时立即使用它的修复后的版本。
相比之下,恶意软件是有意设计为执行不需要或有害功能的代码。 恶意软件可能针对硬件、软件、机密数据或使用该恶意软件的任何应用程序的用户。 需要从项目中删除恶意软件,并为依赖项找到可供选择的、更安全的替代项。
经 GitHub 审核的公告
经 GitHub 审核的公告是已映射到支持的生态系统中的包的安全漏洞或恶意软件。 仔细查看每个公告的有效性,并确保它们具有完整的说明,以及包含生态系统和包信息。
通常,我们以软件编程语言的相关包注册表命名支持的生态系统。 我们会审查与受支持注册表中的包中的漏洞相关的公告。
- Composer(注册表:https://packagist.org/)
- Erlang(注册表:https://hex.pm/)
- Go(注册表:https://pkg.go.dev/)
- GitHub Actions(https://github.com/marketplace?type=actions/)
- Maven(注册表: https://repo.maven.apache.org/maven2)
- Npm(注册表:https://www.npmjs.com/)
- NuGet(注册表: https://www.nuget.org/)
- Pip(注册表:https://pypi.org/)
- Pub(注册表:https://pub.dev/packages/registry)
- RubyGems(注册表: https://rubygems.org/)
- Rust(注册表: https://crates.io/)
- Swift(注册表:不适用)
如果对我们应该支持的新生态系统有任何建议,请提出问题以供讨论。
如果为存储库启用 Dependabot alerts,则当经 GitHub 审核的新公告报告所依赖的包存在漏洞时,系统会自动通知你。 有关详细信息,请参阅“关于 Dependabot 警报”。
未审核的公告
未审核的公告是我们直接从国家漏洞数据库源自动发布到 GitHub Advisory Database 的安全漏洞。
Dependabot 不会为未审核的公告创建 Dependabot alerts,因为不会检查此类公告的有效性或完成情况。
恶意软件公告
恶意软件公告与恶意软件造成的漏洞有关,并且是 GitHub 直接从 npm 安全团队提供的信息自动发布到 GitHub Advisory Database 的安全公告。 恶意软件公告仅适用于 npm 生态系统。 GitHub 不对这些建议进行编辑或接受社区贡献。
检测到恶意软件时,Dependabot 不会生成警报,因为大多数漏洞都无法由下游用户解决。 可通过在 GitHub Advisory Database 中搜索 type:malware
来查看恶意软件公告。
我们的恶意软件公告主要关于替代攻击。 在此类攻击期间,攻击者将包发布到公共注册表,其名称与用户从第三方或专用注册表依赖的依赖项相同,并希望恶意版本得到使用。 Dependabot 不会通过查看项目配置来确定包是否来自私有注册表,因此我们无法确定你使用的是恶意版本还是非恶意版本。 通过指定适当的依赖范围,用户就不会受到恶意软件的影响。
关于安全公告中的信息
在本部分中,可以找到有关 GitHub Advisory Database 的特定数据属性的更多详细信息。
关于 GHSA ID
每个安全公告(无论其类型如何)都有一个称为 GHSA ID 的唯一标识符。 在 时,将分配 GHSA-ID
限定符。
GHSA ID 的语法遵循以下格式:GHSA-xxxx-xxxx-xxxx
,其中:
x
是以下集中的字母或数字:23456789cfghjmpqrvwx
。- 名称的
GHSA
部分外:- 数字和字母是随机分配的。
- 所有字母是小写的。
可以使用正则表达式验证 GHSA ID。
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
关于 CVSS 级别
每个安全公告都包含有关漏洞和恶意软件的信息,可能包括说明、严重程度、受影响的包、包生态系统、受影响的版本和修补版本、影响以及可选信息(如引用、解决方法和积分)。 此外,国家漏洞数据库列表中的公告包含 CVE 记录链接,通过链接可以查看漏洞、其 CVSS 得分及其质化严重等级的更多详细信息。 有关详细信息,请参阅美国国家标准和技术研究院的“国家漏洞数据库”。
严重级别是“常见漏洞评分系统 (CVSS) 第 5 节”中定义的四个可能级别之一。
- 低
- 中
- 高
- 严重
GitHub Advisory Database 使用上述 CVSS 级别。 如果 GitHub 获取 CVE,则 GitHub Advisory Database 使用维护者分配的 CVSS 版本,可以是版本 3.1。 如果 CVE 是导入的,则 GitHub Advisory Database 支持 CVSS 版本 3.1 和 3.0。
还可加入 GitHub Security Lab,以浏览与安全相关的主题,并为安全工具和项目做出贡献。
关于 EPSS 分数
攻击预测评分系统 (EPSS) 是由全球事件响应和安全团队论坛 (FIRST) 设计的系统,用于量化漏洞被利用的可能性。 该模型生成介于 0 和 1(0 到 100%)之间的概率分数,分数越高,漏洞被利用的可能性就越大。 有关 FIRST 的详细信息,请参阅 https://www.first.org/。
对于包含 CVE 和相应 EPSS 数据的公告,GitHub Advisory Database 包括来自 FIRST 的 EPSS 分数。 GitHub 还显示 EPSS 分数百分位数,这是所有评分漏洞中具有相同或较低 EPSS 分数的比例。
例如,如果某公告的 EPSS 分数百分比为 90.534%,在第 95 百分位数,则根据 EPSS 模型,这表示:
- 在接下来的 30 天内,该漏洞在现实中被利用的可能性为 90.534%。
- 总体建模漏洞中有 95% 被认为在未来 30 天内被利用的可能性低于此漏洞。
有关如何解释此数据的扩展信息,请参阅 FIRST 的 EPSS 用户指南。 此信息可帮助你了解根据 FIRST 模型如何使用百分比和百分位数来解释漏洞在现实中被利用的可能性。 有关详细信息,请参阅 FIRST 网站上的 FIRST 的 EPSS 用户指南。
FIRST 还提供有关其 EPSS 数据分布的其他信息。 有关详细信息,请参阅 FIRST 网站上的 EPSS 数据和统计信息文档。
Note
GitHub 通过每日同步操作使 EPSS 数据保持最新。 虽然 EPSS 分数百分比将始终完全同步,但分数百分位数只有在出现显著差异时才会更新。
在 GitHub 中,我们不创作此数据,而是从 FIRST 中获取该数据,这意味着此数据在社区贡献中不可编辑。
延伸阅读
- "关于 Dependabot 警报"
- CVE 程序的“漏洞”定义