mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
52 lines
3.7 KiB
Markdown
52 lines
3.7 KiB
Markdown
# Confusion de Dépendance
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% 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 de `requests`
|
|
- **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
|
|
|
|
> [!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.
|
|
|
|
### 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 `requests` de 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 **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**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
|
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**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610), 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://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
|
- [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|