# GCP - Artifact Registry Persistence

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

## Artifact Registry

Za više informacija o Artifact Registry proverite:

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

### Dependency Confusion

- Šta se dešava ako se **daljinski i standardni** repozitorijumi **pomešaju u virtuelnom** i paket postoji u oba?
- Koristi se onaj sa **najvišim prioritetom postavljenim u virtuelnom repozitorijumu**
- Ako je **prioritet isti**:
- Ako je **verzija** **ista**, koristi se **ime politike abecedno** prvo u virtuelnom repozitorijumu
- Ako nije, koristi se **najviša verzija**

> [!CAUTION]
> Stoga, moguće je **zloupotrebiti najvišu verziju (dependency confusion)** u javnom paketu repozitorijuma ako daljinski repozitorijum ima viši ili isti prioritet

Ova tehnika može biti korisna za **persistence** i **neautentifikovani pristup** jer je za zloupotrebu potrebno samo **znati ime biblioteke** smeštene u Artifact Registry i **napraviti tu istu biblioteku u javnom repozitorijumu (PyPi za python na primer)** sa višom verzijom.

Za persistence, ovo su koraci koje treba da pratite:

- **Zahtevi**: **virtuelni repozitorijum** mora **postojati** i biti korišćen, **interni paket** sa **imenu** koji ne postoji u **javnom repozitorijumu** mora biti korišćen.
- Kreirajte daljinski repozitorijum ako ne postoji
- Dodajte daljinski repozitorijum u virtuelni repozitorijum
- Uredite politike virtuelnog repozitorijuma da date viši prioritet (ili isti) daljinskom repozitorijumu.\
Pokrenite nešto poput:
- [gcloud artifacts repositories update --upstream-policy-file ...](https://cloud.google.com/sdk/gcloud/reference/artifacts/repositories/update#--upstream-policy-file)
- Preuzmite legitiman paket, dodajte svoj maliciozni kod i registrujte ga u javnom repozitorijumu sa istom verzijom. Svaki put kada ga programer instalira, instaliraće vaš!

Za više informacija o dependency confusion proverite:

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

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