Source: filippo.io (Filippo Valsorda). L’auteur analyse les compromissions de la chaîne d’approvisionnement open source sur 2024/2025, en recensant des cas concrets et en les classant par causes racines afin d’identifier des mitigations actionnables pour les mainteneurs.
Principales causes identifiées: phishing (le vecteur le plus fréquent, y compris contre 2FA TOTP), control handoff (transfert d’accès/contrôle à un acteur malveillant), et déclencheurs GitHub Actions privilégiés comme pull_request_target et certains issue_comment conduisant à des injections shell. Les jetons à longue durée de vie (exfiltration et réutilisation), l’usurpation de Dependabot, la résurrection de domaines/identifiants, et des facteurs aggravants (tags d’Actions mutables, scripts post-install npm, permissions CI en écriture, artefacts non reproductibles, configuration CI par branche) reviennent régulièrement.
Cas marquants cités:
- XZ Utils: pression prolongée sur un mainteneur menant à un control handoff (artefacts non reproductibles comme facteur aggravant).
- Nx S1ingularity / Ultralytics / Kong Ingress Controller: exploitation de
pull_request_targetavec injection shell, permissions CI excessives, empoisonnement du cache Actions, et exfiltration de PAT/tokens. - Shai-Hulud: propagation via jetons npm compromis (scripts post-install malveillants) et workflows GitHub malveillants.
- polyfill.io / MavenGate: prise de contrôle via rachat de domaine/org ou résurrection de nom (domaines expirés, changements d’identifiants GitHub).
- npm debug/chalk/color, eslint-config-prettier, num2words, @solana/web3.js, rustfoundation.dev: multiples campagnes de phishing (mails “vérification/2FA”).
Mitigations mises en avant:
- Authentification résistante au phishing (passkeys/WebAuthn) sur tous les comptes développeurs et amont; éviter de recourir à TOTP en pratique si un facteur résistant est activé.
- Éviter
pull_request_targetet autres triggers privilégiés avec contexte contrôlé par un attaquant; préférer des approches réduisant l’interpolation YAML et l’injection (p. ex. code dédié) et limiter les permissions CI. - Réduire l’usage de jetons longue durée: publication de confiance (OIDC) pour les registres, alternatives aux PAT quand possible; prudence sur les fonctionnalités nécessitant des jetons puissants.
- Pinning immuable pour GitHub Actions (commit hashes) et gestion de versions conservatrice (p. ex.
npm ci), et vigilance sur les branches anciennes.
IOCs et TTPs:
- IOCs: aucun indicateur technique (hash, domaine, IP) fourni.
- TTPs: phishing d’identifiants/2FA, injection shell dans GitHub Actions, exfiltration de jetons (PAT, npm, PyPI, GitHub), empoisonnement du cache GitHub Actions, usurpation de Dependabot, scripts npm post-install, résurrection de domaines/utilisateurs, tags mutables d’Actions, artefacts non reproductibles.
Conclusion: article de synthèse visant à classifier les vecteurs dominants des compromissions de la chaîne d’approvisionnement open source en 2024/2025 et à proposer des mitigations priorisées pour les mainteneurs.
🔗 Source originale : https://words.filippo.io/compromise-survey/
🖴 Archive : https://web.archive.org/web/20251011133413/https://words.filippo.io/compromise-survey/