GCP - Artifact Registry Enum

Sostieni HackTricks

Informazioni di Base

Google Cloud Artifact Registry è un servizio completamente gestito che ti permette di gestire, archiviare e proteggere i tuoi artefatti software. È essenzialmente un repository per archiviare le dipendenze di build, come immagini Docker, pacchetti Maven, pacchetti npm e altri tipi di artefatti. Viene comunemente utilizzato nei flussi di lavoro CI/CD per archiviare e versionare gli artefatti prodotti durante il processo di sviluppo del software.

Le principali caratteristiche di Artifact Registry includono:

  1. Repository Unificato: Supporta diversi tipi di artefatti, consentendoti di avere un singolo repository per immagini Docker, pacchetti di linguaggio (come Maven di Java, npm di Node.js) e altri tipi di artefatti, consentendo controlli di accesso coerenti e una visione unificata su tutti i tuoi artefatti.

  2. Completamente Gestito: Essendo un servizio gestito, si occupa dell'infrastruttura sottostante, dello scaling e della sicurezza, riducendo l'onere della manutenzione per gli utenti.

  3. Controllo degli Accessi Dettagliato: Si integra con la Gestione dell'Identità e degli Accessi (IAM) di Google Cloud, consentendoti di definire chi può accedere, caricare o scaricare artefatti nei tuoi repository.

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

  5. Integrazione con i Servizi Google Cloud: Funziona in modo trasparente con altri servizi GCP come Cloud Build, Kubernetes Engine e Compute Engine, rendendolo una scelta conveniente per i team che già lavorano all'interno dell'ecosistema Google Cloud.

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

Formati e Modalità

Nel creare 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): Agisce come un proxy per memorizzare in cache artefatti da repository esterni, pubblici. Aiuta a prevenire problemi derivanti da modifiche delle dipendenze a monte e riduce la latenza memorizzando in cache gli artefatti frequentemente accessati.

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

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

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

Si noti 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 Gestore delle Chiavi.

Crittografia

Come previsto, per impostazione predefinita viene utilizzata una chiave gestita da Google, ma è possibile indicare una chiave gestita dal cliente (CMEK).

Politiche di Pulizia

  • Elimina artefatti: Gli artefatti verranno eliminati in base ai criteri di pulizia.

  • Prova a secco: (Predefinito) Gli artefatti non verranno eliminati. Le politiche di pulizia verranno valutate e gli eventi di eliminazione di prova inviati al Registro di Audit di Cloud.

Scansione delle Vulnerabilità

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

Enumerazione

# 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>

Escalazione dei privilegi

GCP - Artifact Registry Privesc

Accesso non autenticato

GCP - Artifact Registry Unauthenticated Enum

Post-Esploitation

GCP - Artifact Registry Post Exploitation

Persistenza

GCP - Artifact Registry Persistence
Supporta HackTricks

Last updated