# 关于 GitHub 公告数据库

GitHub Advisory Database 包含已知安全漏洞和恶意软件列表，分为三类：GitHub 审核的通告、未审核的通告和恶意软件通告。

## 关于 GitHub Advisory Database

我们从以下来源向 GitHub Advisory Database 添加公告信息：

* GitHub
  上报告的安全通告
* [国家漏洞数据库](https://nvd.nist.gov/)
* [npm 安全顾问数据库](https://github.com/advisories?query=type%3Areviewed+ecosystem%3Anpm)
* [FriendsOfPHP 数据库](https://github.com/FriendsOfPHP/security-advisories)
* [Go Vulncheck 数据库](https://pkg.go.dev/vuln/)
* [Python Packaging Advisory 数据库](https://github.com/pypa/advisory-database)
* [Ruby Advisory 数据库](https://rubysec.com/)
* [RustSec Advisory 数据库](https://rustsec.org/)
* 社区贡献。 有关详细信息，请参阅 <https://github.com/github/advisory-database/pulls>。

如果你知道我们应该从中导入顾问的另一个数据库，请通过在 <https://github.com/github/advisory-database> 中创建问题来告诉我们。

安全公告以开放源代码漏洞 (OSV) 格式的 JSON 文件形式发布。 有关 OSV 格式的更多信息，请参阅[开源漏洞格式](https://ossf.github.io/osv-schema/)。

## 安全公告的类型

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（注册表：不适用）

如果对我们应该支持的新生态系统有任何建议，请提出[问题](https://github.com/github/advisory-database/issues)以供讨论。

如果你为仓库启用 Dependabot alerts，当 GitHub 审核的通告报告你依赖的包存在漏洞时，你将自动收到通知。 有关详细信息，请参阅“[关于 Dependabot 警报](/zh/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)”。

### 未审核的公告

**未经查看** 的公告会自动 GitHub Advisory Database发布到国家漏洞数据库源中。

Dependabot 不会为未审核的公告创建 Dependabot alerts，因为不会检查此类公告的有效性或完成情况。

### 恶意软件通告

**恶意软件** 公告与恶意软件造成的漏洞有关，并且是 **npm** 生态系统的独占。 我们根据 npm 安全团队提供的信息，自动将其发布到GitHub Advisory Database中。

Dependabot 在检测到恶意软件时不会生成警报，因为大多数漏洞无法由下游用户解决。 你可以通过在 GitHub Advisory Database 中搜索 `type:malware` 来查看恶意软件通告。

我们的恶意软件通告主要涉及替换攻击。 在此类攻击中，攻击者向公共注册表发布与用户依赖的第三方或私有注册表依赖包同名的包，试图让恶意版本被使用。 Dependabot 不会检查项目配置以确定包是否来自私有注册表，因此无法确定你使用的是恶意版本还是非恶意版本。 正确作用域化依赖项的用户不应受到恶意软件影响。

## 安全公告中的信息

在本节中，你可以找到 GitHub Advisory Database 特定数据属性的详细信息。

### GHSA ID

每个安全公告（无论其类型如何）都有一个称为 GHSA ID 的唯一标识符。 当在 GitHub 上创建新通告或从任何支持的来源添加到 GitHub Advisory Database 时，会分配一个 `GHSA-ID` 限定符。

GHSA ID 的语法遵循以下格式：`GHSA-xxxx-xxxx-xxxx`，其中：

* `x` 是以下集合中的字母或数字：`23456789cfghjmpqrvwx`。
* 名称的 `GHSA` 部分外：
  * 数字和字母是随机分配的。
  * 所有字母是小写的。

可以使用正则表达式验证 GHSA ID。

```bash copy
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
```

### CVSS 级别

GitHub Advisory Database 支持 CVSS 3.1 和 CVSS 4.0 版本。

每条安全通告包含漏洞或恶意软件的信息，可能包括描述、严重性、受影响的包、包生态、受影响版本和修复版本、影响，以及可选信息，如参考资料、解决方法和致谢。 此外，国家漏洞数据库列表中的公告包含 CVE 记录链接，通过链接可以查看漏洞、其 CVSS 得分及其质化严重等级的更多详细信息。 更多信息，请参阅美国国家标准与技术研究院（NIST）的[国家漏洞数据库](https://nvd.nist.gov/)。

严重性等级为[通用漏洞评分系统（CVSS）第 5 节](https://www.first.org/cvss/specification-document)定义的四个可能等级之一。

* Low
* 中
* High
* 危急

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](https://securitylab.github.com/)，以浏览与安全相关的主题，并为安全工具和项目做出贡献。

### EPSS 分数

漏洞利用预测评分系统（EPSS）由全球事件响应与安全团队论坛（FIRST）制定，用于量化漏洞被利用的可能性。 该模型生成介于 0 和 1（0% 到 100%）之间的概率分数，分数越高，漏洞在实际环境中被利用的可能性越大。 有关 FIRST 的更多信息，请参阅 <https://www.first.org/。>

GitHub Advisory Database 包含 FIRST 提供的 EPSS 分数，适用于包含 CVE 且具有对应 EPSS 数据的通告。 GitHub 还显示 EPSS 分数百分位数，即所有评分漏洞中 EPSS 分数相同或更低的比例。

例如，如果一条通告的 EPSS 分数在第 95 百分位对应的百分比为 90.534%，根据 [EPSS 模型](https://www.first.org/epss/model)，这意味着：

* 在未来 30 天内，该漏洞在实际环境中被利用的概率为 90.534%。
* 在未来 30 天内，总体建模漏洞中有 95% 被认为不如该漏洞可能被利用。

有关如何解读这些数据的扩展信息，请参阅 FIRST 的 EPSS 用户指南。 这些信息可帮助你理解百分比和百分位数如何结合使用，以根据 FIRST 模型判断漏洞在实际环境中被利用的可能性。 更多信息，请参阅 FIRST 网站上的 [FIRST EPSS 用户指南](https://www.first.org/epss/user-guide)。

FIRST 还提供有关其 EPSS 数据分布的补充信息。 更多信息，请参阅 FIRST 网站上的 [EPSS 数据与统计文档](https://www.first.org/epss/data_stats)。

> \[!NOTE] GitHub 通过每日同步操作保持 EPSS 数据最新。 虽然 EPSS 分数百分比会始终完全同步，但分数百分位数仅在存在显著差异时更新。

在 GitHub，我们不对这些数据进行原创，而是从 FIRST 获取，这意味着这些数据无法通过社区贡献进行编辑。 有关社区贡献的更多信息，请参阅 [在 GitHub Advisory Database 中编辑安全公告](/zh/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/editing-security-advisories-in-the-github-advisory-database)。

## 社区贡献

**社区贡献**是提交到 [github/advisory-database](https://github.com/github/advisory-database?ref_product=security-advisories\&ref_type=engagement\&ref_style=text) 存储库的拉取请求，用于改进全球安全公告的内容。 做出社区贡献时，可以编辑或添加任何详细信息，包括其他受影响的生态系统、严重性级别或受影响人员的说明。 GitHub Security Lab 策展团队将评审提交的贡献，并在接受后将其发布到 GitHub Advisory Database。

如果我们接受并发布社区贡献，则提交社区贡献拉取请求的人员将自动被授予“分析师”信用类型。 有关详细信息，请参阅“[创建存储库安全公告](/zh/code-security/security-advisories/working-with-repository-security-advisories/creating-a-repository-security-advisory#about-credits-for-repository-security-advisories)”。

## 延伸阅读

* [关于 Dependabot 警报](/zh/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)
* CVE 程序的[“漏洞”定义](https://www.cve.org/ResourcesSupport/Glossary#glossaryVulnerability)