Safeguard
Security Guides•

How do you read a GitHub security advisory, field by field?

A field by field guide to a GitHub advisory: ID format, severity, affected and patched versions, CVSS and EPSS, and what to check before you act.

Safeguard Security Team
3 min read

Read a GitHub advisory in this order: the affected package and ecosystem, the affected and patched versions, the impact description, then severity and exploitation scores. Compare the affected range with the version you actually run, and check for workarounds if no patched version exists.

The fields you will see

GitHub's documentation lists what an advisory shows.

FieldWhat it tells you
Description and severityWhat is wrong and how serious it is rated
Package and ecosystemWhere the flaw lives, for example npm or PyPI
Affected and patched versionsWhich versions are vulnerable and which fix it
ImpactWhat an attacker can do
References, workarounds, creditsOptional links, mitigations and who found it
CVE linkPresent when the advisory comes from NVD data
CVSSScores in versions 3.1 and 4.0
EPSSExploitation probability and percentile, when data exists

Severity levels are Low, Medium, High and Critical.

The GHSA identifier

Every advisory gets a GHSA ID in the format GHSA followed by three groups of four characters. The characters come from a restricted set of lowercase letters and digits, which GitHub documents with a validation pattern. A GHSA ID is assigned whether the advisory was created on GitHub or imported, so the same flaw can carry a GHSA ID and a CVE ID.

Reviewed, unreviewed and malware

GitHub-reviewed advisories are checked for validity and completeness and map to supported ecosystems, and Dependabot alerts are generated for them. Unreviewed advisories come straight from the NVD feed without those checks and do not generate Dependabot alerts. Malware advisories come from the npm security team and the OpenSSF Malicious Packages repository. They have no fix version, so the safe option is to stop using the package.

A five step reading routine

  1. Confirm the ecosystem and package name match what you use.
  2. Find your installed version and compare it to the affected range.
  3. Read the impact sentence and decide if your usage fits it.
  4. Look at CVSS and EPSS together. Severity says how bad, EPSS says how likely exploitation is.
  5. Find the patched version or a workaround, and plan the upgrade.

Things that trip up beginners

  • A package you do not call directly can still be affected through a transitive dependency.
  • A patched version can still be a major upgrade that needs testing.
  • No fix listed does not mean ignore it. Look for workarounds, or remove the package.

Where Safeguard fits

Safeguard's dependency scanning links findings to advisories and applies reachability analysis, and a free scan shows it on a real project.

Try it yourself

Open the demo and follow a finding from alert to decision.

Click through it at your own pace, or open it full screen.

Quick check

Is a GHSA ID the same as a CVE ID?

No. They are separate identifiers and one flaw can have both.

Why did I get no alert for an advisory I can see?

It may be unreviewed, and Dependabot does not create alerts for unreviewed advisories.

Sources

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.