The GitHub Blog 前天 00:03
GitHub Advisory Database by the numbers: Known security vulnerabilities and what you can do about them
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入分析了GitHub顾问数据库在2024年的发展趋势,该数据库为开发者提供了全面的开源软件包安全漏洞和恶意软件信息。文章重点介绍了已审核顾问数量的增长、生态系统覆盖范围的扩大以及来源贡献的变化。通过GitHub提供的实用数据,开发者可以更好地保护其软件项目,维护代码安全。

🛡️ GitHub顾问数据库包含已知的安全漏洞和恶意软件信息,分为GitHub审核、未审核和恶意软件三类。已审核顾问经过人工审查,并详细描述了漏洞信息,而未审核顾问则自动从国家漏洞数据库(NVD)导入,部分由GitHub分析师审核,主要涉及未支持的软件包或无效漏洞。

📈 数据库中的已审核顾问数量持续增长,在过去五年中,已审核顾问数量从最初的不到400个增加到2024年10月的超过20,000个。这种增长得益于来自多种来源的顾问数量增加、生态系统覆盖范围的扩大,以及对早期发布的顾问进行的审查。

🌐 GitHub支持多个生态系统,包括pip、Maven、Composer、npm等,其中Maven和Composer软件包的漏洞数量占据数据库顾问的近一半。NPM、pip和Go也占据较大份额,而其他生态系统的占比相对较小。GitHub持续扩展对新生态系统的支持,以提供更全面的安全保障。

💡 GitHub作为CVE编号机构(CNA),为GitHub上的所有代码库分配CVE ID。2024年,GitHub发布了超过2,000条CVE记录,成为CVE项目中第五大CNA。为了帮助用户优先处理漏洞,GitHub在顾问信息中提供了严重性评级、CVSS评分、CWE标识符和EPSS评分等,方便用户进行风险评估和漏洞修复。

The GitHub Advisory Database (Advisory DB) is a vital resource for developers, providing a comprehensive list of known security vulnerabilities and malware affecting open source packages. This post analyzes trends in the Advisory DB, highlighting the growth in reviewed advisories, ecosystem coverage, and source contributions in 2024. We’ll delve into how GitHub provides actionable data to secure software projects.

Advisories

The GitHub Advisory Database contains a list of known security vulnerabilities and malware, grouped in three categories: 

Reviewed advisories

GitHub-reviewed advisories are security vulnerabilities that have been mapped to packages in ecosystems we support. We carefully review each advisory for validity and ensure that they have a full description, and contain both ecosystem and package information.

Every year, GitHub increases the number of advisories we publish. We have been able to do this due to the increase in advisories coming from our sources (see Sources section below), expanding our ecosystem coverage (also described below), and review campaigns of advisories published before we started the database. 

In the past five years, the database has gone from fewer than 400 reviewed advisories to over 20,000 reviewed advisories in October of 2024.

Unreviewed advisories

Unreviewed advisories are security vulnerabilities that we publish automatically into the GitHub Advisory Database directly from the National Vulnerability Database feed. The name is a bit of a misnomer as many of these advisories have actually been reviewed by a GitHub analyst. The reason why they fall into this category is because they are not found in a package in one of the supported ecosystems or are not discussing a valid vulnerability, and all have been reviewed by analysts other than someone from the GitHub Security Lab. Even though most of these advisories will never turn into a reviewed advisory, we still publish them so that you do not have to look in multiple databases at once.

Malware

Malware advisories relate to vulnerabilities caused by malware, and are security advisories that GitHub publishes automatically into the GitHub Advisory Database directly from information provided by the npm security team. Malware advisories are currently exclusive to the npm ecosystem. GitHub doesn’t edit or accept community contributions on these advisories.

Ecosystem coverage

GitHub-reviewed advisories include security vulnerabilities that have been mapped to packages in ecosystems we support. 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.

