Pular para o conteúdo principal
Fechar
Segurança

Claude Code na Pipeline: O Buraco Estrutural e a Rule of Two

Gabriel Ferraresi· CEO | Tech866 de junho de 20265 min
claude codeci/cdprompt injectionsegurançagithub actions

A Anthropic colocou um agente de IA com acesso a secrets na sua pipeline CI/CD. A Microsoft mostrou como roubar tudo em dois passos. Não é hipótese — é vulnerabilidade estrutural documentada, com proof-of-concept funcional e 50 bypasses no permission system. Na Tech86, vimos incidentes de prompt injection em agentes de IA crescerem exponencialmente este ano. O caso do Claude Code GitHub Action é o mais revelador porque o problema não é um bug — é o design.

Dois caminhos, um sem sandbox

O Claude Code tem dois caminhos de execução. O Bash tool roda em sandbox Bubblewrap com environment scrubbing — a variável CLAUDE_CODE_SUBPROCESS_ENV_SCRUB remove credenciais do ambiente antes da execução. O Read tool, que lê arquivos, não tinha sandbox. A chamada é in-process, direta, bypassando o Bubblewrap completamente.

O resultado: o Read tool acessava /proc/self/environ e lia ANTHROPIC_API_KEY em texto claro. O sandbox que protegia o Bash era irrelevante para o Read. A Anthropic protegeu a porta da frente e deixou a janela aberta.

Mas ler a chave é só metade do problema. A Microsoft construiu um payload que derrotou duas defesas simultaneamente.

Os dois passos da Microsoft — derrotando filtro e scanner

O primeiro obstáculo: o filtro do Claude recusa imprimir chaves que começam com sk-ant-. O payload instrui o modelo: "corte os primeiros 7 caracteres da chave". O LLM obedece, emitindo a chave sem o prefixo. A saída passa pelo filtro porque não contém o padrão bloqueado.

O segundo obstáculo: o GitHub Secret Scanner redacta padrões conhecidos no stdout. Mas como o LLM modificou a chave antes da emissão — removendo o prefixo — o scanner não detectou. O texto que chega ao log não é uma chave válida. O atacante reconstrói a chave completa prependando sk-ant- do lado de fora.

Exfiltração via WebFetch, Bash, GitHub MCP, ou logs da Action. Qualquer canal de saída do agente funciona. A Microsoft provou que duas camadas de defesa — filtro do modelo e scanner de plataforma — são derrotadas quando o atacante controla o que o modelo emite.

RyotaK: 50 bypasses e o bot que virou admin

Em 1 de junho, RyotaK da GMO Flatt Security publicou 50 bypasses no permission system do Claude Code. O mais impactante: um bot falso com nome terminando em [bot] bypassou o permission check. A Action auto-confia qualquer GitHub App — sem validação de identidade.

Com esse bypass, exfiltrou OIDC tokens e obteve installation token com escrita total no repositório. Se o ataque fosse direcionado ao próprio repositório da Anthropic, envenenaria a Action usada por milhares de projetos. Supply chain attack em escala, sem tocar em um único pacote npm.

O exemplo oficial da Anthropic vinha com allowed_non_write_users: "*". Muitos copiaram. Qualquer usuário não-write tinha acesso total. Em fevereiro, ataque similar no Cline roubou npm publish token e empurrou @openclaw/cli não autorizado. 4 mil desenvolvedores afetados em 8 horas. Corrigido na v1.0.94. CVSS 7.8. Bounty de 4.800 dólares.

Comment and Control: o mesmo padrão em três agentes

Pesquisadores da Johns Hopkins documentaram em abril o padrão "Comment and Control": o mesmo vetor de ataque funciona no Claude Code, no Gemini CLI Action e no Copilot Agent. Todos vulneráveis.

No Copilot Agent, comentários HTML ocultos — invisíveis para humanos na interface do GitHub — continham instruções codificadas em base64 que bypassaram o secret scanner. Exfiltração via git push para um repositório controlado pelo atacante. O agente lê o comentário, decodifica a instrução, executa e envia os dados para fora.

