• CramHacks
  • Posts
  • Beyond the CVE: Analyzing the Depth of GitHub Security Advisories

Beyond the CVE: Analyzing the Depth of GitHub Security Advisories

Understanding the GitHub Security Advisory Database: A Must-Know for Open-Source Developers and Consumers

Table of Contents

Understanding the GitHub Security Advisory Database

Are you familiar with the GitHub Security Advisory Database? It’s a must-know tool for anyone who cares about open-source software vulnerabilities. In my opinion, it is crucial for two reasons:

  1. There are over 250,000 CVEs, but only a tiny fraction impact open-source software. There is no easy way to filter the CVE database for those impacting open-source software.

  2. Many open-source project maintainers prefer the control and simplicity of GitHub security advisories over the CVE submission process. >2,000 GitHub Security Advisories have no corresponding CVE.

Note: GitHub is an authorized CVE Numbering Authority (CNA). Therefore, GitHub can assign a CVE to security advisories under their scope.

Project Overview and Ecosystem Support

The open-source project is described as a “Security vulnerability database inclusive of CVEs and GitHub originated security advisories from the world of open source software.”

Currently, as per the project’s GitHub repository, the database ingests security advisories from various sources and supports the following ecosystems:

Ecosystem

GitHub Reviewed Advisories

# of Unique Packages
(estimates)

Composer (Packagist)

3,958

400,000

Erlang (Hex)

29

160,000

GitHub Actions

16

10,000

Go

1,745

1,000,000

Maven

4,971

600,000

npm

3,507

2,500,000

NuGet

609

400,000

pip (PyPi)

3,066

550,000

Pub

10

42,000

RubyGems

832

180,000

Rust (Cargo)

780

135,000

Swift

34

7,000

Total

19,327

~6,000,000

The above were counts reported by GitHub. However, adding up the number of advisories per ecosystem gives 19,557 🤔. By parsing the repository, I got a total count of 19,316.

Note: Packages often have numerous releases/versions. PyPi reports 550,000 unique packages but almost 6,000,000 releases. If we apply this ratio (10 releases per unique package), we’re talking ~60,000,000 total packages for these supported ecosystems.

Evaluating Security Advisory Coverage

How do you feel about <20,000 security advisories for ~60,000,000 total packages?

Additionally, are these numbers signs that specific ecosystems are deprived of security? Also, should these figures be considered when determining ROI for security scanning solutions?

Everyone seems to agree that open-source software vulnerabilities are essential. However, if you’re primarily writing Dart/Flutter code, is it worth deploying a tool to identify the ten known vulnerabilities?

🌶️ Truthfully, these numbers alone have made me disagree strongly with the belief that open-source software is more secure.

The Necessity of Manual Review

This project is undeniably a gift to the open-source community, and I’m grateful for all of GitHub’s efforts. But it’s not a silver bullet. Specifically, advisories require manual intervention to become “approved” security advisories, and currently, there are >220,000 unreviewed advisories in the queue, and god knows how many more aren’t.

This also means security advisories tend to stop, or at least slow down, around certain times of the year for holidays. And there isn’t a transparent distribution of efforts across the ecosystems. Depending on the week, you may see more Maven advisories versus NPM or vice versa.

Speed of CVE Reviews

The following graph shows that GitHub is reasonably quick. As shown, GitHub is up to par with NIST’s NVD; for some, they are even faster!

Similarly, in 2023, we see similar results, but with almost 3,000 data points.

Which Ecosystems Receive the Most Attention?

I don’t know why specific ecosystems get more love than others, and I don’t want to speculate. If I were in their shoes, I’d likely consider the (GitHub Advanced Security) paying customers despite being an open-source project.

What sparked this blog post idea was recognizing how many new composer (Packagist / PHP) advisories were being reviewed. Looking at the graph for 2024, it appears my observation was correct.

However, compared to 2023, the spread looks fairly identical, besides fewer reviewed Maven advisories in 2024. Comparing 2023 and 2022, they look even more similar.

Conclusion & Google’s osv.dev

Overall, this analysis supports my belief that the GitHub Security Advisory Database is an invaluable source of vulnerability data for open-source projects.

However, the database sadly does not include malicious advisories identifying known malicious projects. GitHub maintains this data, which is queriable via the web interface, revealing over 10,000 known malicious projects.

Fortunately, Google has an open-source vulnerability database (osv.dev), which ingests GitHub Security Advisory data, including malware advisories and additional sources not supported by the GitHub Security Advisory project.

The best part is that Google has this database available for free download and keeps it continuously up-to-date.

Therefore, if I had to pick one source for my vulnerability data, I would go with osv.dev. But I’d be naive to compare the two. The quality of osv.dev advisories largely relies on the work done by its sources, such as the GitHub Security Advisory project.

Until Next Time! 👋 

Hey, you made it to the bottom – thanks for sticking around!

Questions, ideas, or want to chat? Slide into my inbox! 💌

Don’t hesitate to forward if someone could benefit from this.

See you next Monday!
-Kyle

P.S. CramHacks now has a Supporter tier! You can upgrade here to support CramHacks and its free weekly content 😃.