Dans le cadre d’une nouvelle attaque qui ne nécessite aucune action de la victime
Un chercheur a réussi à briser les systèmes internes de plus de 35 grandes entreprises, notamment Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla et Uber, dans le cadre d’une nouvelle attaque de la chaîne logistique logicielle.
L’attaque comprenait le téléchargement de logiciels malveillants dans des référentiels open source, notamment PyPI, npm et RubyGems, qui ont ensuite été distribués automatiquement en aval dans les applications internes de l’entreprise.
Contrairement aux attaques de typosquatting traditionnelles qui reposent sur des tactiques d’ingénierie sociale ou qui s’appuient sur le fait que la victime ait mal orthographié un nom de paquet, cette attaque de chaîne d’approvisionnement particulière est plus sophistiquée, car elle n’a nécessité aucune action de la victime, qui a automatiquement reçu les paquets malveillants.
En effet, l’attaque a exploité une faille de conception unique des écosystèmes open source appelée confusion de dépendance.
Pour ses efforts de recherche éthique, le chercheur a gagné plus de 130 000 $ en primes de bogues.
Les logiciels malveillants sont distribués automatiquement en aval
L’année dernière, le chercheur en sécurité Alex Birsan s’est montré curieux suite à la situation qu’il a vécue en travaillant avec Justin Gardner, un autre chercheur en sécurité. Gardner avait partagé avec Birsan un fichier manifeste, package.json, à partir d’un package npm utilisé en interne par PayPal.
Birsan a remarqué que certains des packages de fichiers manifestes n’étaient pas présents sur le référentiel public npm, mais étaient plutôt des packages npm créés en privé par PayPal, utilisés et stockés en interne par la société.
En voyant cela, le chercheur s’est demandé : « si un paquet du même nom devait exister dans le référentiel public npm, en plus d’un référentiel NodeJS privé, lequel aurait la priorité ? »
Pour répondre à cette interrogation, Birsan a commencé à rechercher des noms de packages internes privés qu’il pouvait trouver dans des fichiers manifestes sur des référentiels GitHub ou dans des CDN d’entreprises de premier plan, mais qui n’existaient pas dans un référentiel public open source.
Le chercheur a ensuite commencé à créer des projets factices en utilisant les mêmes noms sur des référentiels open source tels que npm, PyPI et RubyGems.
Chaque paquet publié par Birsan l’a été sous son compte réel et avait clairement une clause de non-responsabilité en place, indiquant que « ce paquet est destiné à des fins de recherche de sécurité et ne contient aucun code utile ».
Birsan s’est vite rendu compte que si un package de dépendances utilisé par une application existait à la fois dans un référentiel open source public et dans votre build privé, le package public aurait la priorité et serait extrait à la place – sans aucune action du développeur.
Dans certains cas, comme avec les packages PyPI, le chercheur a remarqué que le package avec la version supérieure serait priorisé quel que soit l’endroit où il se trouve.
En utilisant cette technique, Birsan a exécuté une attaque réussie de la chaîne d’approvisionnement contre Microsoft, Apple, PayPal, Shopify, Netflix, Tesla, Yelp et Uber simplement en publiant des packages publics utilisant le même nom que les packages internes de l’entreprise.
« Je crois que la confusion de dépendance est très différente du typosquatting ou du brandjacking, car elle ne nécessite pas nécessairement une quelconque intervention manuelle de la victime ». « Au contraire, des vulnérabilités ou des défauts de conception dans les outils de build ou d’installation automatisés peuvent faire en sorte que les dépendances publiques soient confondues avec des dépendances internes portant exactement le même nom », a déclaré Birsan.
Exfiltration de données via DNS
Les packages contenaient des scripts de préinstallation qui lançaient automatiquement un script pour exfiltrer les informations d’identification de la machine dès que le processus de build avait extrait les packages.
Sachant que ses scripts établiraient des connexions à partir de réseaux d’entreprise, Birsan a décidé d’utiliser DNS pour exfiltrer les données afin de contourner la détection.
« Sachant que la plupart des cibles possibles se trouveraient au plus profond de réseaux d’entreprise bien protégés, j’ai considéré que l’exfiltration DNS était la voie à suivre », a expliqué Birsan dans un billet de blog.
Un extrait du code ci-dessous provient du package npm “analytics-paypal” qui est désormais supprimé de npm. Ce script se lancerait automatiquement dès que la dépendance “analytics-paypal” serait extraite et aurait du code pour faire des requêtes DNS à dns.alexbirsan-hacks-paypal.com et renvoyer des informations comme le nom d’utilisateur et le répertoire personnel du système infecté. Des informations qu’il a rapporté aux entreprises appropriées et qui lui ont permis de gagner une prime de bogue.
Plus de 130 000 $ en primes
Dans l’ensemble, le chercheur a réussi à gagner plus de 130 000 $ en récompenses grâce à des programmes de primes aux bogues et à des accords de test de pénétration préapprouvés.
« Je pense qu’il est important de préciser que chaque organisation ciblée au cours de cette recherche a donné l’autorisation de faire tester sa sécurité, soit par le biais de programmes publics de bug bounty, soit par le biais d’accords privés. Veuillez ne pas tenter ce type de test sans autorisation », prévient Birsan.
Pour la divulgation de Birsan, Microsoft lui a attribué le montant de la prime de bogue le plus élevé de 40 000 $ et a publié un livre blanc sur ce problème de sécurité. Ils identifient ce problème comme CVE-2021-24105 pour leur produit Azure Artifactory.
Cependant, Microsoft a déclaré à Birsan dans un e-mail qu’il considérait cela comme un défaut de conception dans les gestionnaires de packages :
« Bien que nous considérions cela comme un problème de sécurité grave, il doit en fin de compte être résolu en reconfigurant les outils d’installation et les flux de travail, et non en corrigeant quoi que ce soit dans les référentiels de packages eux-mêmes.
«Pour résoudre ce problème, Microsoft a apporté des améliorations mineures à Azure Artifacts pour garantir qu’il peut être utilisé comme une solution de contournement fiable.
« Cela dit, nous considérons que la cause première de ce problème est un défaut de conception (plutôt qu’un bogue) dans les gestionnaires de packages qui ne peut être résolu que par reconfiguration », a déclaré un porte-parole de Microsoft dans l’e-mail.
Dans une déclaration, Yelp a confirmé le rapport du chercheur et l’a récompensé après avoir corrigé le problème dans la journée :
« Grâce au programme bug-bounty de Yelp, Alex Birsan nous a aidés à identifier une vulnérabilité, que nous avons immédiatement corrigée en une journée.
« Nous nous engageons à travailler avec des experts en sécurité pour rester à jour avec les dernières techniques de sécurité, et nous nous appuyons sur notre programme bug-bounty pour récompenser les chercheurs en sécurité qualifiés qui aident à améliorer les systèmes et les services de Yelp ».
Apple a déclaré que Birsan obtiendrait une récompense via le programme Apple Security Bounty pour avoir divulgué ce problème de manière responsable.
PayPal a divulgué publiquement le rapport HackerOne de Birsan mentionnant le montant de la prime de 30000 $.
Cependant, les efforts de recherche éthique du chercheur n’ont pas été appréciés par tout le monde.
« Je pense que c’est probablement une raison suffisante pour ne pas avoir ces projets sur PyPI», a déclaré Dustin Ingram, directeur de Python Software Foundation et un défenseur des développeurs de Google, qui a enquêté et retiré certains des packages de Birsan de PyPI.
Après avoir passé une heure à retirer ces paquets, Ingram a souligné que le téléchargement de paquets illicites sur PyPI impose un fardeau indu aux bénévoles qui gèrent PyPI.
« En fin de compte, si vous souhaitez protéger les utilisateurs contre ce type d’attaque, il existe de meilleures façons de le faire qui protègent l’ensemble de l’écosystème, pas seulement un ensemble spécifique d’organisations avec des primes de bogues », a ajouté Ingram.
Les attaques devraient se développer, un problème difficile à résoudre
Grâce à cette recherche couvrant de grandes organisations, Birsan a déclaré qu’il avait déjà sensibilisé les grandes entreprises technologiques à ce type d’attaque qui ont maintenant mis en œuvre une sorte d’atténuation dans leur infrastructure. Cependant, le chercheur pense qu’il y a plus à découvrir.
Il reste la possibilité que de telles attaques refassent surface et se développent, en particulier sur les plates-formes open source sans solution facile à la confusion des dépendances.
« Plus précisément, je pense que trouver de nouveaux moyens intelligents de divulguer des noms de paquetages internes exposera des systèmes encore plus vulnérables, et rechercher d’autres langages de programmation et référentiels à cibler révélera une surface d’attaque supplémentaire pour les bogues de confusion de dépendance », a conclu le chercheur dans son billet de blog.
Sonatype a publié un script sur GitHub que les utilisateurs de Nexus Repository Manager peuvent exécuter pour vérifier si l’une de leurs dépendances privées porte le nom de packages existants présents dans les dépôts publics npm, RubyGems et PyPI. Les sociétés d’autres gestionnaires de référentiels d’artefacts peuvent adopter des implémentations identiques.
source : developpez