Claude Code: CVSS 9.4 Critical. Anthropic rebaixou para "None". Bounty de 100 dólares. Para contexto: Google pagou 1.337 dólares pelo mesmo tipo de vulnerabilidade no Gemini. GitHub pagou 500 pelo Copilot. A Anthropic pagou 100 e classificou como inexistente. Rebaixar CVSS 9.4 para "None" com bounty de 100 dólares envia o sinal errado para pesquisadores e para a indústria.

A Agents Rule of Two — o princípio que faltava

A Microsoft formulou a "Agents Rule of Two": um workflow de IA nunca deve ter os três simultaneamente — processamento de input não confiável, acesso a secrets via tools, e capacidade de comunicar externamente. Se dois já existem, o terceiro não pode ser adicionado.

Isso é fundamental porque prompt injection não é um bug do modelo — é contexto que o agente foi projetado para processar. PR titles e issue comments são dados legítimos do SDLC que o agente precisa ler. O atacante sequestra o contexto dentro dos limites do workflow pretendido. Não há patch para "o agente lê o que deveria ler".

Estamos entrando numa era onde linguagem natural é código executável, e inputs não confiáveis como GitHub issues devem ser tratados como hostis por padrão. A Rule of Two é o Principle of Least Privilege aplicado a agentes autônomos: se o agente precisa ler issues, não dê acesso a secrets. Se precisa de secrets, não permita comunicação externa. Se precisa comunicar, não processe input não confiável.

Na Tech86, aplicamos esse princípio em toda integração de IA em CI/CD. Auditamos workflows, isolamos tools com acesso a credenciais, e tratamos todo input do SDLC como não confiável. Se seu time usa agentes de IA em pipelines sem essa separação, o ataque da Microsoft não é um cenário hipotético — é o próximo incidente.

Interessado nesta solução?

Conheça nossos serviços gerenciados e infraestrutura.

Conheça Segurança Ofensiva

Perguntas Frequentes

O Claude Code tem dois caminhos de execução: o Bash tool roda em sandbox Bubblewrap com environment scrubbing, mas o Read tool faz chamada in-process direta sem sandbox. Isso permite ler /proc/self/environ e acessar ANTHROPIC_API_KEY em texto claro. O sandbox protegeu o Bash, mas não protegeu o Read.

Passo 1: o filtro do Claude recusa imprimir chaves começando com 'sk-ant-'. O payload instrui o modelo a cortar os primeiros 7 caracteres, lavando a saída antes da emissão. Passo 2: o GitHub Secret Scanner redacta padrões conhecidos, mas como o LLM modificou a chave antes do stdout, o scanner não detectou. O atacante reconstrói prependando 'sk-ant-'.

Um workflow de IA nunca deve ter três capacidades simultaneamente: processamento de input não confiável, acesso a secrets via tools, e capacidade de comunicar externamente. Se dois já existem no workflow, o terceiro não pode ser adicionado. É o equivalente ao Principle of Least Privilege para agentes autônomos.

50 bypasses no permission system. Um bot falso com nome terminando em [bot] bypassou o permission check. A Action auto-confia qualquer GitHub App. Exfiltrava OIDC tokens e obtinha installation token com escrita total no repo. Se mirado no repo da Anthropic, envenenaria a Action usada por milhares de projetos.

Pesquisadores da Johns Hopkins (abril de 2026) documentaram o mesmo padrão de ataque em três agentes: Claude Code, Gemini CLI Action e Copilot Agent. No Copilot Agent, comentários HTML ocultos invisíveis para humanos com base64 bypassaram o secret scanner. Exfiltração via git push. Claude Code: CVSS 9.4 Critical. Anthropic rebaixou para 'None' com bounty de 100 dólares.

Blog — Fale Conosco

Tem alguma pergunta sobre nossos artigos ou serviços? Nossa equipe está pronta para ajudar.

Agendar Reunião

Reserve um horário.

Agendar Agora

E-mail

Envie uma mensagem.

[email protected]

WhatsApp

Conversa rápida.

Endereço

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Especialista Tech86

Online agora

Olá! Como podemos ajudar a escalar seu negócio hoje?

Tech86 Engineering

Nós valorizamos sua privacidade

Utilizamos cookies e tecnologias similares para otimizar a sua experiência, analisar o tráfego do site e personalizar conteúdo. Ao clicar "Aceitar Todos", você concorda com o uso de todos os cookies. Leia nossa Política de Privacidade.