hacktricks/pentesting-web/dependency-confusion.md

65 lines
5.6 KiB
Markdown
Raw Normal View History

2022-11-29 16:54:14 +00:00
# Dependency Confusion
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-11-29 16:54:14 +00:00
</details>
2024-02-10 13:03:23 +00:00
## Informazioni di base
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
In sintesi, una vulnerabilità di dependency confusion si verifica quando un progetto utilizza una libreria con un nome **scritto male**, **inesistente** o con una **versione non specificata** e il repository di dipendenze utilizzato consente di **ottenere versioni aggiornate da repository pubblici**.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
* **Scritto male**: Importa **`reqests`** invece di `requests`
* **Inesistente**: Importa `company-logging`, una libreria interna che **non esiste più**
* **Versione non specificata**: Importa una libreria **interna esistente** `company-requests`, ma il repository controlla **repository pubblici** per vedere se ci sono **versioni più recenti**.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
## Sfruttamento
2022-11-29 16:54:14 +00:00
{% hint style="warning" %}
2024-02-10 13:03:23 +00:00
In tutti i casi, l'attaccante deve solo pubblicare un **pacchetto dannoso con il nome** delle librerie utilizzate dall'azienda vittima.
2022-11-29 16:54:14 +00:00
{% endhint %}
2024-02-10 13:03:23 +00:00
### Scritto male e inesistente
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
Se la tua azienda sta cercando di **importare una libreria che non è interna**, è molto probabile che il repository delle librerie la cerchi in **repository pubblici**. Se un attaccante l'ha creato, è molto probabile che il tuo codice e le macchine in esecuzione siano compromesse.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
### Versione non specificata
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
È molto comune per gli sviluppatori **non specificare alcuna versione** della libreria utilizzata, o specificare solo una **versione principale**. Quindi, l'interprete cercherà di scaricare l'**ultima versione** che soddisfi tali requisiti.\
Se la libreria è una **conosciuta libreria esterna** (come `requests` in Python), un **attaccante non può fare molto**, poiché non sarà in grado di creare una libreria chiamata `requests` (a meno che non sia l'autore originale).\
Tuttavia, se la libreria è **interna**, come `requests-company` in questo esempio, se il **repository della libreria** consente di **controllare anche esternamente nuove versioni**, cercherà una versione più recente disponibile pubblicamente.\
Quindi, se un **attaccante sa** che l'azienda sta utilizzando la libreria `requests-company` **versione 1.0.1** (consentendo aggiornamenti minori), può **pubblicare** la libreria `requests-company` **versione 1.0.2** e l'azienda **utilizzerà quella libreria al posto** di quella interna.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
## Soluzione AWS
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
Questa vulnerabilità è stata trovata in AWS **CodeArtifact** (leggi i [**dettagli in questo post del blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
AWS ha risolto il problema consentendo di specificare se una libreria è interna o esterna, per evitare di scaricare dipendenze interne da repository esterni.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
## Trovare librerie vulnerabili
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
Nel [**post originale sulla dependency confusion**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) l'autore ha cercato migliaia di file package.json esposti contenenti le dipendenze dei progetti JavaScript.
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
## Riferimenti
2022-11-29 16:54:14 +00:00
* [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)
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-11-29 16:54:14 +00:00
2024-02-10 13:03:23 +00:00
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-11-29 16:54:14 +00:00
</details>