Plug-in du compositeur contre les attaques de confusion de dépendance

Cet article fournit des informations sur le plug-in de compositeur publié pour les attaques Dependency Confusion et des recommandations pour éviter l’erreur. Le plug-in Composer a été introduit avec la version 2.4.3 d’Adobe Commerce pour protéger les commerçants Adobe Commerce des attaques de confusion de dépendance.

Description description

Environnement

Adobe Commerce 2.4.3 et versions ultérieures (toutes les méthodes de déploiement)

Problème

Un cas potentiel d’attaque de confusion de dépendances active est détecté par le biais d’au moins une des dépendances directes ou indirectes définies dans composer.json par le plug-in du compositeur magento/composer-dependency-version-audit-plugin lors de l’installation/la mise à jour du compositeur.

Procédure à suivre :

Lorsque vous installez/mettez à jour le compositeur, le plug-in du compositeur arrête le processus s’il détecte une attaque potentielle de confusion des dépendances. Dans ce cas, l’installation/la mise à jour du compositeur échoue avec un message d’erreur similaire à :

Une version correspondant plus élevée à x.x.x du package/nom a été trouvée dans le référentiel public packagist.org que x.x.x dans private.repo. Le package public a peut-être été repris par une entité malveillante. Vérifiez et mettez à jour les exigences en matière de package pour qu’elles correspondent à la version du référentiel privé.

Cause

Dependency Confusion permet d'exécuter à distance du code arbitraire sur un serveur en trompant un gestionnaire de dépendance (par exemple, le compositeur de PHP) pour qu'il télécharge un package malveillant à partir d'une source publique au lieu du package d'origine à partir d'un référentiel privé.

Une telle attaque peut même passer inaperçue si un attaquant est en mesure de conserver la fonctionnalité du package d’origine.

Les attaquant(e)s peuvent exploiter cette vulnérabilité si un package n’est disponible que via des référentiels privés, mais n’est pas enregistré dans le référentiel public. L’attaquant charge ensuite un package portant le même nom dans le référentiel public et lui donne une version supérieure à celle disponible en privé. Le gestionnaire de dépendances comparera alors les versions des packages disponibles dans les environnements public et privé et choisira la plus élevée dans le référentiel public. Le code malveillant téléchargé par le gestionnaire de dépendances sera alors exécuté avec les mêmes privilèges que le code de l’application.

Résolution resolution

Recommandations aux commerçants

  • Prenez au sérieux le message d’erreur affiché lorsque le plug-in arrête l’installation/la mise à jour du compositeur et contactez le développeur de l’extension si vous reconnaissez le package potentiellement compromis.
  • Vous pouvez toujours installer Adobe Commerce avec la version sécurisée du package provenant de la Marketplace ou d’un autre référentiel privé approuvé.
  • Remplacez la version de package requise dans votre composer.json par la version exacte disponible sur Marketplace pour poursuivre l’installation/la mise à jour du compositeur.

Attentes des développeurs d’extensions

  • Il n’existe aucun moyen de savoir avec certitude si le package d’un plug-in, provenant d’un référentiel public, a été compromis ou non. Le plug-in détecte lorsqu’une version publique d’un package sur packagist.org possède une version supérieure à celle disponible à partir d’un référentiel privé tel que repo.magento.com. Nous recommandons vivement aux développeurs d’extensions d’éviter de telles situations et de ne pas publier publiquement des versions plus récentes que celles disponibles via repo.magento.com.
  • Adobe Commerce comprend que le processus de révision du Marketplace peut retarder la disponibilité des extensions, mais le processus est là pour protéger les commerçants et aider les développeurs d'extensions à trouver les erreurs accidentelles qu'ils ont pu manquer.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f