Uma pipeline “verde” não é uma pipeline governada, e a programação agentic está ampliando essa distância mais rápido do que a revisão consegue fechar.
Por Shane Warden, arquiteto principal da ActiveState
Em junho de 2026, pesquisadores da Novee Security divulgaram uma classe de fraqueza em CI/CD que batizaram de Cordyceps.
Eles analisaram cerca de 30.000 repositórios de alto impacto nos ecossistemas npm, PyPI, crates.io e Go, identificaram 654 casos suspeitos e confirmaram que mais de 300 eram totalmente exploráveis.
As ferramentas de build afetadas incluíam projetos publicados por Microsoft, Google, Apache, Cloudflare e pela Python Software Foundation.
Para um atacante, a exigência de entrada era mínima: uma conta gratuita no GitHub.
Nenhuma filiação à organização, nenhum privilégio elevado.
Todas aquelas pipelines estavam “verdes”.
Os scanners rodavam, as verificações passavam e os painéis exibiam resultados saudáveis durante todo o período em que a exposição existia.
O problema é que esses scanners nunca foram feitos para enxergar esse tipo de risco.
Fluxos de trabalho do GitHub Actions normalmente são acionados por pull_request, que executa no contexto não confiável do fork, sem segredos do repositório e com um token apenas de leitura.
O problema começa com pull_request_target e workflow_run, que rodam no contexto do repositório base, com acesso a segredos e a um GITHUB_TOKEN com leitura e escrita.
Um atacante pode induzir ambos a agir sobre conteúdo controlado por ele no pull request que os acionou.
O GitHub Security Lab chama isso de pwn request.
Três mecanismos causam o dano.
A injeção de comandos interpola dados controlados pelo atacante, como nome de branch, título ou comentário, diretamente em uma etapa de execução, fazendo com que o conteúdo chegue sem escape a um comando de shell e seja executado.
A injeção de código via actions/github-script avalia a entrada do atacante como JavaScript em tempo de execução.
Já a escalada de privilégio entre fluxos de trabalho permite que um fluxo de baixa permissão grave dados não confiáveis em um artefato ou saída, que depois são lidos por um segundo fluxo, com privilégios mais altos, que então age com o token do mantenedor.
Nenhum dos dois fluxos é explorável isoladamente.
A vulnerabilidade existe por causa da forma como eles se conectam, e é exatamente por isso que os scanners continuam verdes.
Uma ferramenta de SAST ou DAST procura padrões em um arquivo por vez, e aqui cada arquivo é um YAML válido, bem formado, fazendo exatamente o que lhe foi pedido.
“Um scanner vê um fluxo de trabalho.
Um atacante vê uma cadeia de quatro etapas até uma credencial permanente”, explica Warden.
Não há uma única linha para sinalizar, porque não existe uma única linha errada.
Essa é a pior forma de falha de medição, porque uma luz vermelha faz alguém procurar o problema, enquanto uma luz verde manda todo mundo para casa.
No repositório Azure Sentinel da Microsoft, a Novee mostrou que um comentário em um pull request podia executar código anônimo do atacante no CI da Microsoft e roubar uma chave do GitHub App sem expiração, algo confirmado pelo Microsoft Security Response Center.
O Sentinel é o SIEM da Microsoft, e o Content Hub distribui regras de detecção e playbooks automatizados diretamente para os espaços de trabalho dos clientes.
Uma chave roubada nesse contexto oferece acesso de escrita persistente ao conteúdo de segurança do qual milhares de organizações dependem para detectar ataques, enfraquecendo silenciosamente essas defesas e empurrando o problema para a cadeia de distribuição como se fosse uma atualização confiável.
O repositório de exemplo do AI Agent Development Kit do Google é uma referência que milhares de desenvolvedores copiam ao criar agentes no Google Cloud.
Um único pull request poderia executar código no CI do Google e elevar privilégios até roles/owner no projeto associado do Google Cloud, obtendo acesso permanente de proprietário, algo confirmado pelo Google.
O Apache Doris tinha um caminho comparável para roubo de credenciais, confirmado e corrigido pela Apache Security Team.
Três organizações, um único problema de composição e nenhuma linha de código que um scanner conseguisse apontar.
A expressão que deveria parar um líder de engenharia é “fronteira de confiança que ninguém auditou”.
Alguém configurou um fluxo de trabalho para tratar a entrada de um externo como se viesse de um mantenedor.
Nenhum humano tomou essa decisão de propósito.
Esse risco foi se acumulando, commit a commit, de forma aparentemente razoável, e cresce com fluxos de trabalho gerados por IA, em que o momento da decisão pode nunca ser auditado.
Já coloquei ferramentas de IA em produção para tarefas de engenharia e medi o que elas mudaram.
Então digo com clareza: o ganho é real, e isso não significa defender uma desaceleração desse avanço.
Mas a Novee é explícita ao dizer que a programação agentic é o multiplicador.
Ferramentas de IA geram configurações de CI/CD rapidamente e reproduzem os mesmos padrões inseguros.
Assim, um único erro se multiplica por potencialmente milhões de repositórios, emitido com confiança e sem sinal de procedência.
O volume de decisões de fluxos de trabalho que uma organização precisa absorver já superou o ritmo de um processo de revisão dimensionado para produção em velocidade humana.
Nossos sistemas padrão de segurança também não estão prontos para isso.
Cordyceps não é uma CVE, então nunca entra no modelo de enumeração.
Além disso, o NIST reconheceu em abril de 2026 que já não consegue enriquecer todas as CVEs, após um aumento de 263% nas submissões desde 2020.
Os riscos estão se multiplicando.
Felizmente, a Novee não encontrou evidências de exploração em ambiente real, e os fornecedores citados já reforçaram as defesas ou aplicaram patches.
Ainda assim, trata-se de um padrão comprovadamente explorável, não de uma falha isolada específica, e ele segue amplamente sem correção por padrão em toda a indústria.
As correções imediatas valem a pena agora: prefira pull_request em vez de pull_request_target para contribuições não confiáveis, nunca faça checkout do código do head do pull request dentro de um fluxo de trabalho privilegiado, passe os dados do evento por uma variável de ambiente entre aspas em vez de inseri-los diretamente no código, adote permissões padrão somente de leitura, fixe ações de terceiros em um commit SHA em vez de uma tag móvel e exija aprovação manual em fluxos privilegiados para contribuidores de primeira viagem.
Faça tudo isso e você terá fechado os problemas de hoje, mas não a classe de problemas.
O próximo padrão será construído a partir de etapas individualmente corretas, e também passará no scanner.
O desenvolvimento orientado por IA está ampliando essa lacuna de governança na supply chain de software, e isso está acelerando.
O controle duradouro é governar, na origem, o que seu build pode confiar, para que os componentes e fluxos de trabalho que entram na sua pipeline venham de uma origem governada, com procedência verificável, construídos a partir do código-fonte em vez de confiados por fé.
Um upstream sequestrado, que publique um pacote envenenado, precisa passar e falhar por uma verificação no ponto de ingestão.
Um ser humano precisa ser o dono das fronteiras de confiança.
Essa responsabilidade precisa operar na mesma velocidade em que a IA já está gerando decisões, porque a revisão manual no fim da pipeline não consegue mais acompanhar.
Cordyceps não derrotou as ferramentas de segurança de ninguém.
Ela simplesmente passou por elas, porque cada parte individual funcionava exatamente como projetada.
Esse é o erro de medição em sua forma mais pura: o número continuou verde enquanto aquilo que deveria garantir segurança já não era verdadeiro, se é que algum dia foi.
Essas pipelines não estavam expostas porque os scanners falharam.
Elas estavam expostas porque passar no scanner não significava que elas eram governadas.
Por um tempo, ninguém foi procurar.
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...