5.9 KiB
Confusion de Dépendance
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE)
Apprenez et pratiquez le Hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)
Soutenir HackTricks
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.
{% embed url="https://websec.nl/" %}
Informations de Base
En résumé, une vulnérabilité de confusion de dépendance se produit lorsqu'un projet utilise une bibliothèque avec un nom mal orthographié, inexistant ou avec une version non spécifiée et le dépôt de dépendances utilisé permet de rassembler des versions mises à jour à partir de dépôts publics.
- Mal orthographié : Importer
reqests
au lieu derequests
- Inexistant : Importer
company-logging
, une bibliothèque interne qui n'existe plus - Version non spécifiée : Importer une bibliothèque
company-requests
interne existante, mais le dépôt 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 doit simplement publier un package 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 dépôt de bibliothèques va la rechercher dans des dépôts publics. Si un attaquant l'a créée, 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 spécifient juste 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 python requests
), 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 dépôt de la bibliothèque permet de vérifier les nouvelles versions également de manière externe, il recherchera une version plus récente disponible publiquement.
Donc, si un attaquant sait que l'entreprise utilise la bibliothèque requests-company
version 1.0.1 (permettant des 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 (lisez les détails dans cet article de blog).
AWS a corrigé cela en permettant de spécifier si une bibliothèque est interne ou externe, pour éviter de télécharger des dépendances internes à partir de dépôts externes.
Trouver des Bibliothèques Vulnérables
Dans le post original sur la confusion de dépendance, l'auteur a recherché des milliers de fichiers package.json exposés contenant les dépendances de projets javascript.
Références
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE)
Apprenez et pratiquez le Hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)
Soutenir HackTricks
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.