Début de l'attaque de la chaîne d'approvisionnement
Il existe de nombreuses formes d'attaques contre la chaîne d'approvisionnement - piratage de référentiels, attaques lancées par des développeurs, falsification de bibliothèques, détournement de domaines, et j'en passe - mais une attaque où le logiciel malveillant recherche délibérément votre logiciel de développement et infecte d'autres projets sur votre système pendant la construction est différente.
Bien qu'il ne s'agisse pas d'un événement récent, il illustre parfaitement le caractère avancé et innovant de la préparation d'attaques de ce type. L'article suivant est basé sur un rapport créé par l'équipe de sécurité de GitHub, disponible ici. Elle s'est produite au début de l'année 2020, mais elle est tout aussi intéressante aujourd'hui qu'elle l'était à l'époque, en raison des tours et détours inattendus que prend le logiciel malveillant pour infecter d'autres logiciels sans rapport avec lui.
La menace déguisée dans l'écosystème de l'Open Source
L'équipe de réponse aux incidents de sécurité (SIRT) de GitHub a été alertée sur le fait que des dépôts servaient à leur insu des projets open-source infectés par des logiciels malveillants. Le logiciel malveillant, judicieusement appelé "Octopus Scanner", a été spécialement conçu pour cibler les projets NetBeans et leur ouvrir une porte dérobée. Il utilise le processus de construction et les artefacts qui en résultent pour se propager.
Résumons un peu les choses. Lorsque vous clonez et construisez le code contenu dans l'un de ces dépôts infectés, le logiciel malveillant recherche activement les installations NetBeans (NetBeans est un IDE Java, un environnement de développement intégré). S'il les trouve, il s'intègre dans le processus de construction de tout autre projet construit dans NetBeans, de sorte qu'il s'inclut lui-même (le logiciel malveillant) dans n'importe quel logiciel de construction. Comme NetBeans est un outil de développement, s'il est trouvé, il sera naturellement utilisé pour écrire du code et construire de multiples applications Java différentes, qui incluront toutes le logiciel malveillant.
Cette découverte est alarmante non seulement en raison de l'existence du logiciel malveillant, mais aussi en raison de sa portée potentielle. Les dépôts concernés étaient des sources ouvertes, ce qui signifie que n'importe quel développeur ou organisation pouvait, à son insu, cloner le code infecté et introduire par inadvertance des vulnérabilités dans ses applications ou ses systèmes.
Mais en quoi cela concerne-t-il les développeurs Java ?
Le message sous-jacent : La nécessité d'une chaîne d'approvisionnement sécurisée
En tant que développeur Java, vous vous demandez peut-être comment vous assurer que les bibliothèques et les dépendances que vous utilisez sont sûres. L'incident de l'Octopus Scanner souligne l'importance de sécuriser la chaîne d'approvisionnement des logiciels libres. Il ne s'agit pas seulement d'appliquer les derniers correctifs CVE. Il s'agit de maintenir l'intégrité de l'ensemble de l'écosystème de développement et de distribution des logiciels.
Entrer SecureChain pour Java. Imaginez un service où chaque dépendance et bibliothèque Java dont vous avez besoin a été vérifiée et analysée pour détecter les vulnérabilités. Plus besoin de se poser des questions ou de parcourir des forums pour déterminer si une bibliothèque peut être utilisée en toute sécurité. Securechain for Java propose un référentiel de dépendances Java, garantissant que vous n'utilisez que des bibliothèques dépourvues de portes dérobées ou de vulnérabilités connues.
Scanner de pieuvre : Regarder de plus près
L'opération de l'Octopus Scanner comportait de multiples facettes :
- Identification et infection: Le logiciel malveillant a identifié le répertoire NetBeans de l'utilisateur, a énuméré tous les projets, puis a intégré une charge utile malveillante dans les fichiers de projet et les fichiers JAR de construction.
- Persistance: La charge utile malveillante fait en sorte que chaque fois qu'un projet NetBeans est créé, il est exécuté, ce qui assure la propagation du logiciel malveillant.
- Subtilité: Contrairement à d'autres logiciels malveillants, les propriétaires du dépôt n'étaient absolument pas conscients qu'ils commettaient un code rétroactif, ce qui rend la détection et l'atténuation des effets encore plus difficiles.
- Flexibilité: Lors de son exécution, il insère les composants logiciels de la charge utile et de la commande et du contrôle dans les fichiers JAR d'autres applications. Cela permet aux opérateurs de logiciels malveillants de se diversifier et de s'adapter, car ils peuvent modifier ce qui est déployé sur les systèmes infectés en cas de déploiement de contre-mesures.
Parce qu'il était très ciblé, s'attaquant spécifiquement aux développeurs Java, si NetBeans n'était pas trouvé, il ne faisait rien sur le système infecté. Contrairement à de nombreuses autres formes de logiciels malveillants et de cyberattaques, qui visent parfois le plus grand nombre de cibles possibles dans l'espoir qu'un petit pourcentage des victimes prévues tombe dans le piège (comme les rançongiciels ou l'hameçonnage par courrier électronique), les attaques de la chaîne d'approvisionnement touchent les utilisateurs finaux avant même qu'ils n'aient la possibilité de faire quelque chose à ce sujet. Si le logiciel que vous installez est déjà piraté, aucun outil de sécurité ne pourra vous protéger.
Relever le défi
L'approche proactive de GitHub dans la gestion de l'incident de l'Octopus Scanner, combinée aux outils qu'il offre pour détecter les vulnérabilités dans les dépendances, établit une référence pour la manière dont les plateformes open-source devraient fonctionner. Toutefois, les développeurs individuels et les organisations doivent également jouer leur rôle en s'assurant qu'ils utilisent des sources fiables pour les dépendances de leur code.
La frontière entre une bibliothèque authentique et une porte dérobée devenant de plus en plus floue, la nécessité d'un service tel que SecureChain for Java devient primordiale. Il ne s'agit pas seulement d'écrire un code efficace, il s'agit d'écrire un code sûr.
Réflexions finales
L'incident de l'Octopus Scanner est un excellent exemple des vulnérabilités présentes dans l'écosystème des logiciels libres. Il montre également à quel point ces attaques peuvent être variées et avancées. Bien que des plateformes telles que GitHub jouent leur rôle, il incombe aux développeurs de s'assurer qu'ils s'approvisionnent en dépendances auprès de sources fiables et vérifiées.
Avec SecureChain pour Javavous pouvez créer vos applications Java en toute confiance, en sachant que chaque bibliothèque et dépendance que vous utilisez est exempte de vulnérabilités. Dans un monde où le code est partagé librement, assurons-nous que ce que nous partageons est sécurisé.
Sécurisez vos projets Java. Faites confiance à SecureChain for Java.