Une attaque de dépendance permet l'exécution de code chez PayPal, Microsoft, Apple, Netflix, Uber et 30 autres entreprises

Il ya quelques jours une méthode étonnamment simple a été publiée qui permet d'attaquer les dépendances dans les applications qui sont développés à l'aide de référentiels de packages internes. Les chercheurs qui ont identifié le problème ils ont pu exécuter votre code sur les serveurs internes de 35 entreprises, dont PayPal, Microsoft, Apple, Netflix, Uber, Tesla et Shopify.

Les hacks ont été effectués dans le cadre des programmes Bug Bounty, en coordination avec les entreprises attaquées, et les auteurs ont déjà reçu 130.000 XNUMX $ de bonus pour identifier les vulnérabilités.

La méthode est basée sur le fait que de nombreuses entreprises utilisent des dépendances de référentiel standard de NPM, PyPI et RubyGems dans leurs applications internes, ainsi que les dépendances internes qui ne sont pas distribuées publiquement ou téléchargées à partir de leurs propres référentiels.

Le problème est que les gestionnaires de paquets comme npm, pip et gem ils essaient de télécharger les dépendances internes des entreprises, même à partir des référentiels publics. Pour une attaque, définissez simplement les noms des packages avec des dépendances internes et créez vos propres packages avec les mêmes noms dans les référentiels publics de NPM, PyPI et RubyGems.

Le problème n'est pas spécifique à NPM, PyPI et RubyGems, et il se manifeste également sur d'autres systèmes tels que NuGet, Maven et Yarn.

L'idée de la méthode proposée est venue après qu'un chercheur a accidentellement remarqué que dans un code accessible au public publié sur GitHub, de nombreuses entreprises ne suppriment pas la mention de dépendances supplémentaires de leurs fichiers manifestes utilisé dans des projets internes ou lors de la mise en œuvre de fonctionnalités étendues. Des traces similaires ont été trouvées dans le code JavaScript pour les services Web, ainsi que dans les projets Node.JS, Python et Ruby de nombreuses entreprises.

Les principales fuites étaient liées à l'incorporation du contenu à partir des fichiers package.json dans le code JavaScript accessible au public pendant le processus de construction, ainsi qu'avec l'utilisation d'éléments de chemin réels dans les appels require (), qui peuvent être utilisés pour juger des noms de dépendances.

L'analyse de plusieurs millions de domaines d'entreprise a révélé plusieurs milliers de noms de packages JavaScript qui n'étaient pas dans le référentiel NPM. Après avoir compilé une base de données de noms de packages internes, le chercheur a décidé de mener une expérience pour pirater l'infrastructure des entreprises participant aux programmes Bug Bounty. Les résultats ont été étonnamment efficaces et le chercheur a pu exécuter son code sur de nombreux ordinateurs de développement et serveurs chargés de construire ou de tester des systèmes d'intégration continue.

Lors du téléchargement des dépendances, les gestionnaires de packages npm, pip et gem installaient principalement des packages à partir des référentiels publics principaux NPM, PyPI et RubyGems, considérés comme ayant une priorité plus élevée.

La présence de packages similaires portant les mêmes noms dans les référentiels d'entreprises privées a été ignorée sans afficher d'avertissement ni provoquer de plantages cela pourrait attirer l'attention des administrateurs. Dans PyPI, la priorité de téléchargement était influencée par le numéro de version (quel que soit le référentiel, la version la plus récente du package était téléchargée). Dans NPM et RubyGems, la priorité dépendait uniquement du référentiel.

Le chercheur a placé des packages dans les référentiels NPM, PyPI et RubyGems qui croisent les noms des dépendances internes trouvées, ajoutant du code au script qui s'exécute avant l'installation (pré-installé dans NPM) pour collecter des informations sur le système et envoyer les informations reçues à l'hôte externe.

Pour transmettre des informations sur le succès du piratage, contourner les pare-feu bloquant le trafic externe, la méthode d'organisation des communications par canal secret via le protocole DNS. Le code en cours d'exécution a résolu l'hôte dans le domaine attaquant sous le contrôle du domaine attaquant, ce qui a permis de collecter des informations sur les opérations réussies sur le serveur DNS. Les informations sur l'hôte, le nom d'utilisateur et le chemin actuel ont été transmises.

75% de toutes les exécutions de code enregistrées étaient associées aux téléchargements de packages NPM, principalement en raison du fait qu'il y avait beaucoup plus de noms de modules internes en JavaScript que de noms de dépendances en Python et Ruby.

source: https://medium.com/


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.