En bref
Que s'est-il passé ?
Le 22 octobre 2021, le compte du développeur de ua-parser-js (7+ M de téléchargements/semaine) est détourné, permettant la publication de versions malveillantes.
Les versions piégées (0.7.29, 0.8.0, 1.0.0, choisies pour toucher un maximum d'utilisateurs via les règles de version) téléchargent un binaire externe exécuté avec des arguments de pools de minage. Une vague de spam masquait les e-mails d'alerte de npm.
Très large exposition vu la popularité du paquet ; le développeur a rapidement déprécié les versions et alerté. L'attaque est reliée à la campagne klow/klown/okhsa.
MFA sur les comptes de publication, détection de republication anormale, surveillance d'egress (téléchargement de binaire, minage), et épinglage des versions.
Chronologie de l'attaque
Le compte npm du mainteneur est piraté ; les versions 0.7.29, 0.8.0 et 1.0.0 déposent un mineur, puis sont rapidement dépréciées.
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
2FA publication ; détection de republication anormale ; quarantaine des nouvelles versions.
Les exigences SOCLE qui auraient limité cet incident
Cet incident se rattache à 4 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 :