Skip to main content
Measured benchmark · 2026-10-24

Measured on real code, published as-is.

We scan pinned open-source projects: intentionally vulnerable apps to measure what we catch, and maintained production apps to measure noise. These are the latest results, including what we miss.

Documented flaws found43 / 4341 of them block the release gate (HIGH or CRITICAL).
Clean projects not failed14 / 173 failed on issues we reviewed as real.
Real-incident snippets caught86%102 of 118 flagged HIGH/CRITICAL, 99% incl. MEDIUM. The misses are listed in What We Don't Check.
Median engine time1.6sAcross 28 projects. The largest, 2,481 files, took 40.7s.

Known vulnerabilities in intentionally vulnerable apps

Each flaw is located in the app's source; it counts as found only if Zelsis reports that class of issue in that file.

ProjectFlawFileResult
OWASP/NodeGoatServer-side JS injection via eval(req.body.preTax)app/routes/contributions.js Found · blocks
OWASP/NodeGoatNoSQL injection through $where stringapp/data/allocations-dao.js Found · blocks
OWASP/NodeGoatOpen redirect via res.redirect(req.query.url)app/routes/index.js Found · blocks
OWASP/NodeGoatSSRF via needle.get(url + symbol)app/routes/research.js Found · blocks
OWASP/NodeGoatHardcoded session cookie secretconfig/env/all.js Found · blocks
appsecco/dvnaSQL injection by string concatenation in sequelize.querycore/appHandler.js Found · blocks
appsecco/dvnaCommand injection: exec('ping -c 2 ' + req.body.address)core/appHandler.js Found · blocks
appsecco/dvnaInsecure deserialization with node-serialize unserializecore/appHandler.js Found · blocks
appsecco/dvnaXXE: libxmljs parseXmlString with noent:truecore/appHandler.js Found · blocks
appsecco/dvnaOpen redirect via res.redirect(req.query.url)core/appHandler.js Found · warning
appsecco/dvnaCode injection via mathjs.eval(req.body.eqn)core/appHandler.js Found · blocks
juice-shop/juice-shopSQL injection in login query template literalroutes/login.ts Found · blocks
juice-shop/juice-shopUnion SQL injection in product searchroutes/search.ts Found · blocks
juice-shop/juice-shopHardcoded RSA private key for JWT signinglib/insecurity.ts Found · blocks
juice-shop/juice-shopMD5 password hashinglib/insecurity.ts Found · blocks
juice-shop/juice-shopSSRF via fetch(user-supplied imageUrl)routes/profileImageUrlUpload.ts Found · blocks
WebGoat/WebGoatSQL injection: string-built query passed to Statement.executeQuerysrc/main/java/org/owasp/webgoat/lessons/sqlinjection/introduction/SqlInjectionLesson5a.java Found · blocks
WebGoat/WebGoatSQL injection in access_log searchsrc/main/java/org/owasp/webgoat/lessons/sqlinjection/introduction/SqlInjectionLesson10.java Found · blocks
WebGoat/WebGoatJava deserialization with ObjectInputStream.readObject on user datasrc/main/java/org/owasp/webgoat/lessons/deserialization/InsecureDeserializationTask.java Found · blocks
WebGoat/WebGoatXXE: XMLInputFactory without disabling external entitiessrc/main/java/org/owasp/webgoat/lessons/xxe/CommentsCache.java Found · blocks
OWASP/railsgoatSQL injection: User.where with interpolated paramsapp/controllers/users_controller.rb Found · blocks
OWASP/railsgoatMass assignment: params.require(:user).permit!app/controllers/users_controller.rb Found · blocks
OWASP/railsgoatCommand injection: system() with interpolated file nameapp/models/benefits.rb Found · blocks
OWASP/railsgoatInsecure deserialization: Marshal.load(params[:user])app/controllers/password_resets_controller.rb Found · blocks
OWASP/railsgoatStored XSS via html_safe on user first nameapp/views/layouts/shared/_header.html.erb Found · blocks
digininja/DVWASQL injection: $id interpolated into queryvulnerabilities/sqli/source/low.php Found · blocks
digininja/DVWACommand injection: shell_exec('ping ' . $target)vulnerabilities/exec/source/low.php Found · blocks
digininja/DVWAFile inclusion: include($file) from requestvulnerabilities/fi/index.php Found · blocks
digininja/DVWAReflected XSS: $_GET['name'] echoed into HTMLvulnerabilities/xss_r/source/low.php Found · blocks
digininja/DVWAUnrestricted file upload (no type/extension check)vulnerabilities/upload/source/low.php Found · blocks
adeyosemanputra/pygoatSQL injection: concatenated query passed to objects.rawintroduction/views.py Found · blocks
adeyosemanputra/pygoatInsecure deserialization: pickle.loads / yaml.load with yaml.Loaderintroduction/views.py Found · blocks
adeyosemanputra/pygoatCode injection: eval() on request valueintroduction/views.py Found · blocks
adeyosemanputra/pygoatSSRF: requests.get(request.POST["url"])introduction/views.py Found · blocks
adeyosemanputra/pygoatMD5 password hashingintroduction/views.py Found · blocks
anxolerd/dvpwaSQL injection: % string formatting in INSERTsqli/dao/student.py Found · blocks
anxolerd/dvpwaMD5 password hashingsqli/dao/user.py Found · blocks
anxolerd/dvpwaTemplate autoescaping disabled (autoescape=False)sqli/app.py Found · blocks
payatu/diva-androidSQL injection: search text concatenated into rawQueryapp/src/main/java/jakhar/aseem/diva/SQLInjectionActivity.java Found · blocks
payatu/diva-androidPassword stored in plaintext SharedPreferencesapp/src/main/java/jakhar/aseem/diva/InsecureDataStorage1Activity.java Found · blocks
dineshshetty/Android-InsecureBankv2Username and password written to LogcatInsecureBankv2/app/src/main/java/com/android/insecurebankv2/DoLogin.java Found · warning
dineshshetty/Android-InsecureBankv2Credentials in world-readable SharedPreferencesInsecureBankv2/app/src/main/java/com/android/insecurebankv2/MyBroadCastReceiver.java Found · blocks
prateek147/DVIA-v2Password saved to a plist in DocumentsDVIA-v2/DVIA-v2/Vulnerabilities/Insecure Data Storage/Controller/PListViewController.swift Found · blocks