Skip to content
Notifications
Clear all

My results after scanning 500 projects: 30% false positives on 'Medium' risk.

2 Posts
2 Users
0 Reactions
0 Views
(@david_chen_data)
Estimable Member
Joined: 3 months ago
Posts: 129
Topic starter   [#7890]

After completing a quarterly security audit across our portfolio of data infrastructure projects, I have compiled metrics from 500 recent Black Duck scans. The primary finding is that the false positive rate for vulnerabilities flagged as 'Medium' risk severity is approximately 30%. This introduces significant operational overhead for validation and triage, directly impacting pipeline velocity and resource allocation.

The methodology involved scanning a mix of Java, Python, and Go projects, all containerized and managed via artifact repositories. Scans were executed through the Black Duck API as part of our CI/CD pipeline, with results aggregated into our internal data warehouse for analysis. The false positive determination was made through manual verification by our application security team against the specific context of each project's deployment environment (e.g., a vulnerable library function not actually being invoked, or the component being deployed in an air-gapped analytics cluster).

* **Benchmark Data:** Out of 1,247 total 'Medium' severity findings, 374 were confirmed as false positives upon investigation. This ratio was consistent across programming languages.
* **Common False Positive Patterns:**
* **Transitive Dependencies:** Vulnerabilities deep in the dependency tree where the parent package does not expose the vulnerable path.
* **Configuration-Only Vulnerabilities:** Library versions flagged for a CVE that requires a specific, non-default configuration to be exploitable, which our projects do not use.
* **Post-Mitigation Flags:** Components where the vulnerability was patched in a minor/patch release, but the CVE metadata in the knowledge base had not yet been updated to reflect the mitigated version range.

This rate has tangible cost implications. The manual verification process for these 'Medium' findings consumes an average of 15-20 engineer-minutes per finding. Extrapolated across our organization, this represents hundreds of hours per quarter that are not spent on actual remediation of critical issues or feature development. It necessitates maintaining a separate, internal whitelist or suppression file, which itself becomes a governance burden.

A sample of our suppression file logic (JSON format) for a common false positive pattern:
```json
{
"projectName": "analytics-pipeline",
"componentIdentifier": "commons-collections:commons-collections",
"version": "3.2.1",
"vulnerabilityId": "CVE-2015-6420",
"comment": "False positive: Component used in a Spark job where Java deserialization is explicitly disabled via security manager.",
"status": "IGNORED"
}
```

I am interested in whether other teams have measured similar false positive rates and what strategies have been effective for mitigation beyond blanket suppressions. Specifically:
* Have you adjusted your policy thresholds to suppress all 'Medium' severity findings, and if so, what was the impact on your security posture?
* Are you using Black Duck's context or snippet scanning capabilities to reduce noise, and what has been the performance/reliability trade-off?
* Have you integrated a secondary, more granular tool (like Snyk or OSV scanner) for a two-layer verification process to automate triage?

The goal is to optimize the feedback loop to developers, ensuring that security alerts are high-signal and actionable, thereby increasing compliance and reducing alert fatigue. Sharing benchmarks and operational data here can help us all build more reliable and efficient security tooling pipelines.

--DC


data is the product


   
Quote
(@jamesb)
Trusted Member
Joined: 1 week ago
Posts: 53
 

That 30% figure is exactly what we've been wrestling with, especially around those 'Medium' alerts. It's a real drain on the team's energy.

We found setting up a simple internal wiki page for common false positives helped a bit, like noting when a certain library is pulled in as a transitive dependency but its vulnerable method isn't even in our code path. It cut down repeat investigation time, though it doesn't solve the core problem.

Have you started adjusting your triage process or policy rules based on this data? We're considering lowering the automatic pipeline blocker for 'Medium' and requiring a quick manual check first, but it feels a bit risky.



   
ReplyQuote