Skip to content
Home CandyShop: Security Tool Benchmark Results
Guide

CandyShop: Security Tool Benchmark Results

Real scan results from 15+ security tools tested against intentionally vulnerable applications. Compare SAST, DAST, SCA, and container scanners with actual data.

Suphi Cankurt
Suphi Cankurt
AppSec Enthusiast
Updated 2026-02-05
3 min read

CandyShop DevSecOps

What is CandyShop?

CandyShop Dashboard

CandyShop aggregates scan results from popular security tools applied to well-known vulnerable applications. The goal is simple: give security professionals real benchmark data to compare tools.

Every tool was run against the same targets with default configurations. Scan duration, finding counts by severity, and detection categories are all tracked.

This matters because every vendor claims high detection rates. But when you run tools side by side against the same targets, differences become obvious.


Test Environments

The benchmark uses intentionally vulnerable applications that are widely recognized in the security community:

OWASP Juice Shop

Node.js/Express/Angular. 100+ security challenges covering OWASP Top 10 and beyond.

Broken Crystals

Node.js/TypeScript by Bright Security. 22+ vulnerability types including JWT flaws and XXE.

Altoro Mutual

J2EE banking application by HCL. Classic web vulnerabilities in an enterprise-style app.

Vulnerable Flask App

Python/Flask. Simple target for testing Python-specific security scanners.


Scanning Tools

The benchmark includes tools across four categories:

CategoryTools Tested
SASTSemgrep, CodeQL, NodeJsScan, Gosec, Brakeman, Bandit, Find Security Bugs, Security Code Scan, Gitleaks, ESLint, Psalm
DASTOWASP ZAP, Nuclei
SCADependabot, OWASP Dependency-Check, Nancy
ContainerTrivy, Grype

OWASP Juice Shop Results

Scan results against OWASP Juice Shop, a Node.js application with 100+ intentional vulnerabilities.

ToolTypeDurationCriticalHighMediumLow
NodeJsScanSAST1:50 min0200
SemgrepSAST2:24 min02420
CodeQLSAST0:20 min19148180
NucleiDAST1:09 min0001
OWASP ZAPDAST6:59 min003232
DependabotSCA0:01 min0130
Dependency-CheckSCA3:18 min0000
TrivyContainer1:24 min8151611
GrypeContainer1:50 min2557772

Key observations:

  • CodeQL found the most code-level vulnerabilities (185 total) in 20 seconds—the fastest SAST scan.
  • Grype reported more container vulnerabilities than Trivy (161 vs 50), though some may overlap or be classified differently.
  • ZAP took nearly 7 minutes but found 64 runtime issues that SAST tools missed.
  • Dependency-Check found zero issues—unusual given Juice Shop’s known vulnerable dependencies.

Broken Crystals Results

Scan results against Broken Crystals, a modern Node.js/TypeScript application with 22+ vulnerability types.

ToolTypeDurationCriticalHighMediumLow
SemgrepSAST0:28 min002390
CodeQLSAST0:20 min411370
NucleiDAST1:09 min0010
OWASP ZAPDAST6:59 min01112136
DependabotSCA0:21 min41662
Dependency-CheckSCA9:15 min430232
TrivyContainer3:06 min454584431144
GrypeContainer2:56 min48478445386

Key observations:

  • Semgrep found 239 medium-severity issues in under 30 seconds—fast and thorough.
  • ZAP found the most DAST issues (249 total) including a high-severity finding.
  • Container scanners found significantly more vulnerabilities here than in Juice Shop, reflecting the different base images used.
  • Dependency-Check performed better on Broken Crystals, finding 59 issues compared to zero on Juice Shop.

About the Applications

OWASP Juice Shop

OWASP Juice Shop

The most popular intentionally vulnerable web application. Created in 2014 by Björn Kimminich, it runs on Node.js, Express, and Angular.

Juice Shop contains 100+ security challenges covering OWASP Top 10 categories: broken access control, authentication flaws, XSS, injection attacks, security misconfigurations, and more.

It’s the go-to benchmark for security tool testing because of its breadth and active maintenance.

GitHub: juice-shop/juice-shop

Broken Crystals

Broken Crystals

A modern intentionally vulnerable application developed and maintained by Bright Security.

Built with Node.js and TypeScript, it features 22+ vulnerability types including JWT authentication flaws, CSRF, LDAP injection, XXE attacks, and business logic vulnerabilities.

Broken Crystals is particularly useful for testing tools against modern JavaScript/TypeScript codebases.

GitHub: NeuraLegion/brokencrystals

Altoro Mutual

Altoro Mutual

A vulnerable J2EE banking application developed in 2008 and still maintained by HCL Technology.

It simulates a banking site with classic web vulnerabilities: SQL injection, XSS, path traversal, and authentication bypasses.

Altoro Mutual is useful for testing tools against enterprise Java applications.

Demo: demo.testfire.net


Related guides:

Suphi Cankurt
Written by
Suphi Cankurt

Suphi Cankurt works at Invicti Security and has spent over 10 years in application security. He reviews and compares AppSec tools across 10 categories on AppSec Santa. Learn more.