Para: cualquiera que ejecute Trivy (el escáner de vulnerabilidades de imágenes de contenedor y dependencias), aquasecurity/trivy-action o aquasecurity/setup-trivy en CI, como GitHub Actions, y cualquiera que use binarios o imágenes de contenedor de Trivy en una estación de trabajo o servidor.
Este artículo se basa en el comunicado oficial de Aqua Security y en el aviso de seguridad de Trivy, y no cubre las técnicas de ataque ni los valores de indicadores de compromiso (IoC).
Qué deben hacer hoy los usuarios de CI
Comprueba si algún flujo de trabajo relacionado con Trivy se ejecutó en las ventanas afectadas
Aqua pide a los usuarios que revisen los registros de ejecución de los flujos de trabajo del 19 al 20 de marzo de 2026. Las ventanas indicadas en el aviso (UTC) son:
- trivy-action: aproximadamente de las 17:43 del 19 de marzo a las 05:40 del 20 de marzo
- setup-trivy: aproximadamente de las 17:43 a las 21:44 del 19 de marzo
- Trivy v0.69.4: de las 18:22 a aproximadamente las 21:42 del 19 de marzo
- Imágenes de Docker Hub v0.69.5 y v0.69.6: de las 15:43 del 22 de marzo a aproximadamente la 01:40 del 23 de marzo
Si tu organización tiene muchos flujos de trabajo, busca los que hacen referencia a aquasecurity/trivy-action y aquasecurity/setup-trivy y filtra su historial de ejecución por estas ventanas.
Decide según cómo lo referenciaste, no solo según la versión
En el aviso, lo que importa es cómo referenciaste el componente.
- trivy-action: afectado: cualquier etiqueta distinta de 0.35.0 (de 0.0.1 a 0.34.2);
version: latestestablecido explícitamente durante la ventana; un SHA fijado a un commit anterior al 9 de abril de 2025. No afectado: la etiqueta 0.35.0; los SHA fijados a commits seguros posteriores al 9 de abril de 2025. - setup-trivy: afectado: cualquier uso sin fijación por SHA. No afectado: los SHA fijados a commits seguros.
- Trivy en sí: afectado: v0.69.4 (incluido
latestdurante la ventana; GitHub, deb, rpm, get.trivy.dev, GHCR, ECR Public, Docker Hub) y Docker Hub v0.69.5 y v0.69.6. No afectado: v0.69.3 y anteriores; imágenes referenciadas por digest; compilaciones desde el código fuente; la fórmula oficial de Homebrew.
Si estás afectado, rota todos los secretos que el trabajo podía leer
Aqua indica que, si existe alguna posibilidad de que una versión comprometida se haya ejecutado, todos los secretos accesibles para los pipelines afectados deben considerarse expuestos: credenciales de nube (AWS, GCP, Azure), credenciales de Git, credenciales de registros de contenedores, claves SSH, tokens de Kubernetes, variables de entorno y otros secretos de automatización.
Pide que los tokens de publicación de npm se traten como comprometidos activamente, y señala que los tokens robados se están usando para difundir malware en npm. En los runners autohospedados, Aqua también enumera las credenciales de bases de datos, las claves privadas TLS y las configuraciones de VPN almacenadas en el runner.
Invalida primero todas las claves antiguas y luego emite las nuevas juntas
Este paso procede de la causa raíz de Trivy. Según Aqua, la rotación del 1 de marzo no se hizo de una sola vez y, durante una rotación que duró varios días, es posible que el atacante usara un token todavía válido para obtener incluso los secretos recién emitidos.
Una vez que hayas listado los secretos incluidos, invalida primero juntas las claves antiguas y después emite las nuevas. Rotar una clave cada vez deja margen para que una clave antigua aún válida lea las nuevas. Prevé una breve interrupción como coste.
Revisa tu organización de GitHub y cualquier equipo que haya ejecutado Trivy, usando la lista de comprobación del aviso
Aqua enumera como elementos a revisar un repositorio creado en tu organización de GitHub si se usó una ruta de exfiltración alternativa, y los archivos que hayan quedado en una máquina donde se ejecutó v0.69.4 fuera de CI, como un equipo de desarrollo. Si puedes estar afectado, sigue las listas de comprobación del comunicado de Aqua y del aviso enlazado más abajo (este artículo no reproduce los valores de los indicadores).
Cambia a las versiones conocidas como seguras
Aqua indica como versiones seguras Trivy v0.69.2 y v0.69.3, trivy-action v0.35.0 y setup-trivy v0.2.6. Según el aviso, las antiguas etiquetas de trivy-action (de 0.0.1 a 0.34.2) se eliminaron y no pueden volver a crearse con los mismos nombres, así que se volvieron a publicar con el prefijo v (por ejemplo, v0.34.0), apuntando a los commits legítimos originales (algunos no se han restaurado). Si todavía referencias una versión anterior, debes actualizar la referencia.
Qué revisar en tu configuración de CI
La regla básica de fijar acciones por SHA de commit se explica en la cadena de TanStack, Nx Console y GitHub. Aquí nos centramos en lo que añade el incidente de Trivy.
Comprueba qué llama por etiqueta una acción fijada por SHA en su interior
Según el aviso, trivy-action cambió sus referencias internas a componentes por fijaciones SHA en una pull request fusionada el 9 de abril de 2025. Quienes habían fijado trivy-action a un commit anterior tenían una trivy-action segura que llamaba por etiqueta a un setup-trivy malicioso.
Si usas acciones creadas a partir de otras acciones (acciones compuestas), abre el action.yml del commit que fijaste y comprueba si las líneas uses: internas están fijadas por SHA. Si no lo están, cambia a un commit más reciente o llama directamente a los componentes internos desde tu propio flujo de trabajo, fijados por SHA.
Haz obligatoria la fijación por SHA en la configuración de la organización, no la dejes a cada persona
En agosto de 2025, GitHub añadió a la política de acciones permitidas una opción que exige que las acciones estén fijadas a un SHA de commit completo. Puede configurarse a nivel de empresa, organización o repositorio, y los flujos de trabajo que usen una acción sin fijar fallan. La misma política puede bloquear acciones o versiones concretas, lo que también permite desactivar una versión afectada en toda la organización durante un incidente como este.
No confíes solo en la insignia «Immutable»
Según el aviso, Trivy v0.69.3 y trivy-action 0.35.0 se salvaron porque las versiones inmutables de GitHub estaban habilitadas antes de publicarse. Sin embargo, Aqua afirma que la insignia «Immutable» también aparecía junto a etiquetas reescritas, y que fijar a un SHA de commit completo, no la insignia, es la salvaguarda fiable. La insignia describe una versión tal como estaba en el momento de su publicación.
Fija los binarios por versión y verifica las firmas; referencia las imágenes por digest
En el aviso, las imágenes referenciadas por digest (@sha256:…) no se vieron afectadas. Descargar por latest o solo por una etiqueta de versión habría recogido la compilación maliciosa durante la ventana. El aviso de Trivy también muestra cómo verificar binarios e imágenes con firmas de Sigstore y marcas de tiempo de firma. Para las herramientas que tu CI descarga, indica la versión y, cuando sea posible, fija por digest o suma de comprobación.
Ejecuta el escáner en un trabajo que no tenga secretos de despliegue
Según Aqua, el código malicioso se ejecutó antes del escaneo legítimo, y la salida del escaneo parecía normal, lo que dificultaba detectarlo. Un escaneo normalmente no necesita acceso de escritura a tu nube o a tu registro. Ejecuta el escaneo en un trabajo separado que no reciba secretos de despliegue, con permissions: configurado como solo lectura.
Según Aqua, la ruta de exfiltración alternativa solo funcionó cuando se pasó un token de acceso personal (PAT) al flujo de trabajo, y falló con el GITHUB_TOKEN predeterminado. Comprueba que no estás entregando un token personal a tu paso de escaneo.
Qué ocurrió (según el comunicado de Aqua Security)
Todo lo siguiente es tal como lo indica el comunicado de Aqua Security (publicación inicial del 22 de marzo y actualizaciones hasta el 1 de abril) y el aviso de seguridad de Trivy. Las horas están en UTC.
Finales de febrero de 2026
Se aprovecha una mala configuración en el entorno de GitHub Actions de Trivy y se extrae un token de acceso privilegiado.1 de marzo
El equipo de Trivy hace público el incidente y rota las credenciales. Según Aqua, la rotación no se hizo de una sola vez, y el atacante mantuvo el acceso mediante credenciales todavía válidas.19 de marzo, aproximadamente las 17:43
76 de 77 etiquetas de trivy-action y las 7 etiquetas de setup-trivy se reapuntan a commits maliciosos. Al mismo tiempo, una cuenta de servicio comprometida activa la automatización de publicación y lanza un Trivy v0.69.4 malicioso (artefactos disponibles desde las 18:22).19 de marzo, aproximadamente las 20:38
El equipo de Trivy identifica y contiene el ataque y retira los artefactos maliciosos de los canales de distribución.20 de marzo
Se publican versiones seguras, orientación para usuarios e indicadores de compromiso.21 de marzo
Se publica el aviso de seguridad GHSA-69fq-xp46-6x23 (CVE-2026-33634).22 de marzo
Las imágenes maliciosas v0.69.5 y v0.69.6 se suben a Docker Hub (usando credenciales de Docker Hub comprometidas por separado). Ese mismo día, los repositorios internos de Aqua se hacen públicos en GitHub sin autorización. Aqua afirma que el atacante había recuperado el acceso tras la contención inicial.23 de marzo
Aqua incorpora a una firma externa de respuesta a incidentes a la investigación. Se identifica un compromiso paralelo de la acción de GitHub para KICS, otro escáner de Aqua.1 de abril
Aqua afirma que la investigación está casi terminada y que sigue sin haber indicios de que sus productos comerciales se hayan visto afectados.
- Afectados
- Trivy v0.69.4 (binarios, deb/rpm, imágenes de contenedor), Docker Hub v0.69.5 y v0.69.6, todas las etiquetas de trivy-action excepto 0.35.0, todas las etiquetas de setup-trivy
- Lo que hacía el código
- Recopilaba credenciales de nube, SSH, Kubernetes, Docker, Git y bases de datos, y archivos
.envde runners de CI y máquinas, los cifraba y los enviaba fuera. Se ejecutaba antes del escaneo legítimo, por lo que los resultados parecían normales - Causa
- Un token privilegiado extraído a finales de febrero mediante una mala configuración de GitHub Actions; como la rotación del 1 de marzo no fue atómica, se conservó el acceso
- Respuesta de Aqua
- Eliminó los artefactos maliciosos de todos los canales; eliminó o reapuntó las etiquetas reescritas a commits verificados; bloqueó toda la automatización, cuentas de servicio y tokens de la organización de código abierto; redujo la dependencia de credenciales de larga duración; introdujo la verificación de versiones inmutables y las atestaciones de procedencia
- No afectados
- Productos comerciales, incluido Trivy en Aqua Platform (compilado sobre una infraestructura separada de GitHub, sin compartir secretos ni sistemas de firma)
Nota de lectura: no se ha publicado ningún recuento de víctimas
Aqua afirma que, como Trivy es de código abierto, no tiene un registro completo de sus usuarios ni forma de notificar a cada uno directamente. No se ha publicado ningún recuento de organizaciones afectadas, y este sitio no publica estimaciones.
El comunicado de Aqua también nombra al atacante y a las empresas externas que ayudaron con el análisis; según la política de este sitio, solo nombramos a la organización que hizo público el incidente. Decide según si tu flujo de trabajo se ejecutó durante la ventana afectada con una referencia afectada, no según cifras llamativas.
En qué etapa podría haberse evitado
1. Finales de feb. – 1 de marzo
Token extraído; la rotación tarda días
↓→
Lección (en tu organización)
Detén todo y luego reemite juntas
2. 19 de marzo: etiquetas reescritas
Los mismos nombres de etiqueta apuntan ahora a commits maliciosos
↓→
Ajuste que lo habría evitado
Fijaciones SHA impuestas por política, partes internas también fijadas
3. v0.69.4 maliciosa y latest
Distribuida por todos los canales oficiales
↓→
Ajuste que lo habría evitado
Versiones explícitas, digests, verificación de firmas
4. Tu trabajo de CI
Secretos recopilados antes de que se ejecute el escaneo
↓→
Limitar el daño
Sin secretos ni tokens personales en el trabajo de escaneo
Referencias que se vieron afectadas (según el aviso)
- Referencias por etiqueta como
trivy-action@0.34.2(cualquiera salvo 0.35.0) version: latestexplícito (durante la ventana del binario)- SHA fijados a commits anteriores al 9 de abril de 2025 (setup-trivy interno llamado por etiqueta)
- Cualquier referencia a
setup-trivysin fijación por SHA - Etiquetas de imagen como
latesto0.69.4
Referencias que no se vieron afectadas
trivy-action@0.35.0(versiones inmutables habilitadas antes de su publicación)- SHA fijados a commits seguros posteriores al 9 de abril de 2025
setup-trivyfijado por SHA a un commit seguro- Imágenes referenciadas por digest
- Trivy v0.69.3 y anteriores, compilaciones desde el código fuente, la fórmula oficial de Homebrew
Opinión de este sitio: cuando se sospecha un compromiso, reemplaza las claves de una vez
La rotación de claves suele hacerse una clave cada vez, empezando por la menos crítica y sin interrupciones. Evitar interrupciones es un beneficio real, pero el incidente de Trivy muestra que este enfoque no deja fuera a un atacante que todavía tiene acceso. Según Aqua, durante una rotación que se prolongó varios días, es posible que se usara un token todavía válido para obtener incluso los secretos recién emitidos, y eso llevó a la publicación maliciosa tres semanas después.
Cuando se sospecha un compromiso, rota en este orden: (1) enumera cada clave y desde dónde podría leerse, (2) invalida juntas las claves antiguas, (3) solo entonces emite las nuevas, (4) confirma que las claves antiguas realmente fallan. Prevé una breve interrupción. El método habitual, que mantiene las claves antiguas y nuevas en paralelo, supone que nada se ha filtrado.
Un punto más. Como un escáner de vulnerabilidades es una herramienta defensiva, tiende a ejecutarse en más lugares, con permisos más amplios, que casi cualquier otra cosa en CI. No dejes que eso te haga complaciente: ejecútalo en trabajos que no puedan leer tus secretos.
Fuentes (registro público)
Los datos de este artículo proceden de las fuentes públicas siguientes. No se cubren las técnicas de ataque, los valores de IoC ni la información que identifique al atacante.
- Aqua Security, "Trivy Supply Chain Attack: What You Need to Know" (publicación inicial del 22 de marzo de 2026, actualizada el 1 de abril) — aquasec.com
- Aviso de seguridad de Trivy, "Trivy ecosystem supply chain temporarily compromised", GHSA-69fq-xp46-6x23 (CVE-2026-33634; publicado el 21 de marzo, actualizado el 30 de marzo) — github.com
- Trivy, "Trivy Security incident 2026-03-19" (GitHub Discussions, actualizaciones de estado del equipo de 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 acciones de terceros) — docs.github.com
Historial de actualizaciones
2026-09-30: Primera versión, basada en el comunicado de Aqua Security (actualización del 1 de abril) y en el aviso de seguridad de Trivy (revisión del 30 de marzo).
Lectura siguiente
- Fijación por SHA y por qué una sola persona no debería poder publicar: La cadena de TanStack, Nx Console y GitHub
- Orden de revocación de tokens de npm robados: Defensa frente a gusanos de la cadena de suministro de npm
- Dónde viven los secretos: Por qué los archivos .env y las claves de API son arriesgados / Detén los secretos antes del commit con gitleaks
- Cuando se filtran las variables de entorno de una plataforma: Qué deben hacer los desarrolladores tras el incidente de seguridad de Vercel
- El mismo tipo de incidente en PyPI y Docker: Malware en LiteLLM 1.107.0 y qué deben hacer los usuarios
- Otros incidentes de 2026: Filtraciones de datos y ciberataques de 2026