OWASP PyGoat

Django app demonstrating OWASP Top 10 vulnerabilities in Python.

Vulnerabilities brass detects

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

FileLineCategoryDetected byCWE / Bandit ID
introduction/views.py857hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798)
introduction/views.py859hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798)
introduction/views.py861hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798)
introduction/views.py863hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798)
introduction/views.py529hardcoded_credentialSecretsScannerHardcoded secret keyword in source (CWE-798)
introduction/views.py423command_injectionbanditOS Command Injection via subprocess shell=True (CWE-78, Bandit B602)
introduction/views.py1017weak_cryptobanditWeak Hash: MD5 (CWE-327, Bandit B324)

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
introduction/views.py421command_injectionOS Command Injection via subprocess shell taint
introduction/views.py155sql_injectionA01: SQL Injection via string concatenation
introduction/views.py211deserializationA08: Insecure Deserialization via pickle.loads
introduction/views.py451code_injectionA03: Insecure Design via eval()

Reproduce locally

git clone https://github.com/adeyosemanputra/pygoat.git project
cd project && git checkout c11e8429349cc05ff38564d3bf7ef09fb2411874
brasscoders --offline scan .

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