# GCP - Persistenza dell'Artifact Registry

{{#include ../../../banners/hacktricks-training.md}}

## Artifact Registry

Per ulteriori informazioni su Artifact Registry controlla:

{{#ref}}
../gcp-services/gcp-artifact-registry-enum.md
{{#endref}}

### Confusione delle Dipendenze

- Cosa succede se un **repository remoto e uno standard** **sono mescolati in uno virtuale** e un pacchetto esiste in entrambi?
- Viene utilizzato quello con la **priorità più alta impostata nel repository virtuale**
- Se la **priorità è la stessa**:
- Se la **versione** è la **stessa**, viene utilizzato il **nome della policy alfabeticamente** primo nel repository virtuale
- Se no, viene utilizzata la **versione più alta**

> [!CAUTION]
> Pertanto, è possibile **abusare di una versione più alta (confusione delle dipendenze)** in un registro di pacchetti pubblico se il repository remoto ha una priorità più alta o la stessa

Questa tecnica può essere utile per la **persistenza** e l'**accesso non autenticato** poiché per abusarne è sufficiente **conoscere il nome di una libreria** memorizzata in Artifact Registry e **creare quella stessa libreria nel repository pubblico (PyPi per python ad esempio)** con una versione più alta.

Per la persistenza, questi sono i passaggi da seguire:

- **Requisiti**: Deve **esistere** e essere utilizzato un **repository virtuale**, deve essere utilizzato un **pacchetto interno** con un **nome** che non esiste nel **repository pubblico**.
- Crea un repository remoto se non esiste
- Aggiungi il repository remoto al repository virtuale
- Modifica le politiche del registro virtuale per dare una priorità più alta (o la stessa) al repository remoto.\
Esegui qualcosa come:
- [gcloud artifacts repositories update --upstream-policy-file ...](https://cloud.google.com/sdk/gcloud/reference/artifacts/repositories/update#--upstream-policy-file)
- Scarica il pacchetto legittimo, aggiungi il tuo codice malevolo e registralo nel repository pubblico con la stessa versione. Ogni volta che un sviluppatore lo installa, installerà il tuo!

Per ulteriori informazioni sulla confusione delle dipendenze controlla:

{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/dependency-confusion.html
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
