GCP - Artifact Registry Enum

Support HackTricks

Basic Information

Google Cloud Artifact Registry è un servizio completamente gestito che consente di gestire, archiviare e proteggere i propri artefatti software. È essenzialmente un repository per archiviare le dipendenze di build, come Docker immagini, Maven, pacchetti npm e altri tipi di artefatti. È comunemente usato nei pipeline CI/CD per archiviare e versionare gli artefatti prodotti durante il processo di sviluppo software.

Le caratteristiche principali di Artifact Registry includono:

  1. Repository Unificato: Supporta più tipi di artefatti, consentendo di avere un unico repository per immagini Docker, pacchetti di linguaggi (come Maven di Java, npm di Node.js) e altri tipi di artefatti, abilitando controlli di accesso coerenti e una vista unificata su tutti i propri artefatti.

  2. Completamente Gestito: Essendo un servizio gestito, si occupa dell'infrastruttura sottostante, della scalabilità e della sicurezza, riducendo il carico di manutenzione per gli utenti.

  3. Controllo degli Accessi Flessibile: Si integra con l'Identity and Access Management (IAM) di Google Cloud, consentendo di definire chi può accedere, caricare o scaricare artefatti nei propri repository.

  4. Geo-replicazione: Supporta la replicazione degli artefatti in più regioni, migliorando la velocità dei download e garantendo disponibilità.

  5. Integrazione con i Servizi Google Cloud: Funziona senza problemi con altri servizi GCP come Cloud Build, Kubernetes Engine e Compute Engine, rendendolo una scelta conveniente per i team già attivi nell'ecosistema Google Cloud.

  6. Sicurezza: Offre funzionalità come scansione delle vulnerabilità e analisi dei container per aiutare a garantire che gli artefatti archiviati siano sicuri e privi di problemi di sicurezza noti.

Formats and Modes

Quando si crea un nuovo repository è possibile selezionare il formato/tipo del repository tra diversi come Docker, Maven, npm, Python... e la modalità che di solito può essere una di queste tre:

  • Repository Standard: Modalità predefinita per archiviare i propri artefatti (come immagini Docker, pacchetti Maven) direttamente in GCP. È sicuro, scalabile e si integra bene nell'ecosistema Google Cloud.

  • Repository Remoto (se disponibile): Funziona come un proxy per caching degli artefatti da repository esterni, pubblici. Aiuta a prevenire problemi derivanti da dipendenze che cambiano upstream e riduce la latenza memorizzando nella cache gli artefatti frequentemente accessibili.

  • Repository Virtuale (se disponibile): Fornisce un interfaccia unificata per accedere a più repository (standard o remoti) attraverso un unico endpoint, semplificando la configurazione lato client e la gestione degli accessi per artefatti distribuiti su vari repository.

  • Per un repository virtuale sarà necessario selezionare i repository e assegnare loro una priorità (il repository con la priorità più alta sarà utilizzato).

  • È possibile mescolare repository remoti e standard in uno virtuale, se la priorità del remoto è maggiore rispetto allo standard, i pacchetti dal remoto (ad esempio PyPi) saranno utilizzati. Questo potrebbe portare a una Confusione delle Dipendenze.

Nota che nella versione Remota di Docker è possibile fornire un nome utente e un token per accedere a Docker Hub. Il token viene quindi memorizzato nel Secret Manager.

Encryption

Come previsto, per impostazione predefinita viene utilizzata una chiave gestita da Google, ma può essere indicata una chiave gestita dal cliente (CMEK).

Cleanup Policies

  • Elimina artefatti: Gli artefatti saranno eliminati secondo i criteri della politica di pulizia.

  • Esecuzione in prova: (Quella predefinita) Gli artefatti non saranno eliminati. Le politiche di pulizia saranno valutate e gli eventi di eliminazione di prova inviati a Cloud Audit Logging.

Vulnerability Scanning

È possibile abilitare lo scanner di vulnerabilità che controllerà le vulnerabilità all'interno delle immagini dei container.

Enumeration

# Get repositories
gcloud artifacts repositories list
gcloud artifacts repositories describe --location <location> <repo-name>
gcloud artifacts versions list --repository=<repo-name> -location <location> --package <package-name>

# Get settings of a repository (example using python but could be other)
gcloud artifacts print-settings python --repository <repo-name> --location <location>

# Get docker images
gcloud artifacts docker images list us-central1-docker.pkg.dev/<proj-name>/<repo-name>

# Get packages (like python and others...)
gcloud artifacts packages list --repository <repo-name> --location <location>

# Get SBOMB artifacts
gcloud artifacts sbom list

# Get vulnerabilities (docker images)
gcloud artifacts vulnerabilities list us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
gcloud artifacts docker images list-vulnerabilities projects/<proj-name>/locations/<location>/scans/<scan-uuid>

Elevazione dei privilegi

GCP - Artifact Registry Privesc

Accesso non autenticato

GCP - Artifact Registry Unauthenticated Enum

Post-sfruttamento

GCP - Artifact Registry Post Exploitation

Persistenza

GCP - Artifact Registry Persistence
Supporta HackTricks

Last updated