Product

Software Composition Analysis

Traditional SCA flags every CVE in your dependency tree. We trace execution paths to find the ones that actually reach production.

Schedule a Technical Demo →
Keygraph SCA dependency scan with reachability analysis on a finding

A typical SCA scan flags hundreds of CVEs. Most never execute. A research agent pinpoints each vulnerable function. The Code Property Graph checks whether your code calls it. Execution tracing confirms whether the call path is ever reached. The rest is noise.

What traditional SCA misses.

Legacy SCA stops at the lockfile. It tells you a vulnerable library is present, but not whether the vulnerable code ever runs. Three checks get skipped.

Miss 01
Which specific function or framework is vulnerable.

An advisory typically flags a specific method signature, not the whole package. The actually-vulnerable surface is a small subset of what ships in the library.

Pinpoint the function.
Miss 02
Whether your codebase actually uses that function.

Many libraries ship with APIs you never touch. A package can carry a critical CVE in a module your code never imports, and a lockfile scan cannot tell the difference between a real call site and an unused export.

Check the call sites.
Miss 03
Whether that function is executable in your code.

Even if you call it, dead code, conditional compilation, and test-only paths often keep it from ever running in production. Reachability requires walking the path from a live entry point, not just confirming a syntactic reference.

Walk the path.
The combined effect
The combination eliminates 70-90% of the noise from a traditional scan.

Pinpointing the vulnerable function, confirming a real call site, and proving runtime reachability collapses the long tail of lockfile CVEs into a short list your team can actually fix.

See how reachability works ↓

How reachability works.

Five stages, from dependency scan to prioritized verdict. Static CVE lists in, proven executable paths out.

01
Scan
Detect CVEs.

Standard CVE detection across your dependency tree. npm, pip, maven, gems, Go modules, cargo.

02
Research
Read the advisory.

A research agent reads each advisory and extracts the exact vulnerable function or method signature, not just the package version.

03
CPG Lookup
Check call sites.

Keygraph queries the Code Property Graph to check whether your code imports and calls the specific vulnerable function.

04
Trace
Walk the path.

We walk forward from application entry points to confirm whether the vulnerable code is actually reachable at runtime.

05
Classify
Rank the risk.

Proven Executable, Likely Reachable, or Not Reachable. Triage by impact, not lockfile presence.

Reachability analysis: two modes.

Not every vulnerable dependency is exploitable. Reachability Analysis tells you which ones matter.

Mode 01 · Function-Level
Method Usage Analysis.

For function-level vulnerabilities. Keygraph runs data-flow analysis to trace execution paths from your code into the vulnerable dependency function. The report shows total paths analyzed, confirmed reachable paths, and unvalidated paths. Each finding includes specific sink locations (file, line, code snippet).

Mode 02 · Library-Level
Framework-Level Analysis.

For library and framework vulnerabilities where code-level data flow isn't applicable. Analyzes how the vulnerable package is imported and used across the codebase. Distinguishes production usage from test-only usage, evaluates exposure conditions and mitigating factors.

Combined Risk Score
CVE severity adjusted for reachability.

NOT_REACHABLE downgrades risk to Low regardless of CVE severity. CONFIRMED_REACHABLE plus a High CVE elevates to Critical. POTENTIALLY_EXPOSED plus a Medium caps at Medium. Developers see the risk that matters, not just the CVE score.

See it eliminate the noise.

Schedule a demo and watch reachability-aware SCA run against your dependency tree.