Code Security

A Vulnerable Dependency Was Found. Does It Actually Matter?

Most flagged dependencies are not exploitable in your application. Five questions that separate the ones that matter from the ones that generate tickets — and what to do when the answer is genuinely no.

Webcuris Research

Security Engineering

·3 min read

Reachable? Exploited? Exposed? Fixable?

Your scanner flagged forty vulnerable dependencies. Some fraction of those are genuinely dangerous in your application; most are not, and the difference is not visible in the advisory. Working through them in severity order — the default — spends your attention in roughly the wrong sequence. Five questions fix that.

1. Is the vulnerable code reachable from yours?

A CVE describes a flaw in a function, not in a package. If your code never reaches that function, the flaw is present and not exploitable. The classic case is a library whose vulnerability is in a parser you never call, or in a CLI entry point when you import it as a module. This is the single largest source of legitimate deprioritisation — and the one most tools cannot answer for you, so it usually needs a developer who knows the codebase to look for five minutes.

2. How deep is it, and can you even move it?

A direct dependency you can upgrade in an afternoon is a different problem from one buried four levels down inside a framework that pins it. For transitive findings, check whether the parent has released a version that moves the pin — and if it has not, whether your package manager's override mechanism (overrides, resolutions, a constraints file) can force it without breaking the parent's assumptions.

3. Is anyone actually exploiting it?

Severity says how bad exploitation would be; it says nothing about whether exploitation is happening. EPSS gives you the probability, and CISA's KEV catalogue gives you confirmed activity. A medium-severity CVE on the KEV list outranks a critical nobody has ever weaponised — and the reverse mistake, patching alphabetically by severity, is how the actually-exploited one waits three weeks.

4. What is exposed if it goes wrong?

The same vulnerable package matters differently in an internet-facing service that handles untrusted input than in a build-time tool that runs on your CI runner. Not because the build tool is safe — a compromised build is a supply-chain event — but because the attack requires a different, harder starting position. Rank by what an attacker would have to already have.

5. Does a fix exist yet?

If no patched version has shipped, the decision is not when to upgrade — it is whether to mitigate around it, replace the dependency, or accept and monitor. Writing that decision down, with a date to revisit, is the difference between a considered risk and a forgotten one.

Putting it in order

Reachable?Being exploited?Do this
YesYesNow. This is the small set that justifies interrupting work
YesNoNext sprint — and watch the probability, it moves
NoYesConfirm unreachability properly, then schedule; do not dismiss
NoNoBatch with routine upgrades. Most of the list lives here

The recurring trap is treating the flagged list as a queue rather than an inventory. It is an inventory; the queue is what these questions produce from it.

A Webcuris repository scan computes risk from severity, exploit probability and exposure together rather than severity alone — and runs locally, so your source never leaves the machine. What it hands you is closer to the queue than the inventory, with the evidence behind each ranking visible so you can disagree with it.

Get the next one

One email when a new article goes out. No newsletter, no drip sequence, no sales follow-up.

Unsubscribe in one click. We never sell or share the address.

Keep reading

Contact

Talk to us.

Questions about what the engine checks, whether it fits your estate, or what it deliberately refuses to do. A person reads every message.

  1. 01You writePlain form, no qualifying call, no obligation. The marketing checkbox is optional and unticked.
  2. 02A person reads itMessages land with the team, not a queue-bot. Nothing is auto-replied.
  3. 03You get an answerTo the address you gave — including “this product is not the right fit”, when that is the honest answer.
Reporting a vulnerability?
Read the disclosure policy first — it tells you what is in scope and what to expect.
New messagereplies go to your email

We reply to this address, so a disposable one will not reach you.

+91

0 / 4000