Safeguard
Security Guides•

How do I check whether a CVE is actually exploitable in my application?

Check four things in order: affected version, reachable code, preconditions and known exploitation. Steps and a decision table for what to do next.

Safeguard Security Team
3 min read

Check four things in order: whether your exact version is in the affected range, whether your code can reach the vulnerable function, whether the preconditions the advisory describes hold in your setup, and whether the flaw is known to be exploited. A yes to all four means fix now.

The four checks

  1. Version. Compare the installed version, from your lockfile or SBOM, against the affected range. Advisories in the OSV format give introduced and fixed events, so you can tell whether you are inside the range.
  2. Reachability. Does any path from your entry points call the vulnerable function? A package can be present and the flaw can still be unreachable.
  3. Preconditions. Many flaws need a specific configuration, input type or feature flag. Read the advisory text for what must be true.
  4. Exploitation. Is the flaw on CISA's Known Exploited Vulnerabilities list? If so, someone has used it against real systems.

Decision table

Version affectedReachablePreconditions metKnown exploitedAction
YesYesYesYesFix or mitigate today
YesYesYesNoFix in your normal urgent window
YesYesUnsureAnyConfirm preconditions, treat as urgent meanwhile
YesNoAnyYesFix soon, reachability analysis can be wrong
YesNoAnyNoSchedule the upgrade, document the reasoning
NoAnyAnyAnyClose the finding, note the evidence

Reachable does not mean exploitable, and unreachable does not mean permanently safe. Code changes, and a new entry point can make an unreachable function callable.

Recording the decision

When you decide a finding does not apply, write it down: which check failed, who decided, the date, and what would change the answer. A standard such as VEX exists for sharing these decisions with customers.

Steps to make this routine

  1. Put versions in an SBOM so check one is a lookup, not a search.
  2. Use call graph analysis for check two, and spot check the results by reading a few call paths yourself.
  3. Keep a short precondition note on every finding you triage.
  4. Pull the exploited list into your triage so check four is automatic.
  5. Re-run checks when the code changes or new advisory data arrives.

Try it yourself

Open the demo and walk through the checks for a sample CVE. Look at which answer changes the recommended action.

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

Where Safeguard fits

Safeguard's reachability analysis answers the second check and its SBOM scanning handles the first. You can try both on your own project with the free scan.

Quick check

Is a high CVSS score enough to call a CVE exploitable?

No. CVSS describes severity in general. Exploitability in your application depends on version, reachability and configuration.

Can I ignore a CVE that is not reachable?

You can defer it with a recorded reason and a review trigger. Unless it is on the exploited list, deferral is often reasonable.

Sources

  • OSV schema, ossf.github.io/osv-schema (introduced and fixed events).
  • CISA Known Exploited Vulnerabilities Catalog.

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.