关于 GitHub Advisory Database
安全公告以开放源代码漏洞 (OSV) 格式的 JSON 文件形式发布。 有关 OSV 格式的更多信息,请参阅开源漏洞格式。
安全公告的类型
每个 GitHub Advisory Database 公告都与软件组件中的特定安全问题相关。 这些问题有多种品种。
漏洞是项目代码中存在的问题,它可能被利用来损害项目的机密性、完整性或可用性,或者使用该漏洞的其他项目。 代码中的漏洞通常由意外引入,并在发现漏洞后不久修复。 漏洞公告包含有关存在问题的已发布包版本范围的信息,以及问题已修复的最早版本。 这有助于软件的下游用户通过更新其依赖项以在可用后立即使用固定版本来解决漏洞。
相比之下,恶意软件是有意设计为执行不需要或有害功能的代码。 恶意软件可能针对硬件、软件、机密数据或使用该恶意软件的任何应用程序的用户。 需要从项目中删除恶意软件,并为依赖项找到可供选择的、更安全的替代项。 恶意软件警报不包含修补程序版本,因为恶意软件警报的定义特征是没有安全版本,唯一的安全操作过程根本不要使用包。
GitHub-经审核的漏洞通告
我们从以下来源向 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 中创建问题来告诉我们。
** GitHub-审核** 建议与我们支持的生态系统中的包进行映射。 我们仔细查看每个公告的有效性,并确保它们包含完整的说明以及生态系统和包信息。
通常,我们以软件编程语言的相关包注册表命名支持的生态系统。 我们会审查与受支持注册表中的包中的漏洞相关的公告。
- 作曲家 (注册表: 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 ,因为未检查这种类型的公告是否有效或完成。
恶意软件通告
恶意软件 公告与恶意软件造成的漏洞有关,并且是 npm 生态系统的独占。 我们根据 npm 安全团队提供的信息,自动将其发布到GitHub Advisory Database中。
可以通过在type:malware中搜索GitHub Advisory Database来查看恶意软件公告。
我们的恶意软件通告主要涉及替换攻击。 在此类攻击中,攻击者向公共注册表发布与用户依赖的第三方或私有注册表依赖包同名的包,试图让恶意版本被使用。 Dependabot 不查看项目配置以确定包是否来自专用注册表,因此我们无法确定使用的是恶意版本还是具有相同名称的非恶意版本。 正确作用域化依赖项的用户不应受到恶意软件影响。
安全公告中的信息
在本部分中,可以找到有关特定 GitHub Advisory Database数据属性的更多详细信息。
GHSA ID
每个安全公告(无论其类型如何)都有一个称为 GHSA ID 的唯一标识符。 当在 GHSA-ID 上创建新公告,或从任一受支持来源将其添加到 GitHub 时,会分配一个 GitHub Advisory Database 限定符。
GHSA ID 的语法遵循以下格式:GHSA-xxxx-xxxx-xxxx,其中:
x是以下集合中的字母或数字:23456789cfghjmpqrvwx。- 名称的
GHSA部分外:- 数字和字母是随机分配的。
- 所有字母是小写的。
可以使用正则表达式验证 GHSA ID。
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
CVSS 级别
GitHub Advisory Database 支持 CVSS 版本 3.1 和版本 4.0。
每条安全通告包含漏洞或恶意软件的信息,可能包括描述、严重性、受影响的包、包生态、受影响版本和修复版本、影响,以及可选信息,如参考资料、解决方法和致谢。 此外,国家漏洞数据库列表中的公告包含 CVE 记录链接,通过链接可以查看漏洞、其 CVSS 得分及其质化严重等级的更多详细信息。 更多信息,请参阅美国国家标准与技术研究院(NIST)的国家漏洞数据库。
严重性等级为通用漏洞评分系统(CVSS)第 5 节定义的四个可能等级之一。
- 低
- 中
- 高
- 危急
GitHub Advisory Database 使用了上述的 CVSS 级别。 如果 GitHub 获取 CVE,则 GitHub Advisory Database 使用维护程序分配的 CVSS 版本,可以是版本 3.1 或 4.0。 如果导入 CVE,则 GitHub Advisory Database 支持 CVSS 版本 4.0、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 分数在第 95 百分位对应的百分比为 90.534%,根据 EPSS 模型,这意味着:
- 在未来 30 天内,该漏洞在实际环境中被利用的概率为 90.534%。
- 在未来 30 天内,总体建模漏洞中有 95% 被认为不如该漏洞可能被利用。
有关如何解释此数据的扩展信息,请参阅 FIRST 的 EPSS 文档中。 这些信息可帮助你理解百分比和百分位数如何结合使用,以根据 FIRST 模型判断漏洞在实际环境中被利用的可能性。 有关详细信息,请参阅 FIRST 网站上的 FIRST 的 EPSS 。
FIRST 还提供有关其 EPSS 数据分布的补充信息。 更多信息,请参阅 FIRST 网站上的 EPSS 数据与统计文档。
注意
GitHub 使用每日同步操作使 EPSS 数据保持最新。 虽然 EPSS 分数百分比会始终完全同步,但分数百分位数仅在存在显著差异时更新。
在此 GitHub,我们不创作此数据,而是从 FIRST 中获取这些数据,这意味着这些数据在社区贡献中不可编辑。 有关社区贡献的更多信息,请参阅 在 GitHub Advisory Database 中编辑安全公告。
社区贡献
社区贡献是提交到 github/advisory-database 存储库的拉取请求,用于改进全球安全公告的内容。 做出社区贡献时,可以编辑或添加任何详细信息,包括其他受影响的生态系统、严重性级别或受影响人员的说明。 GitHub Security Lab 策展团队将审查提交的贡献内容,如果通过审核,则会将其发布到 GitHub Advisory Database。
延伸阅读
- Dependabot 警报
- CVE 程序的“漏洞”定义