Para: quem executa o Trivy (escaner de vulnerabilidades de contêineres e dependências), aquasecurity/trivy-action ou aquasecurity/setup-trivy no CI, como o GitHub Actions, e quem usa binários ou imagens de contêiner do Trivy em uma estação de trabalho ou servidor.
Este artigo é baseado no comunicado oficial da Aqua Security e no aviso de segurança do Trivy e não aborda técnicas de ataque nem valores de indicadores de comprometimento (IoC).
O que os usuários de CI devem fazer hoje
Verifique se algum workflow relacionado ao Trivy foi executado nas janelas afetadas
A Aqua pede que os usuários revisem os logs de execução dos workflows de 19–20 de março de 2026. As janelas do aviso (UTC) são:
- trivy-action: aproximadamente 17:43 de 19 de março a aproximadamente 05:40 de 20 de março
- setup-trivy: aproximadamente 17:43 a aproximadamente 21:44 de 19 de março
- Trivy v0.69.4: 18:22 a aproximadamente 21:42 de 19 de março
- Imagens do Docker Hub v0.69.5 e v0.69.6: 15:43 de 22 de março a aproximadamente 01:40 de 23 de março
Se a sua organização tem muitos workflows, pesquise aqueles que referenciam aquasecurity/trivy-action e aquasecurity/setup-trivy e filtre o histórico de execuções por essas janelas.
Decida pela forma como você referenciou o componente, e não apenas pela versão
No aviso, o que importa é como você referenciou o componente.
- trivy-action — afetada: qualquer tag diferente de 0.35.0 (0.0.1–0.34.2);
version: latestdefinido explicitamente durante a janela; fixação por SHA em um commit anterior a 9 de abril de 2025. Não afetada: a tag 0.35.0; fixações por SHA em commits seguros posteriores a 9 de abril de 2025. - setup-trivy — afetada: qualquer uso sem fixação por SHA. Não afetada: fixações por SHA em commits seguros.
- Trivy em si — afetado: v0.69.4 (incluindo
latestdurante a janela; GitHub, deb, rpm, get.trivy.dev, GHCR, ECR Public, Docker Hub) e Docker Hub v0.69.5 e v0.69.6. Não afetados: v0.69.3 e anteriores; imagens referenciadas por digest; builds a partir do código-fonte; a fórmula oficial do Homebrew.
Se foi afetado, rotacione todos os segredos que o job podia ler
A Aqua diz que, se houver qualquer possibilidade de uma versão comprometida ter sido executada, todos os segredos acessíveis aos pipelines afetados devem ser considerados expostos: credenciais de nuvem (AWS, GCP, Azure), credenciais do Git, credenciais de registro de contêineres, chaves SSH, tokens do Kubernetes, variáveis de ambiente e outros segredos de automação.
Ela pede que os tokens de publicação do npm sejam tratados como ativamente comprometidos, afirmando que tokens roubados estão sendo usados para espalhar malware pelo npm. Para runners auto-hospedados, a Aqua também lista credenciais de banco de dados, chaves privadas TLS e configurações de VPN armazenadas no runner.
Invalide primeiro todas as chaves antigas e depois emita novas em conjunto
Esta etapa decorre da causa raiz do próprio Trivy. Segundo a Aqua, a rotação de 1º de março não foi feita de uma só vez e, durante uma rotação que levou vários dias, o invasor pode ter usado um token ainda válido para obter até os segredos recém-emitidos.
Depois de listar os segredos no escopo, invalide primeiro as chaves antigas em conjunto e então emita novas. Rotacionar uma chave por vez deixa espaço para que uma chave antiga ainda válida leia as novas. Planeje uma breve interrupção como custo.
Verifique a organização do GitHub e qualquer máquina que executou o Trivy, usando a lista de verificação do aviso
A Aqua lista, como itens a verificar, um repositório criado na sua organização do GitHub caso um caminho alternativo de exfiltração tenha sido usado, e arquivos deixados em uma máquina onde a v0.69.4 foi executada fora do CI, como a estação de trabalho de um desenvolvedor. Se você pode ter sido afetado, siga as listas de verificação do comunicado da Aqua e do aviso indicado abaixo (este artigo não reproduz os valores de indicadores).
Migre para as versões conhecidas como seguras
A Aqua indica como versões seguras o Trivy v0.69.2 e v0.69.3, a trivy-action v0.35.0 e a setup-trivy v0.2.6. Segundo o aviso, as tags antigas da trivy-action (0.0.1–0.34.2) foram excluídas e não podem ser recriadas com os mesmos nomes, por isso foram republicadas com prefixo v (por exemplo, v0.34.0), apontando para os commits legítimos originais (algumas não foram restauradas). Se você ainda referencia uma versão mais antiga, precisa atualizar a referência.
O que revisar na sua configuração de CI
A regra básica de fixar ações por SHA do commit é abordada em a cadeia TanStack, Nx Console e GitHub. Aqui focamos no que o incidente do Trivy acrescenta.
Verifique o que uma ação fixada por SHA chama por tag internamente
Segundo o aviso, a trivy-action passou a fixar por SHA as referências a seus componentes internos em um pull request integrado em 9 de abril de 2025. Pessoas que fixaram a trivy-action em um commit anterior tinham uma trivy-action segura que chamava uma setup-trivy maliciosa por tag.
Se você usa ações construídas a partir de outras ações (ações compostas), abra o action.yml no commit fixado e verifique se as linhas uses: internas estão fixadas por SHA. Se não estiverem, migre para um commit mais recente ou chame os componentes internos diretamente no seu próprio workflow, fixados por SHA.
Torne a fixação por SHA obrigatória nas configurações da organização, e não deixe a critério de cada pessoa
Em agosto de 2025, o GitHub adicionou à política de ações permitidas uma opção que exige que as ações sejam fixadas em um SHA completo de commit. Ela pode ser definida no nível da empresa, da organização ou do repositório, e workflows que usam uma ação não fixada falham. A mesma política pode bloquear ações ou versões específicas, o que também oferece uma forma de desativar uma versão afetada em toda a organização durante um incidente como este.
Não confie apenas no selo ‘Immutable’
Segundo o aviso, a Trivy v0.69.3 e a trivy-action 0.35.0 escaparam porque os releases imutáveis do GitHub estavam habilitados antes de serem publicados. A Aqua, porém, afirma que o selo "Immutable" também apareceu ao lado de tags reescritas, e que fixar em um SHA completo de commit, e não o selo, é a salvaguarda confiável. O selo descreve um release no momento em que foi publicado.
Fixe binários por versão e verifique assinaturas; referencie imagens por digest
No aviso, imagens referenciadas por digest (@sha256:…) não foram afetadas. Puxar por latest ou apenas por uma tag de versão teria obtido o build malicioso durante a janela. O aviso do Trivy também mostra como verificar binários e imagens com assinaturas Sigstore e carimbos de tempo de assinatura. Para ferramentas que seu CI baixa, informe a versão e, quando possível, fixe por digest ou checksum.
Execute o escaner em um job que não possui segredos de implantação
Segundo a Aqua, o código malicioso foi executado antes da verificação legítima, e a saída da verificação parecia normal, o que dificultava a percepção. Uma verificação normalmente não precisa de acesso de escrita à sua nuvem ou ao seu registro. Execute a verificação em um job separado que não recebe segredos de implantação, com permissions: definido como somente leitura.
Segundo a Aqua, o caminho alternativo de exfiltração só funcionou quando um token de acesso pessoal (PAT) foi passado ao workflow, e falhou com o GITHUB_TOKEN padrão. Verifique se você não está entregando um token pessoal à etapa de verificação.
O que aconteceu (segundo o comunicado da Aqua Security)
Tudo a seguir está conforme declarado no comunicado da Aqua Security (publicação inicial de 22 de março e atualizações até 1º de abril) e no aviso de segurança do Trivy. Os horários são em UTC.
Fim de fevereiro de 2026
Uma configuração incorreta no ambiente GitHub Actions do Trivy é explorada e um token de acesso privilegiado é extraído.1º de março
A equipe do Trivy divulga o incidente e rotaciona as credenciais. Segundo a Aqua, a rotação não foi feita de uma só vez, e o invasor manteve o acesso por meio de credenciais ainda válidas.19 de março, por volta das 17:43
76 de 77 tags da trivy-action e todas as 7 tags da setup-trivy são redirecionadas para commits maliciosos. Ao mesmo tempo, uma conta de serviço comprometida aciona a automação de release e publica um Trivy v0.69.4 malicioso (artefatos disponíveis a partir das 18:22).19 de março, por volta das 20:38
A equipe do Trivy identifica e contém o ataque e remove os artefatos maliciosos dos canais de distribuição.20 de março
São publicadas versões seguras, orientações aos usuários e indicadores de comprometimento.21 de março
É publicado o aviso de segurança GHSA-69fq-xp46-6x23 (CVE-2026-33634).22 de março
Imagens maliciosas v0.69.5 e v0.69.6 são enviadas ao Docker Hub (usando credenciais do Docker Hub comprometidas separadamente). No mesmo dia, repositórios internos da Aqua são tornados públicos no GitHub sem autorização. A Aqua afirma que o invasor havia recuperado o acesso após a contenção inicial.23 de março
A Aqua traz uma empresa externa de resposta a incidentes para a investigação. É identificado um comprometimento paralelo da GitHub Action do KICS, outro escaner da Aqua.1º de abril
A Aqua afirma que a investigação está quase concluída e que ainda não há indício de que seus produtos comerciais tenham sido afetados.
- Afetados
- Trivy v0.69.4 (binários, deb/rpm, imagens de contêiner), Docker Hub v0.69.5 e v0.69.6, todas as tags da trivy-action exceto 0.35.0, todas as tags da setup-trivy
- O que o código fazia
- Coletava credenciais de nuvem, SSH, Kubernetes, Docker, Git e banco de dados, além de arquivos
.env, dos runners de CI e das máquinas, criptografava-as e as enviava para fora. Era executado antes da verificação legítima, então os resultados pareciam normais - Causa
- Um token privilegiado extraído no fim de fevereiro por meio de uma configuração incorreta do GitHub Actions; como a rotação de 1º de março não foi atômica, o acesso foi mantido
- Resposta da Aqua
- Removeu os artefatos maliciosos de todos os canais; excluiu ou redirecionou as tags reescritas para commits verificados; bloqueou toda a automação, contas de serviço e tokens na organização de código aberto; reduziu a dependência de credenciais de longa duração; introduziu verificação de releases imutáveis e atestações de proveniência
- Não afetados
- Produtos comerciais, incluindo o Trivy na Aqua Platform (construída em infraestrutura separada do GitHub, sem compartilhar segredos ou sistemas de assinatura)
Nota de leitura: nenhum número de vítimas foi divulgado
A Aqua afirma que, por o Trivy ser de código aberto, não tem um registro completo de seus usuários nem como notificar cada um diretamente. Nenhuma contagem de organizações afetadas foi divulgada, e este site não publica estimativas.
O comunicado da Aqua também cita o invasor e as empresas externas que ajudaram na análise; pela política deste site, citamos apenas a organização que divulgou o incidente. Decida com base em se o seu workflow foi executado durante a janela afetada com uma referência afetada, e não em números de manchete.
Em que etapa poderia ter sido evitado
1. Fim de fev. – 1º de março
Token extraído; rotação leva dias
↓→
Lição (na sua organização)
Pare tudo e então reemita em conjunto
2. 19 de março: tags reescritas
Os mesmos nomes de tag passam a apontar para commits maliciosos
↓→
Configuração que teria evitado
Fixação por SHA imposta por política, partes internas também fixadas
3. v0.69.4 maliciosa e latest
Distribuída em todos os canais oficiais
↓→
Configuração que teria evitado
Versões explícitas, digests, verificação de assinaturas
4. Seu job de CI
Segredos coletados antes de a verificação rodar
↓→
Limitar o dano
Sem segredos nem tokens pessoais no job de verificação
Referências afetadas (segundo o aviso)
- Referências por tag como
trivy-action@0.34.2(qualquer uma exceto 0.35.0) version: latestexplícito (durante a janela do binário)- Fixações por SHA em commits anteriores a 9 de abril de 2025 (setup-trivy interna chamada por tag)
- Qualquer referência a
setup-trivysem fixação por SHA - Tags de imagem como
latestou0.69.4
Referências não afetadas
trivy-action@0.35.0(releases imutáveis habilitados antes de sua publicação)- Fixações por SHA em commits seguros posteriores a 9 de abril de 2025
setup-trivyfixada por SHA em um commit seguro- Imagens referenciadas por digest
- Trivy v0.69.3 e anteriores, builds a partir do código-fonte, a fórmula oficial do Homebrew
Visão deste site: quando houver suspeita de comprometimento, substitua as chaves de uma só vez
A rotação de chaves costuma ser feita uma chave por vez, começando pela menos crítica, sem interrupção. Evitar interrupções é um benefício real, mas o incidente do Trivy mostra que essa abordagem não bloqueia um invasor que ainda tem acesso. Segundo a Aqua, durante uma rotação que se estendeu por vários dias, um token ainda válido pode ter sido usado para obter até os segredos recém-emitidos, e isso levou à versão maliciosa três semanas depois.
Quando houver suspeita de comprometimento, rotacione nesta ordem: (1) liste cada chave e de onde ela poderia ser lida, (2) invalide as chaves antigas em conjunto, (3) só então emita novas, (4) confirme que as chaves antigas realmente falham. Planeje uma breve interrupção. O método de rotina — manter antigas e novas em paralelo — presume que nada vazou.
Um ponto a mais. Como um escaner de vulnerabilidades é uma ferramenta defensiva, ele tende a rodar em mais lugares, com permissões mais amplas, do que quase qualquer outra coisa no CI. Não deixe isso gerar complacência: execute-o em jobs que não podem ler seus segredos.
Fontes (registro público)
Os fatos deste artigo vêm das fontes públicas abaixo. Técnicas de ataque, valores de IoC e informações que identifiquem o invasor não são abordados.
- Aqua Security, "Trivy Supply Chain Attack: What You Need to Know" (publicação inicial em 22 de março de 2026, atualizada em 1º de abril) — aquasec.com
- Aviso de segurança do Trivy, "Trivy ecosystem supply chain temporarily compromised", GHSA-69fq-xp46-6x23 (CVE-2026-33634; publicado em 21 de março, atualizado em 30 de março) — github.com
- Trivy, "Trivy Security incident 2026-03-19" (GitHub Discussions, atualizações de status da equipe do Trivy) — github.com
- GitHub Changelog, "GitHub Actions policy now supports blocking and SHA pinning actions" (15 de agosto de 2025) — github.blog
- GitHub Docs, "Secure use reference" (uso de ações de terceiros) — docs.github.com
Histórico de atualizações
2026-09-30: Primeira versão, com base no comunicado da Aqua Security (atualização de 1º de abril) e no aviso de segurança do Trivy (revisão de 30 de março).
Leia em seguida
- Fixação por SHA e por que uma só pessoa não deveria poder publicar: A cadeia TanStack, Nx Console e GitHub
- Ordem de revogação de tokens npm roubados: Como se defender de worms na cadeia de suprimentos do npm
- Onde ficam os segredos: Por que arquivos .env e chaves de API são arriscados / Como impedir segredos no commit com o gitleaks
- Quando variáveis de ambiente de uma plataforma vazam: O que desenvolvedores devem fazer após o incidente de segurança da Vercel
- O mesmo tipo de incidente no PyPI e no Docker: Malware no LiteLLM 1.107.0 e o que os usuários devem fazer
- Outros incidentes de 2026: Vazamentos de dados e ciberataques de 2026