Aller au contenu
Sécurité medium

Trivy (2e compromission)

3 min de lecture
Point de compromission dans la chaîne Rupture · étape CI/CD
Source
amont
Dépendances
deps
Build & CI
CI/CD
Packaging
artefact
Release
provenance
Registres
distribution
Déploiement
admission
Runtime
exécution
Rayon d'explosion — compromission à l'étape CI/CD, propagation possible aux consommateurs. Domaines : Intégration, Release
Gravité élevé
Trivy compromis une seconde fois : release v0.69.4 malveillante et actions GitHub aquasecurity/setup-trivy et trivy-action piégées.
2e
compromission de Trivy en quelques mois
v0.69.4
release piégée (+ images 0.69.5/0.69.6)
3 surfaces
paquet, actions GitHub, images Docker
C2
domaine codé en dur dans le binaire

En bref

Date
26/03/2026
Gravité
Élevé
Étape de la chaîne
CI/CD
Domaines SOCLE
Intégration+ Release

Que s'est-il passé ?

Contexte

Trivy (Aqua) est un scanner de sécurité parmi les plus intégrés aux pipelines CI/CD : il est censé protéger la chaîne logicielle. En mars 2026, il est compromis pour la deuxième fois : l'outil de défense devient lui-même un vecteur d'attaque.

Mécanisme

L'attaque combine trois surfaces : une release piégée (v0.69.4), les actions GitHub officielles setup-trivy et trivy-action, et les images Docker aquasec/trivy 0.69.5 et 0.69.6. Un domaine C2 est codé en dur dans le binaire. Exécuter l'action ou l'image en CI ouvre un canal de commande et contrôle et permet l'exfiltration depuis l'environnement de build.

Impact

La gravité tient à la confiance accordée à un outil de sécurité et à son usage massif en CI/CD : un seul artefact piégé touche potentiellement tous les pipelines qui scannent avec Trivy. Les versions et images compromises ont été retirées, mais tout build les ayant tirées par tag mutable a pu être exposé.

Parades

Épingler actions et images par empreinte (SHA de commit, digest d'image) plutôt que par tag ; filtrer l'egress des runners pour bloquer un C2 ; vérifier la provenance des releases ; surveiller le réseau des étapes de build ; jetons CI scopés et courts.

Chronologie de l'attaque

28 février 2026
Vol du jeton (accès initial)

Un bot autonome exploite un workflow pull_request_target de aquasecurity/trivy pour dérober un jeton d'accès personnel (PAT).

19 mars 2026
Actions et release piégées

Via des commits imposteurs : trivy-action (~12 h), setup-trivy (~4 h) et la release v0.69.4 (~3 h) sont compromises ; un voleur de secrets lit la mémoire du runner et exfiltre vers un domaine C2.

22 mars 2026
Images Docker contaminées

Les images aquasec/trivy 0.69.5 et 0.69.6 contiennent le domaine C2 codé en dur dans le binaire (analyse de chaînes).

Comment l'attaquant a procédé

Cet incident met en jeu les vecteurs d'attaque suivants du catalogue SOCLE ; chacun renvoie à sa fiche, où l'on trouve les exigences qui le neutralisent :

La leçon à en tirer

Ce qu'il faut retenir

Épingler les actions par SHA (jamais par tag mutable) ; jetons CI scopés et courts ; allowlist d'actions.

Les exigences SOCLE qui auraient limité cet incident

Cet incident se rattache à 3 exigences du référentiel, par domaine. Les satisfaire n'aurait pas forcément tout empêché, mais aurait réduit la probabilité de l'attaque, limité son impact ou accéléré sa détection :

Pour aller plus loin

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn