Guías de seguridad

Compromiso de la cadena de suministro de Trivy (marzo de 2026): qué hacer si usas Trivy en CI

Un Trivy v0.69.4 malicioso y etiquetas secuestradas de trivy-action y setup-trivy apuntaron a secretos de CI en marzo de 2026. Versiones afectadas, rotación de secretos y fijación por SHA.

Publicado 2026-09-30 Actualizado 2026-10-04 Última verificación 2026-09-30 17 min de lectura
En esta página

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

1

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.

2

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: latest establecido 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 latest durante 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.
3

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.

4

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.

5

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).

6

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.

1

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.

2

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.

3

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.

4

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.

5

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.

  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 20 de marzo

    Se publican versiones seguras, orientación para usuarios e indicadores de compromiso.
  6. 21 de marzo

    Se publica el aviso de seguridad GHSA-69fq-xp46-6x23 (CVE-2026-33634).
  7. 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.
  8. 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.
  9. 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.
76 / 77
etiquetas de trivy-action reapuntadas (solo 0.35.0 era segura)
7 / 7
etiquetas de setup-trivy reapuntadas
~12 horas
Tiempo durante el que se reescribieron las etiquetas de trivy-action (aviso)
Sin indicios
de impacto en productos comerciales, incl. Trivy en Aqua Platform (Aqua)
Lo que Aqua Security reveló
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 .env de 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

La ruta reconstruida a partir del comunicado de Aqua Security y del aviso. El lado derecho de cada paso muestra el ajuste del lado del usuario que podría haber detenido o reducido el daño.

Referencias que se vieron afectadas (según el aviso)

  • Referencias por etiqueta como trivy-action@0.34.2 (cualquiera salvo 0.35.0)
  • version: latest explí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-trivy sin fijación por SHA
  • Etiquetas de imagen como latest o 0.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-trivy fijado 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

FAQ

Q¿Qué versiones de Trivy se vieron afectadas?
A

Según el aviso de seguridad de Trivy GHSA-69fq-xp46-6x23 (CVE-2026-33634), los artefactos afectados fueron Trivy v0.69.4 (binarios distribuidos por GitHub, deb, rpm y get.trivy.dev, e imágenes de contenedor en GHCR, ECR Public y Docker Hub; la etiqueta latest también apuntó a ella durante la ventana de exposición) y las imágenes de contenedor v0.69.5 y v0.69.6 publicadas en Docker Hub. No se vieron afectadas v0.69.3 y versiones anteriores, las imágenes referenciadas por digest, los binarios compilados desde el código fuente ni la fórmula oficial de Homebrew.

QUso trivy-action. ¿Estoy afectado?
A

Según el aviso, estás afectado si referenciaste cualquier etiqueta distinta de 0.35.0 (de 0.0.1 a 0.34.2), si estableciste explícitamente version: latest durante la ventana de exposición del binario, o si lo fijaste por SHA a un commit anterior al 9 de abril de 2025. No se vieron afectados la etiqueta 0.35.0 ni los SHA fijados a commits seguros posteriores al 9 de abril de 2025. Las etiquetas se reescribieron desde aproximadamente las 17:43 UTC del 19 de marzo hasta aproximadamente las 05:40 UTC del 20 de marzo de 2026.

QUso setup-trivy. ¿Estoy afectado?
A

Según el aviso, cualquier uso sin fijación por SHA está afectado. Las siete etiquetas (de v0.2.0 a v0.2.6) se reapuntaron a commits maliciosos entre aproximadamente las 17:43 y las 21:44 UTC del 19 de marzo. Los SHA fijados a commits seguros no se vieron afectados, y v0.2.6 se volvió a crear con contenido seguro.

Q¿Qué debo hacer si me vi afectado?
A

Aqua indica que, si existe alguna posibilidad de que una versión comprometida se haya ejecutado en tu entorno, todos los secretos a los que pudieron acceder los pipelines afectados deben considerarse expuestos y rotarse de inmediato: 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. Afirma que los tokens de publicación de npm deben considerarse comprometidos activamente.

Q¿Cuál fue la causa?
A

Según Aqua, a finales de febrero de 2026 los atacantes aprovecharon una mala configuración en el entorno de GitHub Actions de Trivy y extrajeron un token de acceso privilegiado. El incidente se hizo público y las credenciales se rotaron el 1 de marzo, pero la rotación no fue atómica (tardó algunos días), y es posible que el atacante usara un token todavía válido para obtener los secretos recién rotados. Aqua afirma que esto permitió la publicación maliciosa del 19 de marzo.

Q¿Se vieron afectados los productos comerciales de Aqua Security?
A

Aqua afirma que no hay indicios de que sus productos comerciales se hayan visto afectados, incluido Trivy tal como se entrega dentro de Aqua Platform. Explica que la plataforma comercial se compila y opera por separado de GitHub, no comparte repositorios, infraestructura de CI/CD, secretos ni sistemas de firma, y que incorpora las versiones de código abierto solo después de una revisión de seguridad con control de acceso. Esta declaración no se aplica al uso directo del Trivy de código abierto.