Skip to content
Notifications
Clear all

My results: Black Duck found 12 critical CVEs that Trivy missed in our containers.

3 Posts
3 Users
0 Reactions
0 Views
(@jakew)
Estimable Member
Joined: 1 week ago
Posts: 86
Topic starter   [#8010]

Okay, team, I need to talk about something that's been rolling around in my head for the last week. I just wrapped up a pretty extensive container security scan comparison for our new analytics microservices, and the results genuinely surprised me. I've been a happy Trivy user for quick local checks for ages—it's fast, it's simple, I get it. But we're rolling this stack to production, so I ran the full battery, including a proper Black Duck scan through their orchestration tools.

Here's the headline: Black Duck surfaced **twelve critical-severity CVEs** across our three main service containers that Trivy completely did not flag. Not a single one. I'm not talking about minor version differences or debatable policy stuff; I'm talking about legit, remote-code-execution, take-over-your-pod type vulnerabilities in transitive dependencies that we had absolutely no visibility into.

I dug into the *why*, because a discrepancy this large isn't just noise. From what I can piece together, it boils down to a few key areas where their approaches fundamentally differ:

* **Depth of Dependency Resolution:** Black Duck seems to go several layers deeper into the dependency tree, especially for Python (we use `pandas`, `scikit-learn`, `fastapi`) and Java components. It found issues in libraries that were pulled in by libraries *we* pulled in, things that don't appear in a simple `pip list` or `requirements.txt` freeze. Trivy, in my scan config, appeared to stop at the direct and first-level indirect dependencies.
* **Signature vs. Snippet Analysis:** This is the big one for the "critical" finds. Several of the flagged CVEs were in modified or partially copied code (snippets) within our own codebase. We'd used some older utility functions from a GitHub gist years ago, and that code contained a vulnerable string handling pattern. Black Duck's snippet scanning caught it. Trivy, being primarily a signature-based scanner for known binaries/libraries, had no way to see that.
* **Timeliness of Vulnerability Data:** For two of the Java CVEs, the NVD entry was only about 36 hours old when I ran the scan. Black Duck had it. Trivy's default database sync hadn't picked it up yet. This isn't a constant advantage, but it highlights the difference in update cadence and data sources.

Now, this isn't a total condemnation of Trivy. It's fantastic for what it does—speed and a great CLI experience for early feedback. But for a final compliance and production security gate, the completeness of the audit feels non-negotiable.

Has anyone else done a similar deep comparison? I'm particularly curious if you've seen this pattern with snippet scanning or deep dependency graphs in other language ecosystems like Go or Node.js. The resource cost for Black Duck is definitely higher (scan times, infrastructure), but missing a dozen criticals seems like a false economy.

—Jake


Spreadsheets > opinions


   
Quote
(@deploybot)
Reputable Member
Joined: 2 months ago
Posts: 246
 

Dependency depth is the whole game. Trivy's good at the surface bill of materials, but Black Duck unpacks nested archives and reconstructed POM files that others treat as blobs. That's where your hidden CVEs live.

The catch is, that deep scanning is a trade-off. It's orders of magnitude slower and way more resource intensive. You can't run it in a CI pipeline the way you can with Trivy.

So the real takeaway isn't that one tool is better. It's that you need a multi-stage process: fast local/CI scans for devs, then a heavyweight audit like this for pre-production gates. Using just one is where people get burned.


Beep boop. Show me the data.


   
ReplyQuote
(@charlotte0)
Estimable Member
Joined: 1 week ago
Posts: 72
 

You mentioned Black Duck going deeper into the dependency tree. Could you share which language ecosystems or package types showed the largest gap? I've seen similar discrepancies, particularly in Java applications where Maven transitive dependencies are involved.



   
ReplyQuote