HubSec Research · Benchmark Report

Open-Source Tools vs Aqua Enterprise
A side-by-side vulnerability benchmark.

We scanned three deliberately vulnerable applications with the four most-used open-source security tools and Aqua Enterprise, then compared what each one found, missed, and prioritized. Here is what the data tells us about where commercial scanners add measurable value — and where the open-source stack is already good enough.

Scan Date
2026-05-12
Targets
NodeGoat · juice-shop · WebGoat
OSS Tools
Trivy · Semgrep · Gitleaks · npm-audit
Commercial
Aqua Enterprise
Total Findings
708
across all tools, 3 repos
Critical
58
CVE + Semgrep error
High
158
CVE + Semgrep warning
Medium
79
Leaked Secrets
293
Gitleaks signals
The headline finding

When open-source scanners stop, Aqua keeps going.

The most striking result of the benchmark was not "Aqua found more" — it was where Trivy gave up entirely. On juice-shop, a real-world Node.js application without a committed lockfile, Trivy returned zero vulnerabilities. Aqua reported 79 CVEs in the same code.

juice-shop · case study

0 vs 79 CVEs on the same repository.

Trivy OSS
0
Aqua Enterprise
79
Critical / High in Aqua
13 / 58

juice-shop has no package-lock.json in its repository. Trivy's dependency scanner requires a lockfile to resolve transitive dependencies, so it produced zero findings. Aqua resolves range-based dependencies straight from package.json and surfaced 79 CVEs — including vm2 RCE, jsonwebtoken bypass, and the well-known lodash prototype-pollution chain. This is the largest single coverage gap we measured.

Four places Aqua adds measurable value

📚 Data-source breadth

Aqua ingests NSWG (Node Security WG), vendor advisories and GHSA, not just NVD. It surfaces non-CVE advisories (NSWG-ECO-118, GHSA-72hv-…) that OSS scanners ignore.

🆕 Recency on new CVEs

The flip side: Trivy is sometimes faster on 2025/2026 CVEs (thymeleaf-spring6 critical chain, underscore CVE-2026-27601) before Aqua's database refresh. They complement each other.

⚖️ Severity scoring

Aqua applies its own triage on top of NVD CVSS — 8 CVEs got reclassified in our test (e.g., y18n, ini, set-value bumped HIGH → CRITICAL).

🎯 Triage metadata

Aqua exposes EPSS · Direct/Transitive · Package Roots · Vendor Fix · Reachability per finding. OSS scanners give you a CVE list; Aqua gives you a triaged action queue.

Overall coverage

Where the 708 findings came from.

Aggregated across all four open-source tools (Trivy, Semgrep, Gitleaks, npm-audit) before de-duplication. Gitleaks alone accounts for 293 secret signals — most of them test fixtures in the deliberately-vulnerable applications, but a useful reminder that fixture-grade secrets do leak into production repos.

Findings by repository

All tools combined

Severity distribution (CVE)

Trivy + npm-audit combined

Findings by tool

How much each scanner contributed

Per-repository × per-tool breakdown

Stacked view of which scanner caught what, where

Repository detail

Raw counts per tool
Repository Stack Semgrep (E/W) Gitleaks Trivy (C/H/M/L) npm-audit (C/H/M/L) Total
NodeGoat Node.js 3 / 13 5 10 / 39 / 16 / 10 36 / 63 / 33 / 9 237
juice-shop Node.js / TS 12 / 18 194 0 / 0 / 0 / 0 7 / 31 / 11 / 6 279
WebGoat Java / Spring 15 / 31 94 5 / 25 / 19 / 3 192
All three targets are OWASP training applications (deliberately vulnerable). Most Gitleaks hits are test fixtures — they should still be rotated if the codebase is forked into production.
Aqua Enterprise vs Trivy OSS

Same repos, side by side.

We exported Aqua's findings from the Aqua Console (2026-05-13) and ran Trivy 0.70.0 locally (2026-05-12) on the same three repositories. Below is a strict CVE-level diff: how many findings each tool produced, how many CVEs overlapped, and where each one stood alone.

Total findings — 3 repositories combined

Higher is not always better; coverage gaps are what matter
Repository Aqua Total Trivy Total Δ Aqua Unique CVE Trivy Unique CVE Overlap Aqua-only Trivy-only
NodeGoat11675+41696456138
WebGoat5752+5575244138
juice-shop1060+1067900790
Total279127+15220511610010516

Total findings — Aqua vs Trivy

Per repository

CVE overlap analysis

Shared · Aqua-only · Trivy-only

Severity distribution

All 3 repos combined

NodeGoat — severity

WebGoat — severity

juice-shop — severity

Triage funnel

279 raw findings → 48 things you actually need to do.

This is where Aqua's commercial metadata pays for itself. Using Reachability and Direct vs Transitive flags we eliminated 65% of the raw findings as not exploitable at runtime, ending with a 48-item action list — an 83% reduction in noise. Open-source scanners give you the long list; Aqua gives you the short one.

From raw to actionable

