Une vulnérabilité a été identifiée dans Composer qui compromet le référentiel PHP Packagist

Il ya quelques jours la nouvelle a éclaté qu'une vulnérabilité critique a été identifiée en le gestionnaire de dépendances de Compositeur (CVE-2021-29472) qui vous permet d'exécuter des commandes arbitraires sur le système lors du traitement d'un package avec une valeur URL spécialement formée qui détermine la direction de téléchargement du code source.

Le problème se manifeste dans les composants GitDriver, SvnDriver et HgDriver utilisé avec les systèmes de contrôle de source Git, Subversion et Mercurial. La vulnérabilité a été corrigée dans les versions 1.10.22 et 2.0.13 de Composer.

En particulier, le référentiel de packages Packagist par défaut de Compositeur, qui contient 306.000 1.400 packages de développeurs PHP et propose plus de XNUMX milliard de téléchargements par mois, est particulièrement touché.

Dans l'écosystème PHP, Composer est le principal outil de gestion et d'installation des dépendances logicielles. Les équipes de développement du monde entier l'utilisent pour faciliter le processus de mise à niveau et garantir que les applications s'exécutent sans effort dans tous les environnements et toutes les versions.

L'expérience a montré que s'il y avait des informations sur le problème, les attaquants pouvaient prendre le contrôle de l'infrastructure Packagist et intercepter les informations d'identification des responsables ou rediriger le téléchargement des packages vers un serveur tiers, en organisant la livraison des variantes de package avec les modifications. malveillant pour remplacer une porte dérobée lors de l'installation d'une dépendance.

Le danger pour les utilisateurs finaux est limité en raison du fait que le contenu de composer.json est généralement défini par l'utilisateur et que les liens vers la source sont transmis lors de l'accès à des référentiels tiers, qui sont généralement fiables. Le coup dur est tombé sur le référentiel Packagist.org et le service Private Packagist, qui appellent Composer avec le transfert des données reçues des utilisateurs. Les attaquants pouvaient exécuter leur code sur des serveurs Packagist en déposant un package spécialement conçu.

L'équipe Packagist a résolu la vulnérabilité dans les 12 heures suivant la notification de vulnérabilité. Les chercheurs ont informé en privé les développeurs Packagist le 22 avril et le problème a été résolu le même jour. Une mise à jour publique de Composer avec un correctif pour la vulnérabilité a été publiée le 27 avril et les détails ont été révélés le 28 avril. Un audit des logs sur les serveurs de Packagist n'a révélé aucune activité suspecte associée à la vulnérabilité.

Les erreurs d'injection d'arguments sont une classe d'erreurs vraiment intéressante qui est souvent négligée lors des révisions de code et complètement négligée dans les interactions de la boîte noire.

Le problème est causé par une erreur dans le code de validation d'URL dans le fichier root composer.json et dans les liens de téléchargement source. Le bogue est dans votre code depuis novembre 2011. Packagist utilise des couches spéciales pour gérer les téléchargements de code sans être lié à un système de contrôle de source spécifique, qui est exécuté en appelant "fromShellCommandline" avec des arguments de ligne de commande.

Le cœur du problème est que la méthode ProcessExecutor vous permettait de spécifier des paramètres d'appel supplémentaires dans l'URL. Un tel échappement manquait dans les pilotes GitDriver.php, SvnDriver.php et HgDriver.php. L'attaque GitDriver.php a été entravée par le fait que la commande "git ls-remote" ne prenait pas en charge la spécification d'arguments supplémentaires après le chemin.

Une attaque sur HgDriver.php a été rendue possible en passant le paramètre "–config" à l'utilitaire "hq", qui permet d'organiser l'exécution de n'importe quelle commande en manipulant la configuration "alias.identify".

En soumettant un package de test avec une URL similaire à Packagist, les chercheurs se sont assurés qu'après sa publication, leur serveur recevait une requête HTTP de l'un des serveurs Packagist sur AWS qui contenait une liste des fichiers dans le répertoire actuel.

Il est à noter que les responsables n'ont identifié aucun signe d'exploitation antérieure de cette vulnérabilité dans l'instance publique du packagist.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


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 : AB Internet Networks 2008 SL
  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.