Reachability Analysis¶
The meterian:reachability-analysis skill determines whether vulnerable
dependencies found by a security audit are actually reachable and exploitable
in your application source code.
Info
This skill runs after a Security Audit that has found vulnerabilities. If no vulnerabilities were found, reachability analysis is not needed.
Why reachability matters¶
A dependency can be vulnerable without your application being exploitable. The vulnerable code path might be:
- Present in the package but never imported by your code
- Imported but never called in practice
- Callable only under specific configurations that don't apply to your deployment
Reachability Analysis classifies each finding so you can prioritise what to fix first.
Workflow¶
The skill follows a 6-step process:
Step 1 — Enrich each vulnerable package using npx @meterian/cli advisories get
to identify the specific vulnerable function, symbol, or behaviour.
Step 2 — Identify entry points in your application: HTTP routes, API controllers, CLI commands, serverless handlers, background jobs, queue consumers, etc.
Step 3 — Search for usage of each vulnerable package — imports, require() calls,
dependency injection bindings, framework auto-loading, and dynamic imports.
Step 4 — Trace call paths from entry points to the vulnerable behaviour, considering attacker-controlled input and exploit preconditions.
Step 5 — Classify each finding using exactly one classification (see below).
Step 6 — Assign priority based on classification and impact.
Classifications¶
| Classification | Meaning |
|---|---|
| Reachable | Clear call path from entry point to vulnerable behaviour; attacker-controlled input can reach it |
| Conditionally reachable | Path exists but depends on configuration, feature flags, authentication, roles, or deployment conditions |
| Loaded but not called | Package is imported or initialised, but vulnerable behaviour is never invoked |
| Present but not reachable | Package is in the dependency tree but not loaded by your code |
| Unknown | Insufficient information — source code incomplete, advisory detail missing, or runtime behaviour unclear |
Priority levels¶
| Priority | Condition |
|---|---|
| Critical | Reachable, remotely triggerable, high impact |
| High | Reachable with realistic preconditions |
| Medium | Conditionally reachable |
| Low | Present but not reachable, with strong evidence |
| Investigate | Unknown or low confidence |
Output¶
The skill produces a finding report for each vulnerability, followed by a summary table:
| Package | Version | CVE | Classification | Priority | Recommended Upgrade |
|---------|---------|----------------|---------------------------|----------|---------------------|
| lodash | 4.17.15 | CVE-2021-23337 | Reachable | Critical | 4.17.21 |
| axios | 0.21.0 | CVE-2021-10190 | Loaded but not called | Low | 1.6.0 |
| moment | 2.18.0 | CVE-2022-24785 | Present but not reachable | Low | 2.29.4 |
For reachable or conditionally reachable findings, the skill offers to run remediation via the Security Audit skill (Mode C).