Une attaque critique de la chaîne d'approvisionnement a affecté la bibliothèque JavaScript Axios, largement utilisée, suite à la compromission du compte npm de son principal mainteneur. Les acteurs de la menace ont utilisé le compte détourné pour publier deux versions malveillantes, axios@1.14.1 et axios@0.30.4, qui ont introduit une dépendance malveillante (plain-crypto-js@4.2.1). Cette dépendance ne faisait pas partie de la base de code légitime d'Axios et n'existait que pour exécuter un script de post-installation qui déployait un cheval de Troie d'accès à distance (RAT) multiplateforme.
L'attaque était très bien coordonnée. La dépendance malveillante a été préparée à l'avance, puis injectée dans les branches actuelles et anciennes d'Axios dans un court laps de temps, afin d'en maximiser l'impact. Le code malveillant résidant dans une dépendance transitive plutôt que dans Axios lui-même, une analyse traditionnelle du code ou une détection basée sur les diffs n'aurait probablement pas permis d'identifier la compromission. En outre, le logiciel malveillant est conçu pour s'effacer après son exécution et remplacer les éléments de preuve dans le répertoire du paquet, ce qui complique considérablement l'analyse médico-légale.
Une fois installé, le script dropper contacte un serveur de commande et de contrôle (sfrclak[.]com) et récupère une charge utile de seconde étape adaptée au système d'exploitation. Sur macOS, il déploie un binaire déguisé en démon de cache système ; sur Windows, il exploite PowerShell exécuté via un binaire déguisé ; et sur Linux, il déploie une porte dérobée basée sur Python. Ces charges utiles permettent l'exécution de commandes à distance, l'exfiltration de données et la diffusion d'autres charges utiles. Bien que le logiciel malveillant ne semble pas établir de persistance par défaut, ses capacités permettent aux attaquants d'escalader rapidement l'accès ou de déployer des mécanismes supplémentaires.
En raison de la nature autodestructive du dropper, l'identification de la compromission nécessite une combinaison d'analyse des dépendances, d'inspection des artefacts du système et d'examen des journaux. Les organisations doivent examiner les paquets installés et les fichiers de verrouillage pour les versions d'Axios concernées, vérifier si le répertoire plain-crypto-js existe ou a existé, et vérifier les points de terminaison pour des indicateurs tels que /Library/Caches/com.apple.act.mond, %PROGRAMDATA%\wt.exe, ou /tmp/ld.py. Il convient également d'examiner les journaux de réseau pour y déceler les communications avec l'infrastructure de commande et de contrôle connue. Tout indicateur confirmé doit être considéré comme une preuve de la compromission complète du système.
Si votre environnement a installé l'une ou l'autre des versions malveillantes d'Axios, vous devez supposer que le système est compromis et réagir en conséquence. Les systèmes ne doivent pas être nettoyés sur place, car l'étendue de l'activité des attaquants ne peut pas être déterminée de manière fiable. Au contraire, les machines concernées doivent être reconstruites à partir d'une base de référence fiable et connue pour garantir l'éradication complète de tous les composants malveillants.
Toutes les informations d'identification susceptibles d'avoir été exposées sur les systèmes affectés doivent être immédiatement remplacées. Cela inclut les tokens npm, les identifiants des fournisseurs de cloud, les clés SSH, les clés API, les variables d'environnement et tous les secrets utilisés dans les pipelines CI/CD. Une attention particulière doit être accordée aux systèmes de construction et aux pipelines d'automatisation, car ils ont souvent accès à des informations d'identification très sensibles et peuvent avoir exécuté le paquet malveillant lors de constructions de routine.
Dans le cadre du confinement, les organisations doivent bloquer les communications sortantes vers le domaine de commande et de contrôle identifié et les adresses IP associées. Les équipes de sécurité doivent également examiner les journaux pour détecter les connexions sortantes suspectes, l'exécution de processus inhabituels ou les signes d'exfiltration de données pendant la période où les paquets malveillants étaient disponibles.
Pour la reprise, Axios doit être rétrogradé vers une version sûre connue, telle que 1.14.0 ou 0.30.3, et la dépendance malveillante doit être supprimée si elle est présente. Les dépendances doivent ensuite être réinstallées en utilisant des pratiques plus sûres, telles que la désactivation des scripts de cycle de vie lorsque cela est possible. Les pipelines CI/CD devraient adopter des valeurs par défaut sécurisées telles que npm ci --ignore-scripts afin de réduire le risque d'exécution automatique d'attaques similaires à l'avenir.
À plus long terme, les organisations devraient renforcer la sécurité de leur chaîne d'approvisionnement en logiciels. Il s'agit notamment d'appliquer des règles strictes d'épinglage des dépendances, d'auditer les dépendances directes et transitives et de mettre en œuvre des outils capables de détecter les paquets malveillants en temps réel. Il est essentiel de réduire la confiance implicite dans les registres de paquets et les responsables, car cet incident montre qu'un seul compte compromis peut avoir des effets en cascade sur des milliers d'applications en aval.
Cette attaque met en évidence la sophistication croissante des menaces pesant sur la chaîne d'approvisionnement au sein de l'écosystème des logiciels libres. En s'appuyant sur des canaux de distribution fiables, les attaquants peuvent obtenir un accès généralisé avec un minimum d'efforts, ce qui fait de la surveillance proactive, de la réaction rapide et de la défense en profondeur des éléments essentiels d'une stratégie de cybersécurité moderne.
Si vous êtes préoccupé par l'une des menaces décrites dans ce bulletin ou si vous avez besoin d'aide pour déterminer les mesures à prendre pour vous protéger contre les menaces les plus importantes auxquelles votre organisation est confrontée, veuillez contacter votre gestionnaire de compte, ou bien prenez contact avecnous pour savoir comment vous pouvez protéger votre organisation.