hacktricks/pentesting-web/dependency-confusion.md
2023-06-03 13:10:46 +00:00

6.6 KiB

Confusion de dépendances

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Informations de base

En résumé, une vulnérabilité de confusion de dépendances se produit lorsqu'un projet utilise une bibliothèque avec un nom mal orthographié, inexistant ou avec une version non spécifiée et que le référentiel de dépendances utilisé permet de rassembler des versions mises à jour à partir de référentiels publics.

  • Mal orthographié : Importez reqests au lieu de requests
  • Inexistant : Importez company-logging, une bibliothèque interne qui n'existe plus
  • Version non spécifiée : Importez une bibliothèque interne existante company-requests, mais le référentiel vérifie les dépôts publics pour voir s'il existe des versions supérieures.

Exploitation

{% hint style="warning" %} Dans tous les cas, l'attaquant n'a besoin que de publier un paquet malveillant avec le nom des bibliothèques utilisées par l'entreprise victime. {% endhint %}

Mal orthographié & Inexistant

Si votre entreprise essaie d'importer une bibliothèque qui n'est pas interne, il est très probable que le référentiel de bibliothèques la recherche dans les dépôts publics. Si un attaquant l'a créé, votre code et les machines en cours d'exécution seront très probablement compromis.

Version non spécifiée

Il est très courant que les développeurs ne spécifient aucune version de la bibliothèque utilisée, ou ne spécifient qu'une version majeure. Ensuite, l'interpréteur essaiera de télécharger la dernière version correspondant à ces exigences.
Si la bibliothèque est une bibliothèque externe connue (comme requests en python), un attaquant ne peut pas faire grand-chose, car il ne pourra pas créer une bibliothèque appelée requests (à moins qu'il ne soit l'auteur original).
Cependant, si la bibliothèque est interne, comme requests-company dans cet exemple, si le référentiel de bibliothèque permet de vérifier également les nouvelles versions de manière externe, il recherchera une version plus récente disponible publiquement.
Ainsi, si un attaquant sait que l'entreprise utilise la bibliothèque requests-company version 1.0.1 (autorise les mises à jour mineures), il peut publier la bibliothèque requests-company version 1.0.2 et l'entreprise utilisera cette bibliothèque à la place de l'interne.

Correction AWS

Cette vulnérabilité a été trouvée dans AWS CodeArtifact (lire les détails dans ce billet de blog).
AWS a corrigé cela en permettant de spécifier si une bibliothèque est interne ou externe, afin d'éviter de télécharger des dépendances internes à partir de référentiels externes.

Recherche de bibliothèques vulnérables

Dans le post original sur la confusion de dépendances, l'auteur a recherché des milliers de fichiers package.json exposés contenant les dépendances de projets JavaScript.

Références

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