O Que É Pipeline Poisoning? Adulterar o Próprio Build
Pipeline poisoning é qualquer ataque que faz seu pipeline de CI/CD executar código que o atacante controla, transformando seu build confiável em ferramenta dele.
Seu pipeline é confiável: ele detém secrets, assina releases e faz deploy em produção. O pipeline poisoning subverte essa confiança ao contrabandear instruções controladas pelo atacante para dentro do build. Uma vez que o pipeline as executa, o atacante herda tudo o que o pipeline pode fazer. É um dos ataques de maior alavancagem na entrega de software moderna.
Por onde o veneno entra
- Uma definição de workflow ou pipeline modificada em um pull request.
- Uma dependência maliciosa puxada durante o build.
- Uma action de terceiros ou biblioteca compartilhada comprometida.
- Um build script ou Makefile adulterado.
Poisoning direto vs indireto
O poisoning direto edita a própria definição do pipeline. O poisoning indireto deixa o pipeline intacto mas corrompe algo que ele executa: uma dependência, um script ou uma ferramenta. Ataques indiretos são mais sorrateiros porque o arquivo de pipeline parece intocado.
O ângulo do pull request
Uma variante particularmente perigosa roda as mudanças de um contribuidor com secrets completos antes de serem revisadas. O atacante submete um PR que altera o build para roubar credenciais ou injetar um backdoor, e o pipeline obedientemente o roda. Esse é o padrão de poisoned pipeline execution.
Defendendo o pipeline
Exija revisão em mudanças de pipeline, rode PRs não confiáveis sem secrets, fixe dependências e actions em versões exatas ou digests e aplique menor privilégio para que uma execução envenenada faça menos. Trate a definição do pipeline como código de produção sujeito aos mesmos controles.
Contendo uma execução envenenada
Mesmo um job envenenado deve ficar encaixotado. Runners isolados e efêmeros impedem que um build comprometido toque outros jobs ou persista no host, e a filtragem de egress o impede de telefonar para casa. O raio de dano permanece dentro do único ambiente descartável.
Principais conclusões
- Pipeline poisoning faz um pipeline de CI/CD confiável rodar código controlado pelo atacante.
- Pode ser direto (editando o pipeline) ou indireto (corrompendo o que ele roda).
- Revisão, fixação de dependências, menor privilégio e isolamento são as defesas centrais.