github/advisory-database
GitHub: github/advisory-database
GitHub 官方维护的开源软件安全漏洞数据库,提供 CVE 和 GHSA 格式的漏洞信息,支持多包管理生态系统的安全咨询查询。
Stars: 2214 | Forks: 579
## GitHub 咨询数据库
一个包含 CVE 和 GitHub 发起的、影响开源世界的安全咨询的数据库。
该数据库是免费且开源的,是一个由社区创建、为社区服务的工具。
提交 pull request 来帮助我们改进这个面向所有人的软件漏洞信息数据库。
## 目标
* 提供一个免费且开源的安全咨询库。
* 使我们的社区能够众包他们关于这些咨询的知识。
* 以行业接受的格式标准公开漏洞,以实现机器互操作性。
## 功能
所有由 GitHub 确认的咨询都作为单独的文件存储在此仓库中。它们采用[开源漏洞 (OSV) 格式](https://ossf.github.io/osv-schema/)。
您可以向此数据库提交 pull request(参见[贡献](#contributions))来更改或更新每个咨询中的信息。
Pull request 将由我们的内部安全咨询策展团队审核并合并或关闭。如果咨询源自 GitHub 仓库,我们还会 @ 提及原始发布者以获取可选评论。
## 来源
我们从以下来源将咨询添加到 GitHub 咨询数据库:
- [GitHub 上报告的安全咨询](https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/about-repository-security-advisories)
- [国家漏洞数据库](https://nvd.nist.gov/)
- [npm 安全咨询数据库](https://github.com/advisories?query=type%3Areviewed+ecosystem%3Anpm)
- [FriendsOfPHP 数据库](https://github.com/FriendsOfPHP/security-advisories)
- [Go 漏洞数据库](https://vuln.go.dev/)
- [Python 包咨询数据库](https://github.com/pypa/advisory-database)
- [Ruby 咨询数据库](https://rubysec.com/)
- [RustSec 咨询数据库](https://rustsec.org/)
- [社区对此仓库的贡献](https://github.com/github/advisory-database/pulls)
如果您知道我们还应该导入的其他数据库,请通过[在此仓库中开启问题](https://github.com/github/advisory-database/issues)告诉我们。
## 贡献
有两种方式可以为这个仓库中提供的信息做出贡献。
在任何单个咨询页面(位于 [github.com/advisories](https://github.com/advisories))上,点击**为此漏洞提出改进建议**(如下所示)来打开"改进安全咨询"表单。在表单中编辑信息,然后点击**提交改进**来打开一个包含您建议更改的 pull request。

或者,您可以直接针对此仓库中的文件提交 pull request。为此,请遵循[贡献指南](https://github.com/github/advisory-database/blob/main/CONTRIBUTING.md)。
### 参考文献
咨询参考文献旨在为读者提供补充的相关信息。我们的目标是包含 CVE 或 GHSA 作者提供的主要来源参考文献,并在适用时补充相关的代码或文档,同时注重其他参考文献的简洁性和相关性。我们通常不包含咨询的次要来源撰写内容,除非由上游来源提供。
### 修复提交
咨询涉及特定的构建产物,而非整个项目。引用修复特定漏洞的提交对下游读者确定影响很有帮助,如果缺少这些详细信息,我们欢迎贡献添加这些详细信息。如果咨询已包含相关的修复提交,我们不接受重复的贡献,因为添加无关的重复内容会给咨询读者带来不必要的负担。
## 支持的生态系统
很遗憾,我们无法接受针对我们支持范围之外生态系统的社区贡献。我们的策展团队会仔细审核每个社区贡献,需要能够评估每项更改。
一般来说,我们的生态系统是包注册表使用的命名空间,因此它们专注于注册表内的软件包,这些软件包通常是用作软件开发依赖项的软件包。
我们支持的生态系统包括:
- Composer(注册表:https://packagist.org)
- Erlang(注册表:https://hex.pm/)
- GitHub Actions(注册表:https://github.com/marketplace?type=actions)
- Go(注册表:https://pkg.go.dev/)
- 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/)
- RubyGems(注册表:https://rubygems.org/)
- Rust(注册表:https://crates.io/)
- Swift(注册表:[按 dns 命名空间](https://datatracker.ietf.org/doc/html/rfc1035))
如果您有我们应该支持的新生态系统的建议,请开启一个[问题](https://github.com/github/advisory-database/issues)进行讨论。
## 许可证
此项目根据 CC-BY 4.0 开源许可证的条款获得许可。请[查看我们的文档](https://docs.github.com/en/github/site-policy/github-terms-for-additional-products-and-features#12-advisory-database)了解完整条款。
## GHSA ID
每个安全咨询(无论其类型如何)都有一个称为 `GHSA ID` 的唯一标识符。
当在 GitHub 上创建新咨询或从任何受支持的来源将其添加到 GitHub 咨询数据库时,会分配 `GHSA-ID` 限定符。
GHSA ID 的语法遵循以下格式:`GHSA-xxxx-xxxx-xxxx`,其中
* `x` 是来自以下集合的字母或数字:`23456789cfghjmpqrvwx`。
* 在 `GHSA` 部分之外:
* 数字和字母是随机分配的。
* 所有字母都是小写的。
您可以使用正则表达式验证 GHSA ID:
`/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/`
## `database_specific` 值
OSV Schema 支持多个 `database_specific` JSON 对象字段,用于为 OSV schema 的各个部分添加上下文,具体而言是[受影响的软件包](https://ossf.github.io/osv-schema/#affecteddatabase_specific-field)、软件包的[受影响范围](https://ossf.github.io/osv-schema/#affectedrangesdatabase_specific-field)以及[漏洞](https://ossf.github.io/osv-schema/#database_specific-field)整体。根据规范,这些字段用于保存有关软件包、范围或漏洞的附加信息,"由获取记录的数据库定义"。此外,它还规定这些自定义值的含义和格式"完全由记录数据库定义",超出了 OSV Schema 本身的范围。
出于自身目的,GitHub 在其 OSV 文件中使用了多个 `database_specific` 值。它们主要用于支持[社区贡献](#contributions),除非另有说明,否则仅供内部使用。这些值及其格式可能会随时更改,消耗系统不应依赖它们来处理漏洞信息。
| **范围** | **字段** | **用途** |
|---|---|---|
| 漏洞 | `severity` | OSV schema 支持 CVSS 等定量严重性分数。GitHub 此外还为每个漏洞分配非定量的可读严重性值。 |
| 漏洞 | `cwe_ids` | GitHub 在其漏洞策展过程中为每个漏洞分配至少一个常见弱点枚举 (CWE)。这些 ID 直接映射到 [CWE 数据库](https://cwe.mitre.org/)中跟踪的 CWE ID。 |
| 漏洞 | `github_reviewed` | 漏洞是否已由 GitHub 安全策展人审核。 |
| 漏洞 | `github_reviewed_at` | GitHub 安全策展人上次审核的时间戳。 |
| 范围 | `last_known_affected_version_range` | OSV schema 原生不支持 GitHub 内部表示漏洞版本范围的所有潜在方式。它用于跟踪无法以 OSV 格式表示的版本范围信息,或 GitHub 需要与 OSV 范围分开跟踪的信息。此字段可能出现于 OSV 受影响范围事件之外或代替它们。请参阅[此评论](https://github.com/github/advisory-database/issues/470#issuecomment-1998604377)以获取技术解释。 |
## 常见问题
### 谁来审核 pull request?
我们的内部安全咨询策展团队会审核 pull request。他们做出最终合并或关闭的决定。如果咨询源自 GitHub 仓库,我们还会 @ 提及原始发布者以获取可选评论。
### 为什么 PR 的基础分支被更改了?
此仓库是我们咨询数据库的镜像。对此仓库的所有贡献都通过我们的主数据源合并到 main 分支,以保持数据完整性。
我们会自动为每个 PR 创建一个暂存分支,以保留您习惯的 GitHub 工作流程。当从此仓库的 PR 接受贡献时,更改会被合并到暂存分支,然后推送到主数据源,由单独的流程合并到 main,此时暂存分支会被删除。
### 数据库的结构会改变吗?
在 GitHub,我们边发布边学习!随着使用模式的出现,我们可能会迭代这个数据库的组织方式,并可能对其进行向后不兼容的更改。
### 在哪里可以获取有关 GitHub 咨询的更多信息?
创建仓库安全咨询的信息可参见[此处](https://docs.github.com/en/code-security/repository-security-advisories/creating-a-repository-security-advisory),在 GitHub 咨询数据库中浏览安全咨询的信息可参见[此处](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/browsing-security-advisories-in-the-github-advisory-database)。
标签:CVE, Go漏洞数据库, Homebrew安装, npm安全, NVD, OSV格式, Ruby安全, Rust安全, XSS, 众包安全, 可视化界面, 国家漏洞数据库, 威胁情报, 安全公告, 安全合规, 安全咨询, 安全漏洞, 开发者工具, 数字签名, 日志审计, 暗色界面, 机器可读, 漏洞修复, 漏洞情报, 社区贡献, 网络代理, 网络安全培训