Email me

Explainer · 5 min read

Filed under Coding agents AI agents

What is a GitHub security advisory, and how is a GHSA different from a CVE?

Short answer

A GitHub security advisory (GHSA) is a record in the GitHub Advisory Database that says which open source package has a vulnerability, which versions are affected and which version fixes it. Its id looks like GHSA-3ppc-4f35-3m26. A CVE id names the same bug in the global CVE list, so most serious advisories carry both.

Card: What is a GitHub security advisory? GHSA-3ppc-4f35-3m26 equals CVE-2026-26996, one minimatch ReDoS. Of the last 100 reviewed advisories, 77 also have a CVE; pip 55, npm 22, go 8. The last 100 malware advisories took 2.2 days, 89 npm, 0 CVEs.
One bug, two names. Counts from the GitHub advisories API, pulled Oct 27 2026. Card by Tensorust from api.github.com/advisories, Oct 27 2026.

Part of the article OpenClaw got 591 advisories. 1 in 4 top npm installs is the real hole. This page answers one question from it in depth.

On this page · 8 sections
  1. Key numbers
  2. How to read a GHSA
  3. The three kinds of advisory
  4. GHSA vs CVE vs OSV, side by side
  5. Common misconceptions
  6. What to do now
  7. FAQ
  8. Sources

TL;DR: We pulled the newest 100 advisories of each type from GitHub's public API on Oct 27 2026. The last 100 reviewed advisories were published in just over 4 days, 77 of them also had a CVE id, and 55 were Python (pip) packages against 22 for npm. The last 100 malware advisories took only 2.2 days, 89 were npm, and none had a CVE.

The CVE system was built for vendors shipping boxed software. Open source moves faster than that, and the GHSA exists because the package world needed its own catalog, mapped to exact package names and version ranges a machine can act on. That mapping is the whole point: it is what lets Dependabot, npm audit and the checker in our OSV guide say "you are affected, upgrade to 10.2.1" instead of "something somewhere is broken."

Key numbers

What Number Source (checked Oct 27 2026)
Example pair GHSA-3ppc-4f35-3m26 = CVE-2026-26996 (minimatch ReDoS) GitHub advisory
GHSA to NVD gap, same example 28.6 hours (Feb 18 22:38 UTC vs Feb 20 03:16 UTC) GitHub REST API
Latest 100 reviewed advisories that also have a CVE 77 Tensorust pull of api.github.com/advisories
Same 100, by ecosystem pip 55, npm 22, go 8, composer 7, rust 4, maven 4 Tensorust pull
Same 100, by severity high 49, medium 33, low 13, critical 5 Tensorust pull
Latest 100 malware advisories 2.2 days, 89 npm, 11 pip, 0 CVEs Tensorust pull

How to read a GHSA

Take the minimatch advisory from our ReDoS explainer. The API returns these fields in plain JSON:

  • ghsa_id: GHSA-3ppc-4f35-3m26. Three blocks of four letters and digits, no year, no ordering.
  • cve_id: CVE-2026-26996. The same bug in the CVE list.
  • vulnerabilities: package minimatch on npm, vulnerable range >= 10.0.0, < 10.2.1, first patched version 10.2.1. This is the part that makes it actionable.
  • severity: high. cwes: CWE-1333, Inefficient Regular Expression Complexity.
  • github_reviewed_at and nvd_published_at: when GitHub's team signed off, and when the US National Vulnerability Database caught up, 28.6 hours later.

If you only remember one field, make it the version range. "Upgrade past 10.2.1" is a move you can make in one command.

The three kinds of advisory

GitHub sorts the database into three types, and they behave very differently:

  1. Reviewed. Checked by GitHub's curators and mapped to a package and version range. These are the ones Dependabot alerts on. Our sample: 100 in about 4 days.
  2. Unreviewed. Imported automatically from the NVD feed with no package mapping. All of the latest 100 had a CVE id and no ecosystem, and they landed in one 19-second batch. They do not trigger Dependabot.
  3. Malware. Packages published to steal or damage, mostly typosquats on npm. All 100 in our pull were rated critical, and none had a CVE. If your scanner only reads CVEs, it misses this whole column.

