A Falha que uma Constante de 50 Criou no Claude Code da Anthropic
Há um tipo de vulnerabilidade que é particularmente desconcertante quando aparece em software de segurança: aquela que não exige sofisticação técnica do atacante, apenas o conhecimento de um limite arbitrário definido no código. A falha descoberta no Claude Code da Anthropic em abril de 2026 se encaixa precisamente nessa categoria. Cinquenta subcomandos em um shell. Esse era o número mágico que desativava silenciosamente todas as regras de segurança que um desenvolvedor havia configurado para proteger seu ambiente.
A vulnerabilidade, classificada como de alta gravidade e já corrigida na versão 2.1.90, foi descoberta pela empresa de segurança israelense Adversa AI depois que o código-fonte completo do Claude Code vazou acidentalmente via npm no final de março. O que o código exposto revelou foi simultaneamente a falha e o fato de que os engenheiros da Anthropic já sabiam dela e haviam construído uma correção que nunca chegou à produção.
Como o Ataque Funcionava na Prática
O mecanismo técnico é elegante em sua simplicidade. No arquivo bashPermissions.ts do sistema de permissões do Claude Code, havia uma constante: MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50. Quando um comando shell superava esse número de subcomandos encadeados por operadores como &&, || ou ;, o agente parava completamente de avaliar as regras de negação configuradas pelo desenvolvedor e recorria a um prompt genérico ao usuário que podia ser aprovado automaticamente.
A prova de conceito demonstrada pela Adversa AI dispensava qualquer técnica avançada: um comando curl explicitamente bloqueado por uma regra de negação do desenvolvedor era executado sem restrições quando precedido por 50 instruções true sem operação. O próprio Claude Code reconhecia no prompt que o comando continha “subcomandos demais para verificar a segurança individualmente” e então se oferecia para executá-lo de qualquer forma.
O Vetor de Ataque Mais Preocupante: Repositórios Armadilhados
A exploração prática não dependia de acesso ao ambiente da vítima. Um atacante poderia publicar um repositório GitHub com aparência completamente legítima contendo um arquivo de configuração CLAUDE.md com mais de 50 etapas realistas de build e um comando de exfiltração de credenciais oculto na posição 51 ou posterior. Quando um desenvolvedor clonasse o repositório e pedisse ao Claude Code para executar o processo de build, chaves SSH, credenciais AWS e tokens de API poderiam ser roubados silenciosamente, sem que qualquer regra de segurança fosse acionada e sem que o desenvolvedor recebesse qualquer aviso relevante.
Desenvolvedores executando o Claude Code em pipelines de CI/CD ou usando a flag --dangerously-skip-permissions enfrentavam o risco mais elevado: nesses contextos, a aprovação automática que o sistema recaia como fallback significava execução direta sem intervenção humana de nenhum tipo.
O Vazamento que Tornou a Descoberta Possível
A trajetória da descoberta expõe uma cadeia de eventos que a Anthropic preferiria que não tivesse acontecido. Em 31 de março, a versão 2.1.88 do pacote npm @anthropic-ai/claude-code foi publicada com um source map de depuração incluído acidentalmente, expondo mais de 512.000 linhas de código TypeScript através do registro público. Foi o segundo episódio desse tipo em pouco mais de um ano.
A equipe red team da Adversa AI analisou o código vazado e encontrou dois elementos reveladores em conjunto. Primeiro, a constante MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50 e a lógica de fallback associada, que confirmavam a vulnerabilidade. Segundo, e mais significativo: um novo parser baseado em tree-sitter que verificava regras de negação independentemente do comprimento do comando já estava construído no código, mas nunca havia sido implantado na versão pública do produto.
Um ticket interno designado CC-643 documentava o trade-off original que levou à constante de 50: verificar cada subcomando individualmente estava travando a interface e consumindo recursos computacionais. Os engenheiros limitaram a análise como solução de performance. A correção posterior existia no código, mas nunca chegou à produção antes do vazamento tornar a falha pública.
O Patch e o Silêncio da Anthropic
A Anthropic lançou o Claude Code v2.1.90 restaurando a aplicação adequada das regras de negação. A Adversa confirmou a correção. O que a Anthropic não fez foi reconhecer publicamente a vulnerabilidade pelo nome. A descrição interna do problema, conforme revelada à Adversa, era “degradação de regra de negação em caso de falha de análise”, uma formulação técnica precisa que dificilmente apareceria em comunicados voltados ao público geral.
Esse silêncio é em si uma decisão com implicações. Desenvolvedores que executavam o Claude Code em pipelines automatizados entre as versões 2.1.88 e 2.1.90 não têm como saber, a partir de comunicados oficiais, se seus ambientes foram expostos durante esse período. A ausência de um CVE ou comunicado formal deixa a avaliação de risco inteiramente nas mãos de quem acompanhou a cobertura da Adversa.
A Tensão Estrutural que o Episódio Expõe
O caso do Claude Code não é apenas uma história sobre uma falha específica corrigida. É um caso de estudo sobre uma tensão que afeta toda a indústria de agentes de IA: a segurança tem custo computacional real, e esse custo pressiona engenheiros a fazer trade-offs que criam superfícies de ataque.
Como a Adversa argumentou em seu relatório, cada verificação de regra de negação, cada validação de permissão, cada aplicação de limite de sandbox representa custo de inferência. Para ferramentas que precisam ser rápidas e responsivas, especialmente em fluxos de trabalho interativos onde latência é perceptível, a tentação de limitar verificações custosas é permanente.
A constante MAX_SUBCOMMANDS = 50 não foi um descuido. Foi uma decisão explícita documentada internamente, com justificativa técnica legítima. O problema é que decisões de performance em sistemas de segurança criam fronteiras que atacantes podem encontrar e explorar. Quando o limite é uma constante hardcoded em código que eventualmente vaza, a fronteira se torna pública.
Para desenvolvedores que usam ferramentas de IA agêntica em ambientes de produção, o episódio reforça uma posição de segurança que muitos já adotam mas poucos articulam formalmente: tratar qualquer agente de IA com acesso ao shell como um componente de alta confiança que requer o mesmo nível de auditoria de segurança que qualquer outro software com acesso privilegiado ao sistema. As regras de negação são a última linha de defesa, e quando elas falham silenciosamente, o ambiente inteiro é o perímetro.