Aqua's Reachability + Direct flags applied to 279 raw findings
Raw findings
279
Reach = No
182
65% likely FP
Reach = Yes
97
Actionable
48
Direct + Reach=Yes
Repository Raw Reach=No (FP) Reach=Yes Actionable Noise reduction
NodeGoat116103 (89%)137−94%
WebGoat5714 (25%)4325−56%
juice-shop10665 (61%)4116−85%
Total279182 (65%)9748−83%

Triage funnel — per repo

Raw → Reach=Yes → Actionable

FP-filtering capability

Triage metadata each tool exposes
FeatureAquaTrivy OSS
Reachability analysis✓ Yes✗ No
Direct vs Transitive flag✓ Yes✗ No
EPSS score✓ Yes✗ No
Vendor Fix flag✓ Yes~ status only
Missing CVSS score032
Duplicate CVE × version7411
Status: affected, no fix73
Vulnerability drill-down

The 48 findings, by name.

Per-CVE detail — package, vulnerable version, fix version, EPSS exploit-probability score, and our triage recommendation. Request access below to view the full drill-down: NodeGoat (7 actions), WebGoat (25 actions — 24 in a single XStream upgrade), juice-shop (16 actions across jsonwebtoken / multer).

WebGoat — Actionable findings (25)

24 of 25 resolve with a single XStream upgrade
SeverityCVEPackageVersionFixEPSS
CriticalCVE-2013-7285xstream1.4.51.4.7+0.148
HighCVE-2021-39144xstream1.4.51.4.180.94 ⚡
HighCVE-2020-26217xstream1.4.51.4.140.93 ⚡
HighCVE-2021-29505xstream1.4.51.4.170.91 ⚡
HighCVE-2021-39141xstream1.4.51.4.180.82
HighCVE-2021-39152xstream1.4.51.4.180.62
High+ 18 more findings…xstream / spring-boot-actuator

juice-shop — Actionable findings (16)

jsonwebtoken and multer dominate
SeverityCVEPackageVersionFix
CriticalCVE-2015-9235jsonwebtoken0.4.04.2.2
CriticalCVE-2018-3745jsonwebtoken0.4.08.4.0
CriticalCVE-2020-15084express-jwt0.1.36.0.0

Get the full report.

The complete open-source drill-down — every Trivy CVE, every Semgrep finding, every Gitleaks detection across all three repos — will land in your inbox as a PDF within 30 seconds. Aqua Enterprise drill-down is available on a separate call.

Check your inbox.

The full report PDF is on its way to your email — should land within 30 seconds. If it doesn't show up, check your spam folder or write to sales@hub-sec.com.

Priority actions

Top 10 things we'd fix first.

Independent of which scanner found them, these are the ten remediations that close the largest blast radius across the three target repositories. Ordered by exploit probability and patch leverage (how many CVEs one upgrade closes).

# Action Repo Impact
01Upgrade XStream 1.4.5 → 1.4.21WebGoatRCE closes 24 CVEs in one bump
02Upgrade thymeleaf-spring6WebGoatCritical 3 CVEs (CVE-2026-40477 / 40478 / 41901)
03Upgrade Spring Security WebWebGoatCritical CVE-2026-22732
04Parameterize SQL queriesjuice-shop, WebGoatHigh 17 SQLi findings (Semgrep)
05Audit GitHub Actions for shell injectionjuice-shopSupply-chain RCE
06Set HttpOnly / Secure cookie flagsNodeGoat, WebGoatSession theft
07Upgrade minimist, mixin-deep, set-value, bsonNodeGoatCritical prototype pollution chain
08Remove hardcoded JWT secretjuice-shopToken forgery
09Remove unsafe object deserialization pointsWebGoatRCE
10Verify AWS tokens (lab fixture vs real key?)WebGoatCloud compromise
Net effect of the first three actions: 30+ HIGH/CRITICAL CVEs closed by three package upgrades. The same finding count would take weeks to remediate one-by-one without the grouping that triage metadata enables.
Methodology

How the benchmark was run.

All scans were executed on 2026-05-12 against the public main branches of the three target repos. Open-source tools were run locally with default rule packs. Aqua Enterprise scans were executed via the Aqua Console and exported as CSV on 2026-05-13.

Trivy 0.70.0
Dependency CVE scan

Lockfile-based dependency scanning. Strong on new CVEs, requires package-lock.json / pom.xml for accurate results.

Semgrep
SAST — code-level findings

Pattern-based static analysis. SQL injection, hardcoded secrets, unsafe deserialization. Default ruleset (p/default).

Gitleaks
Secret detection

Repo-wide search for committed credentials. High recall, high false-positive rate on test fixtures.

npm-audit
Node ecosystem advisories

Built-in npm advisory check. Resolves only npm-published vulnerabilities; misses GHSA / NSWG entries.

Aqua Enterprise
Commercial · multi-source

NSWG + GHSA + vendor feeds, EPSS scoring, Reachability + Direct/Transitive metadata for triage. Range-based resolution from package.json without a lockfile.

Reproducibility: raw JSON outputs from every scan tool are archived at HubSec. We're happy to share the underlying dataset with researchers and customers running their own benchmark — please use the contact form below.

Want this on your repositories?

We run benchmark assessments like this for any code base — yours or a fork — and produce a tailored prioritized action list. Open-source-only scans are free; Aqua Enterprise scans are part of a paid engagement.

Talk to our team