Dans ce qui est une nouvelle attaque de la chaîne d’approvisionnement, un chercheur en sécurité a réussi à briser les systèmes internes de plus de 35 grandes entreprises, y compris celui de Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla et Uber, et à exécuter du code à distance.
La technique, appelée confusion de dépendance ou une attaque de substitution, tire parti du fait qu’un logiciel peut inclure des composants provenant d’un mélange de sources privées et publiques.
Ces dépendances de package externes, qui sont extraites des référentiels publics pendant un processus de construction, peuvent présenter une opportunité d’attaque lorsqu’un adversaire télécharge une version supérieure d’un module privé sur le flux public, ce qui oblige un client à télécharger automatiquement la fausse « dernière » version sans nécessitant une action du développeur.
«Qu’il s’agisse d’erreurs ponctuelles commises par les développeurs sur leurs propres machines, de serveurs de build internes ou cloud mal configurés, en passant par des pipelines de développement systémiquement vulnérables, une chose était claire: squatter des noms de packages internes valides était une méthode presque infaillible. les réseaux de certaines des plus grandes entreprises de technologie, obtenant l’exécution de code à distance et permettant éventuellement aux attaquants d’ajouter des portes dérobées pendant les builds », a détaillé le chercheur en sécurité Alex Birsan dans un article.
Birsan a reçu collectivement plus de 130 000 $ en primes anti-insectes pour ses efforts.
Pour mener à bien l’attaque, Birsan a commencé par collecter les noms des packages internes privés utilisés par les grandes entreprises hors de GitHub, des publications sur divers forums Internet et des fichiers JavaScript qui répertorient les dépendances d’un projet, puis a téléchargé des bibliothèques malveillantes en utilisant ces mêmes noms sur open-source services d’hébergement de packages tels que npm, PyPI et RubyGems.
« [Shopify’s] build system a installé automatiquement un joyau Ruby nommé ‘shopify-cloud’ quelques heures seulement après l’avoir téléchargé, puis j’ai essayé d’exécuter le code qu’il contient », a noté Birsan, ajoutant un package Node qu’il a téléchargé sur npm en août 2020 était exécuté sur plusieurs machines à l’intérieur du réseau d’Apple, affectant les projets liés au système d’authentification Apple ID de l’entreprise.
Birsan a finalement utilisé les paquets contrefaits pour obtenir un enregistrement de chaque machine où les paquets ont été installés et a exfiltré les détails sur DNS pour la raison que «le trafic serait moins susceptible d’être bloqué ou détecté à la sortie».
La crainte qu’un package avec la version supérieure soit tiré par le processus de création de l’application quel que soit l’endroit où il se trouve n’a pas échappé à Microsoft, qui a publié un nouveau livre blanc mardi, décrivant trois façons d’atténuer les risques lors de l’utilisation de flux de paquets privés.
Les principales recommandations sont les suivantes:
- Faites référence à un flux privé, pas à plusieurs
- Protégez les packages privés à l’aide d’étendues contrôlées, d’espaces de noms ou de préfixes, et
- Utiliser les fonctionnalités de vérification côté client telles que l’épinglage de version et la vérification de l’intégrité