About the 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 中创建问题来告诉我们。
Security advisories are published as JSON files in the Open Source Vulnerability (OSV) format. For more information about the OSV format, see Open Source Vulnerability format.
Types of security advisories
Each advisory in the GitHub Advisory Database is for a vulnerability in open source projects or for malicious open source software.
漏洞是项目代码中的问题,可能被利用来损害机密性、完整性或者该项目或其他使用其代码的项目的可用性。 漏洞的类型、严重性和攻击方法各不相同。 Vulnerabilities in code are usually introduced by accident and fixed soon after they are discovered. You should update your code to use the fixed version of the dependency as soon as it is available.
In contrast, malicious software, or malware, is code that is intentionally designed to perform unwanted or harmful functions. The malware may target hardware, software, confidential data, or users of any application that uses the malware. You need to remove the malware from your project and find an alternative, more secure replacement for the dependency.
GitHub-reviewed advisories
** GitHub-审核** 建议与我们支持的生态系统中的包进行映射。 我们仔细查看每个公告的有效性,并确保它们包含完整的说明以及生态系统和包信息。
Generally, we name our supported ecosystems after the software programming language's associated package registry. We review advisories if they are for a vulnerability in a package that comes from a supported registry.
- Composer (registry: https://packagist.org/)
- Erlang (registry: https://hex.pm/)
- Go (registry: https://pkg.go.dev/)
- GitHub Actions (https://github.com/marketplace?type=actions/)
- Maven (registry: https://repo.maven.apache.org/maven2)
- Npm (registry: https://www.npmjs.com/)
- NuGet (registry: https://www.nuget.org/)
- Pip (registry: https://pypi.org/)
- Pub (registry: https://pub.dev/packages/registry)
- RubyGems (registry: https://rubygems.org/)
- Rust (registry: https://crates.io/)
- Swift (registry: N/A)
If you have a suggestion for a new ecosystem we should support, please open an issue for discussion.
If you enable Dependabot alerts for your repositories, you are automatically notified when a new GitHub-reviewed advisory reports a vulnerability for a package you depend on. For more information, see Dependabot alerts.
Unreviewed advisories
未经查看 的公告会自动 GitHub Advisory Database发布到国家漏洞数据库源中。
Dependabot doesn't create Dependabot alerts for unreviewed advisories as this type of advisory isn't checked for validity or completion.
Malware advisories
恶意软件 公告与恶意软件造成的漏洞有关,并且是 npm 生态系统的独占。 我们根据 npm 安全团队提供的信息,自动将其发布到GitHub Advisory Database中。
Dependabot doesn't generate alerts when malware is detected as most of the vulnerabilities cannot be resolved by downstream users. You can view malware advisories by searching for type:malware in the GitHub Advisory Database.
Our malware advisories are mostly about substitution attacks. During this type of attack, an attacker publishes a package to the public registry with the same name as a dependency that users rely on from a third party or private registry, with the hope that the malicious version is consumed. Dependabot doesn’t look at project configurations to determine if the packages are coming from a private registry, so we aren't sure if you're using the malicious version or a non-malicious version. Users who have their dependencies appropriately scoped should not be affected by malware.
Information in security advisories
In this section, you can find more detailed information about specific data attributes of the GitHub Advisory Database.
GHSA IDs
Each security advisory, regardless of its type, has a unique identifier referred to as a GHSA ID. A GHSA-ID qualifier is assigned when a new advisory is created on GitHub or added to the GitHub Advisory Database from any of the supported sources.
The syntax of GHSA IDs follows this format: GHSA-xxxx-xxxx-xxxx where:
xis a letter or a number from the following set:23456789cfghjmpqrvwx.- Outside the
GHSAportion of the name:- The numbers and letters are randomly assigned.
- All letters are lowercase.
You can validate a GHSA ID using a regular expression.
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
CVSS levels
The GitHub Advisory Database supports both CVSS version 3.1 and CVSS version 4.0.
Each security advisory contains information about the vulnerability or malware, which may include the description, severity, affected package, package ecosystem, affected versions and patched versions, impact, and optional information such as references, workarounds, and credits. In addition, advisories from the National Vulnerability Database list contain a link to the CVE record, where you can read more details about the vulnerability, its CVSS scores, and its qualitative severity level. For more information, see the National Vulnerability Database from the National Institute of Standards and Technology.
The severity level is one of four possible levels defined in the Common Vulnerability Scoring System (CVSS), Section 5.
- Low
- Medium/Moderate
- High
- Critical
The GitHub Advisory Database uses the CVSS levels described above. If GitHub obtains a CVE, the GitHub Advisory Database uses the CVSS version assigned by the maintainer, which can be version 3.1 or 4.0. If the CVE is imported, the GitHub Advisory Database supports CVSS versions 4.0, 3.1 and 3.0.
还可加入 GitHub Security Lab,以浏览与安全相关的主题,并为安全工具和项目做出贡献。
EPSS scores
The Exploit Prediction Scoring System, or EPSS, is a system devised by the global Forum of Incident Response and Security Teams (FIRST) for quantifying the likelihood of vulnerability exploit. The model produces a probability score between 0 and 1 (0 and 100%), where the higher the score, the greater the probability that a vulnerability will be exploited. For more information about FIRST, see https://www.first.org/.
The GitHub Advisory Database includes EPSS scores from FIRST for advisories containing CVEs with corresponding EPSS data. GitHub also displays the EPSS score percentile, which is the proportion of all scored vulnerabilities with the same or a lower EPSS score.
For example, if an advisory had an EPSS score that had a percentage of 90.534% at the 95th percentile, according to the EPSS model, this means that:
- There is a 90.534% chance of this vulnerability being exploited in the wild in the next 30 days.
- 95% of the total modeled vulnerabilities are considered less likely to be exploited in the next 30 days than this vulnerability.
Extended information about how to interpret this data can be found in FIRST's EPSS User Guide. This information helps you understand how both percentage and percentile can be used to interpret the likelihood that a vulnerability could be exploited in the wild according to FIRST's model. For more information, see the FIRST's EPSS User Guide on the FIRST website.
FIRST also provides additional information around the distribution of their EPSS data. For more information, see EPSS data and statistics documentation on the FIRST website.
注意
GitHub keeps EPSS data up to date with a daily synchronization action. While EPSS score percentages will always be fully synchronized, score percentiles will only be updated when significantly different.
At GitHub, we do not author this data, but rather source it from FIRST, which means that this data is not editable in community contributions. For more information about community contributions, see Editing security advisories in the GitHub Advisory Database.
Community contributions
A community contribution is a pull request submitted to the github/advisory-database repository that improves the content of a global security advisory. When you make a community contribution, you can edit or add any detail, including additional affected ecosystems, the severity level, or the description of who is impacted. The GitHub Security Lab curation team will review the submitted contributions and publish them onto the GitHub Advisory Database if accepted.
If we accept and publish the community contribution, the person who submitted the community contribution pull request will automatically be assigned a credit type of "Analyst". For more information, see Creating a repository security advisory.
Further reading
- Dependabot alerts
- The CVE Program's definition of "vulnerability"