bandit_pip_audit
Bandit analiza el código Python en busca de patrones de código inseguro (SQL injection via f-strings, uso de eval, algoritmos criptográficos débiles). pip-audit escanea las dependencias instaladas contra bases de datos de CVEs (PyPI Advisory Database, OSV).
When to use
Ejecutar en pre-commit hooks y en CI. Un CVE crítico en una dependencia o un subprocess(shell=True) deben bloquear el merge.
Instructions
- Instalar:
pip install bandit pip-audit - Ejecutar bandit:
bandit -r backend/ -ll -x backend/tests/-ll= reportar solo severidad MEDIUM y HIGH.-x backend/tests/= excluir tests (usanassertque bandit marca como warning).
- Configurar
.banditen raíz:[bandit] exclude_dirs = ["tests", "migrations"] skips = ["B101"] # skip assert_used en tests - Ejecutar pip-audit:
pip-audit -r requirements.txt --format=json --output=audit-report.json - En CI, fallar si hay vulnerabilidades de severidad CRITICAL o HIGH:
pip-audit -r requirements.txt --severity HIGH --fail-on-severity HIGH - Añadir en pre-commit hooks (ver skill
pre_commit_hooks).
Notes
- Bandit detecta patrones como:
pickle.loads()(deserialization),hashlib.md5()(weak hash),random.random()(en lugar desecrets.token_hex()para tokens). pip-auditcomplementa a Trivy (que escanea imágenes) — pip-audit es más rápido en CI porque no requiere build de imagen.- Actualizar dependencias vulnerables tan pronto como haya parche disponible — documentar en el ADR si hay motivo para no actualizar.