PyCQA Bandit examples/

PyCQA Bandit’s own regression corpus — one Python file per Bandit security rule.

  • Upstream: https://github.com/PyCQA/bandit
  • Pinned commit: 92ae8b82fb422a639f0ed8d99e96cea769594e08
  • Reference: 1.9.4 release tag
  • 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. 23 required findings:

FileLineCategoryDetected byCWE / Bandit ID
hardcoded-passwords.py4hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798, Bandit B105)
hardcoded-passwords.py8hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798, Bandit B107)
hardcoded-passwords.py38hardcoded_credentialauth_pattern_analyzerHardcoded Credentials (CWE-798, Bandit B105)
sql_statements.py17sql_injectioninput_validation_analyzerSQL Injection via string formatting (CWE-89, Bandit B608)
sql_statements.py18sql_injectioninput_validation_analyzerSQL Injection via string formatting (CWE-89, Bandit B608)
sql_statements.py19sql_injectioninput_validation_analyzerSQL Injection via string formatting (CWE-89, Bandit B608)
crypto-md5.py13weak_cryptoAstGrepScanner / banditWeak Hash: MD5 (CWE-327, Bandit B324)
flask_debug.py10security_misconfigurationbanditFlask debug mode enabled (CWE-489, Bandit B201)
jinja2_templating.py9xssbanditJinja2 autoescape disabled (CWE-79, Bandit B701)
requests-ssl-verify-disabled.py6insecure_transportbanditSSL cert verification disabled (CWE-295, Bandit B501)
ssl-insecure-version.py6insecure_transportbanditInsecure TLS protocol (CWE-327, Bandit B502)
no_host_key_verification.py8insecure_authenticationbanditParamiko AutoAddPolicy (CWE-295, Bandit B507)
os-chmod.py6insecure_permissionsbanditWorld-writable chmod (CWE-732, Bandit B103)
tarfile_extractall.py8path_traversalbandittarfile.extractall without filter (CWE-22, Bandit B202)
weak_cryptographic_key_sizes.py5weak_cryptobanditWeak RSA/DSA key size (CWE-326, Bandit B505)
dill.py6deserializationbanditUnsafe pickle/dill deserialization (CWE-502, Bandit B301)
jsonpickle.py6deserializationbanditUnsafe jsonpickle deserialization (CWE-502, Bandit B301)
eval.py3code_injectionbanditUse of eval (CWE-95, Bandit B307)
exec.py1code_injectionbanditUse of exec (CWE-95, Bandit B102)
binding.py4insecure_bindingbanditBind to 0.0.0.0 / all interfaces (CWE-200, Bandit B104)
hardcoded-tmp.py1insecure_tempfilebanditHardcoded /tmp path (CWE-377, Bandit B108)
subprocess_shell.py11command_injectionbanditsubprocess Popen with shell=True (CWE-78, Bandit B602)
assert.py1assert_in_productionbanditassert in non-test code (CWE-617, Bandit B101)

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. 0 aspirational entries:

None — full upstream coverage.

Reproduce locally

git clone https://github.com/PyCQA/bandit.git project
cd project && git checkout 92ae8b82fb422a639f0ed8d99e96cea769594e08
brasscoders --offline scan .

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