Aller au contenu
Sécurité medium

eslint-scope (npm)

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, Source, Release, Déploiement, Secrets, Cloud
Gravité élevé
Compte npm d'un mainteneur compromis ; version malveillante publiée, exfiltrant les jetons npm des machines qui l'installaient.
12 juil. 2018
compromission
3.7.2
eslint-scope piégé
.npmrc
jetons exfiltrés
pas de 2FA
facteur initial

En bref

Date
12/07/2018
Gravité
Élevé
Étape de la chaîne
Registres
Domaines SOCLE
Orchestration+ Source, Release, Déploiement, Secrets, Cloud

Que s'est-il passé ?

Contexte

Le 12 juillet 2018, un attaquant compromet le compte npm d'un mainteneur d'ESLint (mot de passe réutilisé, sans 2FA) et publie des versions malveillantes d'eslint-scope et eslint-config-eslint.

Mécanisme

À l'installation, les paquets téléchargent et exécutent du code depuis pastebin.com qui envoie le fichier .npmrc de la victime à l'attaquant, c'est-à-dire ses jetons de publication npm.

Impact

eslint-scope étant une dépendance d'eslint, babel-eslint et webpack, l'exposition est large. npm a révoqué tous les jetons émis avant le 12 juillet 2018 12h30 UTC pour casser la chaîne.

Parades

MFA obligatoire sur les comptes de publication, pas de réutilisation de mot de passe, jetons courts et scopés, et désactivation des scripts d'installation non nécessaires.

Chronologie de l'attaque

12 juillet 2018
Compromission et publication

Le compte npm d'un mainteneur ESLint est détourné ; eslint-scope@3.7.2 et eslint-config-eslint@5.0.2 sont publiés et exfiltrent le .npmrc à l'installation.

12 juillet 2018
Réponse de npm

À 12h30 UTC, npm révoque tous les jetons d'accès émis avant cette heure, neutralisant les jetons volés.

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

2FA obligatoire sur les comptes de publication ; jetons de registre courts et révocables.

Les exigences SOCLE qui auraient limité cet incident

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