EcosystemTotal advisoriesVulnerable packagesFirst added
pip (registry: https://pypi.org/)337810442019-04-19
Maven (registry: https://repo.maven.apache.org/maven2)51719552019-04-22
Composer (registry: https://packagist.org/)42388122019-04-26
npm (registry: https://www.npmjs.com/)365326522019-04-26
RubyGems (registry: https://rubygems.org/)8403712019-04-26
NuGet (registry: https://www.nuget.org/)6514892019-04-26
Go (registry: https://pkg.go.dev/)20118652021-04-01
Rust (registry: https://crates.io/)8575532021-05-25
Erlang (registry: https://hex.pm/)31262022-01-27
GitHub Actions (https://github.com/marketplace?type=actions/)21212022-07-29
Pub (registry: https://pub.dev/packages/registry)1092022-08-04
Swift (registry: N/A)33212023-05-10

Vulnerabilities in Maven and Composer packages are nearly half of the advisories in the database. npm, pip, and Go make up much of the rest, while the other ecosystems have a much smaller footprint.

This has not always been the case. When the database was initially launched, NPM advisories dominated the database, but as we have expanded our coverage and added support for new ecosystems, the distribution mix has changed.

Sources: Where do the advisories come from?

We add advisories to the GitHub Advisory Database from the following sources:

SourceAdvisoriesReviewed advisoriesSole sourceCoverage
NVD2674291829574506.84%
GitHub Repository Advisories12247531156443.37%
Community Contributions451241601092.20%
PyPA Advisories304027391490.10%
Go Vulncheck15811528796.65%
NPM Advisories1411140862999.79%
FriendsOfPHP1406139640099.29%
RustSec94384917190.03%
RubySec873861498.63%

If you add up the number of reviewed advisories from each source, you will find that total is more than the total reviewed advisories. This is because each source can publish an advisory for the same vulnerability. In fact, over half of our advisories have more than one source.

Of the advisories with a single source, nearly all of them come from NVD/CVE. This justifies NVD/CVE as a source, even though it is by far the noisiest.

2024 saw a significant increase (39%) in the number of advisories imported from our sources. This is for the most part caused by an increase in the number of CVE records published.

CVE Numbering Authority

In addition to publishing advisories in the GitHub Advisory Database, we are also a CVE Numbering Authority (CNA) for any repository on GitHub. This means that we issue CVE IDs for vulnerabilities reported to us by maintainers, and we publish the vulnerabilities to the CVE database once the corresponding repository advisory is published.

GitHub published over 2,000 CVE records in 2024, making us the fifth-largest CNA in the CVE Program.

The GitHub CNA is open to all repositories on GitHub, not just ones in a supported ecosystem.

Advisory prioritization

Given the constant deluge of reported vulnerabilities, you’ll want tools that can help you prioritize your remediation efforts. To that end, GitHub provides additional data in the advisory to allow readers to prioritize their vulnerabilities. In particular, there are:

GitHub adds a severity rating to every advisory. The severity level is one of four possible levels defined in the Common Vulnerability Scoring System (CVSS), Section 5.

Using these ratings, half of all vulnerabilities (15% are Critical and 35% are High) warrant immediate or near-term attention. By focusing remediation efforts on these, you can significantly reduce risk exposure while managing workload more efficiently.

The CVSS specification says the base score we provide, “reflects the severity of a vulnerability according to its intrinsic characteristics which are constant over time and assumes the reasonable worst-case impact across different deployed environments.” However, the worst-case scenario for your deployment may not be the same as CVSS’s. After all, a crash in a word processor is not as severe as a crash in a server. In order to give more context to your prioritization, GitHub allows you to filter alerts based on the type of vulnerability or weakness using CWE identifiers. So you have the capability to never see another regular expression denial of service (CWE-1333) vulnerability again or always see SQL injection (CWE-89) vulnerabilities.

RankCWE IDCWE nameNumber of advisories in 2024Change in rank from 2023
1CWE-79Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)936+0
2CWE-200Exposure of Sensitive Information to an Unauthorized Actor320+0
3CWE-22Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)259+2
4CWE-20Improper Input Validation202+0
5CWE-94Improper Control of Generation of Code (‘Code Injection’)188+2
6CWE-89Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)181+3
7CWE-352Cross-Site Request Forgery (CSRF)161-4
8CWE-284Improper Access Control153+4
9CWE-400Uncontrolled Resource Consumption149-3
10CWE-287Improper Authentication124+11

Still drowning in vulnerabilities? Try using EPSS to focus on vulnerabilities likely to be attacked in the next 30 days. EPSS uses data from a variety of sources to create a probability of whether exploitation attempts will be seen in the next 30 days for a given vulnerability. As you can see from the chart below, if you focus on vulnerabilities with EPSS scores of 10% or higher (approx. 7% of all vulnerabilities in the Advisory DB), you can cover nearly all of the vulnerabilities that are likely to see exploit activity.

EPSS probabilityVulnerabilities in rangePercentage of overall vulnerabilitiesExpected vulnerabilities in range attacked within the next 30 daysPercentage of total attacked vulnerabilities
High ( >= 10%)14407.17%74185.96%
Moderate ( >= 1%, < 10%)268713.37%849.74%
Low ( >= 0.1%, < 1%)1026451.09%354.06%
Very Low ( < 0.1%)570128.37%20.23%

Important caveats to remember when using EPSS:

For more details on how to use CVSS and EPSS for prioritization, see our blog on prioritizing Dependabot alerts.

Actionable data

The GitHub Advisory DB isn’t just a repository of vulnerabilities. It powers tools that help developers secure their projects. Services like Dependabot use the Advisory DB to:

Take this with you

The GitHub Advisory Database is a powerful resource for tracking open source software vulnerabilities, with over 22,000 reviewed advisories to date. By focusing on popular package registries, GitHub allows you to definitively connect vulnerabilities to the packages you are using. Additional data such as CVSS and EPSS scores help you properly prioritize your mitigation efforts.

GitHub’s role as a CVE Numbering Authority extends beyond the Advisory Database, ensuring that thousands of vulnerabilities each year reach the broader CVE community. Want to ensure your vulnerability fix reaches your users? Create a GitHub security advisory in your repository to take advantage of both the GitHub Advisory Database and GitHub’s CNA services.

Want to dive deeper? Explore security blog posts >

The post GitHub Advisory Database by the numbers: Known security vulnerabilities and what you can do about them appeared first on The GitHub Blog.

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

GitHub 安全漏洞 开源软件 CVE
相关文章