Aller au contenu
Sécurité medium

gpt-pilot / Pythagora-io (Shai-Hulud)

3 min de lecture
Point de compromission dans la chaîne Rupture · étape Registres
Source
amont
Dépendances
deps
Build & CI
ci
Packaging
artefact
Release
provenance
Registres
Registres
Déploiement
admission
Runtime
exécution
Rayon d'explosion — compromission à l'étape Registres, propagation possible aux consommateurs. Domaines : Orchestration, Poste de travail, Source, Intégration, Release, Secrets
Gravité critique
Le dépôt GitHub gpt-pilot (Pythagora-io) compromis par le voleur de credentials Shai-Hulud ; charge bloquee par un linter Python.
758 Ko
voleur obfusqué
33 700+
étoiles GitHub
défenseur fortuit
main
sans protection

En bref

Date
09/06/2026
Gravité
Critique
Étape de la chaîne
Registres
Domaines SOCLE
Orchestration+ Poste de travail, Source, Intégration, Release, Secrets

Que s'est-il passé ?

Contexte

Le 8 juin 2026, un attaquant compromet le compte GitHub d'un cofondateur de Pythagora-io/gpt-pilot (outil IA de dev, 33 700+ étoiles) et force-push une charge voleuse de credentials sur la branche main, dépourvue de protection.

Mécanisme

Variante du ver Shai-Hulud : un voleur JS obfusqué (758 Ko) cible AWS, npm, GitHub, Kubernetes, Vault et SSH, utilise les messages de commit GitHub comme C2, et peut signer et publier des paquets npm avec attestation SLSA L3 valide via Sigstore.

Impact

L'attaque est stoppée par ruff, un formateur Python : le fichier injecté ne respectait pas les règles de formatage/lint du projet et a échoué deux fois en CI. La même famille a touché Microsoft, Red Hat et Mistral AI cette année.

Parades

Protection de branche stricte sur main (revue obligatoire, pas de force-push), MFA sur les comptes mainteneurs, lint et format bloquants en CI (défense fortuite ici), et jetons de publication courts.

Chronologie de l'attaque

8 juin 2026
Compromission et force-push

Le compte d'un cofondateur est détourné ; à 11h01 UTC, l'historique de main est réécrit par un force-push portant la charge.

8 juin 2026
Échec en CI

Le fichier malveillant, non conforme aux règles ruff, échoue deux fois la CI, ce qui bloque l'intégration.

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

Identités de publication courtes (OIDC) ; détection de republication ; confinement du rayon d'explosion (egress filtre).

Les exigences SOCLE qui auraient limité cet incident

Cet incident se rattache à 23 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