Bar chart: of the latest 100 advisories of each type, 77 reviewed ones carry a CVE id, 100 unreviewed, 0 malware. Pulled from api.github.com/advisories with type=reviewed, unreviewed and malware, Oct 27 2026.

GHSA vs CVE vs OSV, side by side

CVE GHSA OSV
Who assigns it MITRE and the CVE Numbering Authorities (GitHub is one) GitHub A schema plus a database that aggregates others
What it covers Any software Open source packages GitHub tracks, plus malware Open source, from GitHub, PyPA, RustSec, Go and more
Machine-readable version ranges Not reliably Yes Yes, it is the core of the format
Free API NVD API (rate limited) GitHub REST and GraphQL OSV.dev, no key

OSV is where these meet. It imports GHSAs and lists the CVE as an alias, so one query by package and version gets you all of them. That is what our OSV guide does, and for Rust, cargo audit reads the RustSec database, which also flows into OSV.

Horizontal bars: last 100 reviewed advisories by ecosystem. pip 55, npm 22, go 8, composer 7, rust 4, maven 4. Python dominated this particular 4-day window; the mix shifts week to week. Same API pull.

Common misconceptions

Myth

"No CVE means no real vulnerability."

The recordEvery malware advisory in our sample had no CVE, and every one was rated critical. The CVE list is one catalog, not the whole map.

Myth

"Unreviewed advisories show up in Dependabot."

The recordNot until GitHub reviews them and maps them to a package. An unreviewed CVE for a library you use can sit there silently.

Myth

"A GHSA means the maintainer did something wrong."

The recordMany reviewed advisories start as a repository security advisory the maintainer opened themselves. A project with advisories is often a project that fixes things in public.

What to do now

Turn on Dependabot alerts for every repo (Settings, then Code security), and run one OSV query against your lockfile with the steps in our guide. For the bigger picture on how many npm downloads still sit on vulnerable versions, read our npm advisories breakdown. If you want the Rust crates you depend on re-checked every time a new advisory lands, that is the job Crate Portfolio does.

FAQ

What is a GitHub security advisory?

It is a record in the GitHub Advisory Database describing a vulnerability or malware in an open source package: the package, the affected version range, the first patched version, severity, CWE weakness ids and references. Each one gets an id like GHSA-3ppc-4f35-3m26.

What is the difference between a GHSA and a CVE?

A CVE id is assigned by MITRE or a CVE Numbering Authority and covers any software. A GHSA id is assigned by GitHub and covers packages in the ecosystems GitHub tracks. Many advisories have both: GHSA-3ppc-4f35-3m26 is the same minimatch bug as CVE-2026-26996. Malware advisories usually have no CVE at all.

What does reviewed vs unreviewed mean in the GitHub Advisory Database?

Reviewed advisories have been checked by GitHub's curation team and mapped to a package and version range, so Dependabot can alert on them. Unreviewed advisories are imported automatically from the National Vulnerability Database without a package mapping, so they do not trigger Dependabot alerts.

Is GitHub a CVE Numbering Authority?

Yes. GitHub is a CNA, so when a maintainer publishes a repository security advisory, GitHub can request a CVE id for it. That is why many GHSAs and CVEs appear within a day or two of each other.

How do I check if my project is affected by a GHSA?

Enable Dependabot alerts on GitHub, run npm audit or cargo audit locally, or query the free OSV.dev API with your package and version. OSV imports GitHub's advisories, so a GHSA id shows up there as the id or as an alias.

Sources

All checked October 27, 2026.

Next question

Every number on this page links to its source and was checked on Oct 27, 2026. Spot an error or a newer figure? Email matt@tensorust.com and it gets fixed.

Read next

Back to The Manual →   All articles →

Get the next one by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Up next

The article this answer comes fromOpenClaw got 591 advisories. 1 in 4 top npm installs is the real holeOpen-source advisories tripled in 2026 and AI tools are 15.5% of them. OpenClaw has 591, but 24.7% of top npm installs carry a fixed high-severity hole.Read it next →

Art: Nicholas Roerich, Depsang Plains (1925-26). Public domain, via Wikimedia Commons.

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Did this answer your question?

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ

Disagree, or have a number to add? Discuss this on The Floor →

What are people saying about this? Read and post on The Floor →