Safeguard
Security Guides•

CVE, GHSA and OSV IDs: what is the difference, and which to use?

One flaw can carry several identifiers. Here is what CVE, GHSA and OSV IDs are, how aliases link them and which one to record in your tickets.

Safeguard Security Team
3 min read

One vulnerability can have several identifiers. A CVE is the widely used public name, a GHSA is an ID from the GitHub Advisory Database, and OSV entries carry their own IDs and list the others as aliases. Record the one your tools use, plus every alias, so you can match records across sources.

What each one is

  • CVE. A public identifier for a vulnerability, used across vendors and databases.
  • GHSA. An identifier in the form GHSA followed by three groups of letters and digits, assigned by the GitHub Advisory Database. Reviewed advisories have been checked for validity and carry package and ecosystem details. Unreviewed ones come automatically from the National Vulnerability Database feed and are not checked for completeness.
  • OSV ID. The OSV schema defines a common format. Each entry has an ID from its source database and can list aliases, related IDs and a withdrawn time.

What the OSV fields mean

FieldMeaning
aliasesOther IDs for the same flaw. Two entries are aliases if they affect a component the same way
relatedClosely related vulnerabilities that are not the same flaw
withdrawnWhen the entry should be considered withdrawn. If absent, it has not been
fixed eventThe version that contains the fix

Aliases are symmetric and transitive. Related is symmetric but not transitive, so do not merge related entries into one finding.

Why it matters

  • Deduplication. Two scanners may report the same flaw under different IDs. Aliases let you count it once.
  • Missing CVE. Some open source advisories have no CVE. If you search by CVE only, you miss them.
  • Withdrawn entries. A finding that was withdrawn should not stay open in your backlog.
  • Evidence. Auditors and customers may search by CVE, so keep it in the record when one exists.

What to record in a ticket

  1. The ID your scanner used.
  2. All aliases, with the CVE first when there is one.
  3. Package, ecosystem, installed version and fixed version.
  4. A link to the advisory.
  5. Status of withdrawn, if applicable.

A short example of matching

Suppose scanner A reports a flaw by its GHSA ID and scanner B reports it by CVE. If both records list each other as aliases, you can merge them into one finding with one owner and one due date. If one record lacks the alias, you may open two tickets for the same fix. Normalise on a primary ID in your tracker, and store the aliases in a field so searches by either ID find the same ticket.

Quick check

Is a GHSA the same as a CVE?

Not the same identifier. They often describe the same flaw and link to each other. Advisories sourced from the National Vulnerability Database link to the corresponding CVE record.

What if an advisory has no CVE?

Track it by its GHSA or OSV ID. A missing CVE does not make the flaw less real.

Where Safeguard fits

Safeguard's dependency scanning records findings with their identifiers and fixed versions. You can look at that record in a free scan.

Sources

  • GitHub Docs, About the GitHub Advisory Database (GHSA format, reviewed and unreviewed advisories).
  • OSV schema, ossf.github.io/osv-schema (aliases, related, withdrawn, fixed).

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.