Laboratorio 09: Auditoría de Seguridad con Bandit

Validación de que puedes auditar tu propio código, identificar vulnerabilidades reales de severidad HIGH y mitigarlas hasta que desaparezcan.

Objetivo del Laboratorio

Ejecutar Bandit sobre un script Python que simula la lógica de un Code Node inseguro, leer los warnings de severidad HIGH, aplicar las correcciones de sanitización y subprocess, y volver a auditar el mismo script corrigiendo las alarmas principales.

Configuración Técnica

El script vulnerable (crea automatizacion_insegura.py)

import os
import subprocess

# 1. Hardcoded secret (B105)
API_KEY = "sk-live-1234567890ABCDEF"

def procesar_lead(texto_cliente):
    # 2. Command injection: input del cliente concatenado
    comando = "grep -i " + texto_cliente + " /etc/passwd"
    os.system(comando)
    return "ok"
Problema Código Bandit Severidad esperada
Hardcoded password B105 HIGH
os.system con input B602 HIGH

Ejecución del Flujo

  1. Instala Bandit: pip install bandit
  2. Audita: bandit automatizacion_insegura.py — registra los hallazgos HIGH.
  3. Lee el reporte: para cada issue identifica línea, severidad y el vector de ataque.
  4. Corrige:
    1. API_KEY → os.environ["API_KEY"] (y créala en tu shell/env)
    2. os.system → subprocess.run(["grep", "-i", texto_cliente], capture_output=True) con lista de argumentos (sanitiza inyección).
  5. Re-audita: bandit automatizacion_segura.py — los HIGH deben desaparecer.
  6. Genera reporte JSON: bandit . -f json -o reporte.json
  7. Verifica además que tu panel de n8n tiene login activo (Módulo 14).
Hito Alcanzado

Sabes auditar tu propio código con herramientas industriales, explicar cada hallazgo y corregirlo. Cuando un cliente te pregunte "¿es seguro esto?", puedes responder con un reporte, no con una opinión.

Verificación final del laboratorio 09

Cuando hayas ejecutado la práctica, marca cada punto para confirmar que completaste el trabajo. Solo tú decides si estás listo — sé honesto contigo.

💡 Este botón desbloquea la siguiente puerta del Máster.