Radar Tech: o PR que a IA aprovou (e a IA que o derrubou) — patch co-gerado por Copilot reintroduz injeção em CI/CD
Um PR co-gerado por GitHub Copilot Autofix trocou um padrão seguro de CI/CD por interpolação insegura, passou por GitHub Advanced Security e por um gate degenerado — e o Wiz Red Agent explorou tudo sozinho em 5 dias. O resumo do caso e a lição de arquitetura.
Radar Tech: o PR que a IA aprovou (e a IA que o derrubou)
Cadeia real: um patch co-gerado por Copilot reintroduziu uma injeção em CI/CD que passou por scans e foi explorada por um agente autônomo em 5 dias.
Na última janela de 24h, a discussão mais quente de segurança na comunidade foi a divulgação, pela Wiz, de um caso que sintetiza a nova realidade da engenharia de software: agentes de IA escrevendo código, revisores buscando automação, e nem humanos nem scanners estáticos pegaram o bug que um robô de segurança derrubou sozinho.
Em 18 de junho de 2026, um pull request no repositório público
snowflakedb/snowflake-connector-net — cujo código-fonte contava com a
co-autoria do GitHub Copilot Autofix — foi mesclado. O PR modernizava os
workflows de integração com a Jira interna. No caminho, algo aparentemente
inofensivo aconteceu: o padrão seguro que usava env: + jq --arg para levar o
título de uma issue até um script foi trocado por interpolação direta do
título dentro de um run:.
O resultado é a classe de bug mais perigosa do CI moderno: injeção de script via input não-confiável. Qualquer pessoa no GitHub podia abrir uma issue e, no título, esconder um payload que quebrava o shell do runner — com acesso ao token da Jira da empresa.
O que mais passou batido
Três camadas de proteção falharam ao mesmo tempo:
- GitHub Advanced Security extraiu o workflow vulnerável na última revisão do PR, mas não sinalizou a injeção. Serve de lembretrete: scan estático que "passa" não é prova de segurança.
- O security gate do workflow comparava
github.event.pull_request.user.login— mas um campo que énullem eventos de issue. A condição degenerou emnull != 'bot'= sempre verdadeira para qualquer usuário. - O escaping com
sedrodava depois da expansão dos templates do GitHub Actions, então a proteção era ilusória: a expansão${{ }}acontece antes de o script chegar ao shell.
O agente que aprendeu com o próprio erro
Foi aí que entrou o Wiz Red Agent: um pesquisador de segurança totalmente
autônomo. Cinco dias depois de o bug ficar live, ele abriu uma issue com um
título-camada de payload que exfiltrava o token da Jira via um callback
out-of-band. Na primeira tentativa, um # usado para "comentar" a linha comeu
o fechamento do $(...) e o shell acusou erro de sintaxe. Em vez de parar, o
agente analisou o erro, adaptou o payload (; echo ' para fechar o bloco)
e completou a exploração em segundos — entregando credenciais da Jira
interna (engenharia, segurança e bug bounty da Snowflake) a um listener externo.
A Snowflake foi notificada via HackerOne em 23 de junho, corrigiu no mesmo dia, rotacionou a credencial e confirmou por auditoria que o Wiz foi o único ator na janela de 5 dias. Reconhecimento responsável, execução impecável. Mas o recado ficou.
O que isso significa para arquitetura
Este incidente não é sobre a Wiz nem a Snowflake — é sobre processo. Três verdades de arquitetura de segurança:
- Código gerado por IA precisa do mesmo rigor de revisão que código humano — e, dado o histórico, de um pouco mais. A IA reescreve para "simplicidade" e pode descartar, sem saber, a proteção que o padrão original carregava.
- Regressão safe→unsafe é a vulnerabilidade invisível. Ela não aparece em um diff de feature chamativo; aparece na substituição de um padrão defensivo por um enxuto. Precisamos de revisores que comparem estado novo vs. estado anterior do arquivo, não só que leiam o diff.
- Scans e gates são insumos, não garantias. Quem trata "passou no scan"
como "está seguro" está contando com uma aposta perdida. O padrão seguro de
gate/parsing (levar o dado por
env:e consumir comjq/parsing) precisa virar convenção de review.
Um pack de prompt para conter essa classe de bug
Reunimos tudo isso em um pacote de 5 arquivos: um harness de revisão de
segurança para patches gerados por IA, que transforma GPT-4, Claude ou Gemini
em um revisor conservador e evidência-driven — capaz de pegar injeção de input
em run:, regressão safe→unsafe, gates degenerados e falsos "all clear" dos
scanners, entregando um veredito JSON + ADR de decisão prontos para travar o
merge no CI. Disponível no catálogo, na categoria Security.
Porque, neste trimestre, o adversário mais rápido não é humano — é outro agente. E o nosso safety layer precisa ser, no mínimo, igualmente rápido.
Radar Tech: o resumo rápido dos tópicos de tecnologia mais comentados nas últimas 24h.