2 min de lecture
~4 minutes
Un mainteneur lie son package npm à un nom de repo GitHub, ne publie jamais, puis renomme son organisation. N’importe qui peut réclamer l’ancien nom et publier à sa place, sans voler le moindre token. SlugFest touche plus de 1 500 packages npm, et le même défaut de conception guette vos trust policies OIDC vers AWS, Azure et GCP.
Un mainteneur lie son package npm à PandaFactory/widget via le Trusted Publishing, ne publie rien, puis l’organisation PandaFactory est renommée. Le nom PandaFactory/widget redevient libre. Quelqu’un le réclame, y pousse un workflow du bon nom, et npm lui remet des identifiants de publication valides pour le package d’origine. Pas de token volé, pas de compte compromis : un nom qui se fait passer pour une identité.
Ce que dit la recherche
- La cause : npm stockait le nom du repo et celui du workflow, pas les identifiants numériques
repository_idetrepository_owner_idque GitHub met pourtant dans son jeton OIDC. - La condition : une liaison jamais utilisée pour publier, vers un nom devenu réclamable.
- La portée : plus de 1 500 packages et plus de 10 millions de téléchargements cumulés, selon Bloom Security, qui vend aussi des outils de sécurité de la chaîne d’approvisionnement. Aucune exploitation réelle rapportée.
- Le correctif : depuis le 2 octobre, une configuration non validée expire après 48 heures, et les jetons issus d’événements
issue_commentsont refusés. Le modèle ne change pas, la fenêtre d’exposition se réduit.
Au menu de la version abonnés
Au Menu, la suite de l’analyse :
- le diagramme de séquence de l’attaque et son scénario en cinq temps, avec la provenance Sigstore qui reste valide vers le mauvais repo ;
- le rapprochement avec vos trust policies OIDC vers AWS, Azure et GCP : la condition
subest un nom, et un nom peut se libérer ; - le script d’audit des rôles IAM qui font confiance à GitHub ;
- l’analyse STRIDE et le tableau d’impact détaillés ;
- les sept mitigations, des liaisons npm aux claims
subimmuables, et le cas des agents qui installent la dernière version sans regarder ; - un aperçu du contenu premium : audit comparant vos noms à l’état réel de GitHub, durcissement Terraform, requête de détection CloudTrail et playbook si un nom a été libéré.
Le mécanisme, le pont vers vos trust policies cloud, le STRIDE et les mitigations partent d'abord aux abonnés Substack, avant d'être publiés intégralement ici.
📚 Quelques références pour aller plus loin
- SlugFest, Bloom Security (source primaire)
- Unvalidated npm trusted publishing configurations now expire, GitHub Changelog
- Trusted publishing for npm packages, documentation npm
- OpenID Connect reference, GitHub Docs
- OWASP CI/CD Security Risks
- Plugin4Shell : le pinning par SHA face aux agents de code
- Shai-Hulud, vague 3 : Keyv et ChainDrop
- Pwn request et pull_request_target
Articles lies
Cette semaine : des logs pris pour des ordres, une gateway IA au KEV, et deux binaires piégés aux identités valides
Récap hebdomadaire du 26 au 28 octobre 2026 : Poisoning the Watchtower et l'injection par les logs, LiteLLM au catalogue KEV, première notification...
01/11/2026OVHcloud CLI et LiteLLM : à deux jours d'écart, les mêmes contrôles absents
Analyse comparée des compromissions OVHcloud CLI (19/10/2026) et LiteLLM 1.107.0 (21/10/2026) : chaîne d'attaque, contrôles SLSA, releases immuable...
28/10/2026MCP TypeScript SDK : c'est le serveur MCP qui choisissait à qui envoyer vos secrets OAuth
Analyse de la CVE-2026-104850 dans le SDK TypeScript officiel du Model Context Protocol : mécanisme de confusion de serveur d'autorisation, issuer ...
20/10/2026Graphalgo : le malware nord-coréen s'installe dans vos providers Terraform
Analyse de la campagne Graphalgo sur Terraform et Go : typosquatting kreuzwenker/docker, activation par hash, C2 Slack et Ethereum, STRIDE, impact ...
14/10/2026Plugin4Shell : le pinning par SHA ne vérifiait rien dans quatre agents de code
Analyse de Plugin4Shell : contournement du pinning par SHA dans quatre agents de code, mécanisme Git, statut des correctifs, STRIDE, impact et miti...
09/10/2026