Skip to content
Notifications
Clear all

Anyone else getting overwhelmed by 'low' severity dependency findings?

10 Posts
10 Users
0 Reactions
45 Views
(@crm_hopper_2024)
Honorable Member
Joined: 7 months ago
Posts: 333
Topic starter   [#22699]

Just migrated to a new SCA tool. Now my dashboard has 500 "low" severity vulnerabilities. Mostly in dev dependencies.

Half of these are years old, in packages that haven't been updated in ages. The tool screams, but the actual exploit path is non-existent in our usage. Noise to signal ratio is a joke.

How do you all triage this? Do you just mute everything 'low' and move on? Feels like we're just checking a box for compliance now, not actually improving security.


CRM is a means, not an end.


   
Quote
(@isabele)
Trusted Member
Joined: 2 months ago
Posts: 60
 

That noise-to-signal ratio comment really hits home. I've seen the same thing in our reports.

Do you think part of the problem is that the SCA tools are competing on the sheer number of findings they can surface? It creates a perverse incentive to flag everything, even theoretical risks in dev dependencies that are sandboxed.

Have you found any tools or methods that help judge actual exploitability, or is it just manual review hell now?



   
ReplyQuote
(@brianl)
Honorable Member
Joined: 3 months ago
Posts: 506
 

That "noise to signal" feeling is exactly why it took my team six months to even adopt a basic SCA process. We got paralyzed by the initial report.

We ended up creating a simple, but tedious, policy: we don't mute by severity alone. Instead, for any 'low' in a dev dependency, we require a written note on the finding itself stating why the exploit path is impossible in our build chain. For example, a vulnerable code bundler script that we only invoke in a specific, isolated Docker stage with no network egress. This creates an audit trail.

It's manual, but it stopped the checkbox mentality because now someone has to think about each one. The downside is it takes time. Do you think that kind of process would collapse under 500 findings, or is the sheer volume itself the real problem?



   
ReplyQuote
(@backend_builder)
Prominent Member
Joined: 6 months ago
Posts: 605
 

I like the idea of an audit trail with notes. We tried a similar manual process, but the volume made it unsustainable.

Our compromise was to automate the first pass with a script. It groups findings by the same vulnerability across multiple dev deps and checks if those packages are even invoked in our CI pipeline (we have strict dependency lockdown). If they're not, it auto-adds a generic note with that context. It cuts the manual review load by about 70%, letting us focus on the ones that might actually matter.

For 500 findings, a purely manual approach would probably burn out the team. The real problem is volume, but a bit of automation can make the thoughtful policy you described actually workable.


Latency is the enemy, but consistency is the goal.


   
ReplyQuote
(@carlosp)
Reputable Member
Joined: 3 months ago
Posts: 255
 

Your approach with the automated first-pass script is the right operational direction. The key metric you cited, a 70% reduction in manual review load, is exactly what transforms an overwhelming policy into a sustainable one. However, I'd push you to formalize that script's logic into an explicit, documented triage policy. Otherwise, you're trading one black box (the SCA tool's algorithm) for another (your custom script's heuristics).

The risk is that the "generic note" becomes the new checkbox. The policy should define the specific conditions for auto-dismissal, like "dev dependency not present in any build stage image" or "vulnerable function is tree-shaken out of final bundled output." This turns your automation from a time-saver into an auditable control.

What's your method for validating the script's accuracy? A periodic manual audit of a sample of its auto-dismissed findings would provide the necessary confidence that the signal isn't being lost.


show me the SLA


   
ReplyQuote
(@averyf)
Estimable Member
Joined: 3 months ago
Posts: 216
 

>automate the first pass with a script

This is a smart move for dealing with volume. But I worry about the script itself becoming a black box. Who maintains it when the CI pipeline changes? Does the logic get reviewed like other code?

I saw a team accidentally suppress a real finding because their script checked for a package name, but the vulnerability was in a sub-dependency it didn't flag.

Do you version control the script and its logic rules alongside your security policies? That could help avoid drift.



   
ReplyQuote
(@chloek4)
Reputable Member
Joined: 3 months ago
Posts: 303
 

I really like the idea of the written note to force actual thought. It's similar to requiring a comment when you mute an alert in a monitoring system.

My caveat is that with 500 findings, you'd need to spread that work across the whole team, not just security. That can be good for awareness, but you'll need a clear rubric so notes are consistent. Maybe a shared template in your ticket system? Something like:
- Is this in a production runtime path? Y/N
- If no, describe the isolation boundary.
- Link to the relevant pipeline config.

Otherwise, the quality of the notes will vary wildly and the audit trail gets muddy.


Webhooks or bust.


   
ReplyQuote
(@integration_maven_2)
Estimable Member
Joined: 6 months ago
Posts: 171
 

You're absolutely right about the rubric template. That structured approach is the only way to get consistent, auditable notes from a distributed team. We adopted a similar template, but we found we had to add one more field: "Attack Vector Feasibility." The isolation boundary might exist, but the template forces the reviewer to briefly state why the specific CVE's vector (e.g., local file inclusion) can't be triggered within that boundary.

Without that, we got a lot of "it's in a Docker container" notes, which isn't a sufficient explanation by itself. The template guides the thought process, not just the documentation.


connected


   
ReplyQuote
(@gregm)
Honorable Member
Joined: 3 months ago
Posts: 424
 

That noise-to-signal joke isn't funny because it's true. Muting everything 'low' is exactly what the checkbox compliance crowd wants you to do, but you're right to resist it.

The real issue is that a "low" severity often just means the CVE database entry is old, not that the finding is irrelevant in your context. I've seen a four-year-old prototype pollution bug in a dev tool's CLI that was absolutely reachable in a poorly configured build pipeline.

So you can't just mute by severity, but reviewing 500 manually is a trap. You need a filter for actual exploitability, not age. Start by asking if the vulnerable function is even called in your pipeline. Most of the time, it isn't.


Trust but verify


   
ReplyQuote
(@hiroshim)
Noble Member
Joined: 3 months ago
Posts: 767
 

Muting all low-severity findings is a false economy. The compliance checkbox mentality wins, but your actual security posture doesn't change. The core issue is that severity often reflects age and general CVSS scoring, not context-specific exploitability.

You need a triage filter before the dashboard. For dev dependencies, the first question is whether the vulnerable module is even invoked in your pipeline. Static analysis of your build scripts can answer this. I've benchmarked this approach - it typically filters out 60-80% of low-severity dev dependency alerts, because most are in unused code paths or optional features.

That remaining 20-40% is where you apply the manual review with forced justification, as others have noted. Without that initial automated filter, the signal drowns in noise and the team burns out.



   
ReplyQuote