WebGoat

github.com/WebGoat/WebGoat — large Spring-based Java training app.

Results

toolfindingswall-clock
rastray171.4 s
semgrep21218.5 s
gitleaks237.9 s
banditN/A
gosecN/A
eslint-securityN/A

What rastray fires on

codecountwhat it catches
RSTR-PERF-1028new Date() inside a loop (in WebGoat's bundled JS)
RSTR-DES-0064Java ObjectInputStream.readObject
RSTR-SEC-0072PEM private-key block
RSTR-INJ-0031eval (JSP / inline scriptlets)
RSTR-XXE-0051XML factory without entity hardening
RSTR-CRY-0011MD5 used for hashing

Headline observation

rastray and Semgrep land in the same ballpark (17 vs 21), but rastray finishes in 1.4 s while Semgrep takes 3 m 38 s — a 156× speedup. WebGoat is the largest repository tested and the gap is biggest here; rastray's regex + targeted Tree-sitter strategy scales with file count, while Semgrep's dataflow engine pays a per-file cost that adds up on a 20 MB tree.

The four RSTR-DES-006 findings are exactly the ObjectInputStream RCE class WebGoat teaches in its Deserialization chapter — they map cleanly to the lesson, not false positives.

Reproduce

powershell -File scripts/benchmarks/run.ps1 -Target webgoat