OWASP NodeGoat

Express + MongoDB app demonstrating OWASP Top 10 vulnerabilities in Node.js.

  • Upstream: https://github.com/OWASP/NodeGoat
  • Pinned commit: c5cb68a7084e4ae7dcc60e6a98768720a81841e8
  • Reference: master HEAD 2026-05-17
  • Baseline scan date: 2026-05-17

Vulnerabilities brass detects

These are the specific lines brass catches in this codebase. Re-running brass at the pinned commit reproduces each one. 8 required findings:

FileLineCategoryDetected byCWE / Bandit ID
app/routes/contributions.js32code_injectionJavaScriptTypeScriptScannerServer-Side JS Injection via eval() (CWE-95)
app/routes/contributions.js33code_injectionJavaScriptTypeScriptScannerServer-Side JS Injection via eval() (CWE-95)
app/routes/contributions.js34code_injectionJavaScriptTypeScriptScannerServer-Side JS Injection via eval() (CWE-95)
artifacts/db-reset.js18hardcoded_credentialJavaScriptTypeScriptScannerHardcoded Credentials (CWE-798)
artifacts/db-reset.js27hardcoded_credentialJavaScriptTypeScriptScannerHardcoded Credentials (CWE-798)
artifacts/db-reset.js35hardcoded_credentialJavaScriptTypeScriptScannerHardcoded Credentials (CWE-798)
app/routes/session.js61hardcoded_credentialSecretsScannerHardcoded Credentials (CWE-798)
app/routes/session.js172hardcoded_credentialSecretsScannerHardcoded Credentials (CWE-798)

Documented vulnerabilities brass doesn’t yet catch

Honest list of gaps — vulnerabilities documented upstream but missed by brass’s current scanner set. We publish these so customers see the full picture, not just successes. 4 aspirational entries:

FileLineCategoryWhat brass doesn’t catch yet
app/data/allocations-dao.js73nosql_injectionA1: NoSQL Injection via $where with template literal
app/data/allocations-dao.js78nosql_injectionA1: NoSQL Injection via $where with string concat
app/routes/research.js15ssrfA8/A9: SSRF via needle.get(req.query.url)
app/routes/research.js25xssA7: Reflected XSS via res.write of remote body

Reproduce locally

git clone https://github.com/OWASP/NodeGoat.git project
cd project && git checkout c5cb68a7084e4ae7dcc60e6a98768720a81841e8
brasscoders --offline scan .

Then check .brass/detailed_analysis.yaml for the listed findings.