GCP - Artifact Registry Enum

Wsparcie dla HackTricks

Podstawowe informacje

Google Cloud Artifact Registry to w pełni zarządzana usługa, która pozwala na zarządzanie, przechowywanie i zabezpieczanie swoich artefaktów oprogramowania. To zasadniczo repozytorium do przechowywania zależności budowy, takich jak obrazy Docker, Maven, pakiety npm i inne typy artefaktów. Jest powszechnie używane w pipeline'ach CI/CD do przechowywania i wersjonowania artefaktów produkowanych w trakcie procesu rozwoju oprogramowania.

Kluczowe cechy Artifact Registry obejmują:

  1. Zunifikowane repozytorium: Obsługuje wiele typów artefaktów, co pozwala na posiadanie jednego repozytorium dla obrazów Docker, pakietów językowych (takich jak Maven dla Javy, npm dla Node.js) i innych typów artefaktów, umożliwiając spójne kontrole dostępu i zunifikowany widok wszystkich artefaktów.

  2. W pełni zarządzane: Jako usługa zarządzana, zajmuje się infrastrukturą, skalowaniem i bezpieczeństwem, redukując obciążenie konserwacyjne dla użytkowników.

  3. Szczegółowa kontrola dostępu: Integruje się z Google Cloud Identity and Access Management (IAM), pozwalając na definiowanie, kto może uzyskiwać dostęp, przesyłać lub pobierać artefakty w twoich repozytoriach.

  4. Geo-replikacja: Obsługuje replikację artefaktów w wielu regionach, poprawiając szybkość pobierania i zapewniając dostępność.

  5. Integracja z usługami Google Cloud: Działa bezproblemowo z innymi usługami GCP, takimi jak Cloud Build, Kubernetes Engine i Compute Engine, co czyni go wygodnym wyborem dla zespołów już pracujących w ekosystemie Google Cloud.

  6. Bezpieczeństwo: Oferuje funkcje takie jak skanowanie podatności i analiza kontenerów, aby pomóc zapewnić, że przechowywane artefakty są bezpieczne i wolne od znanych problemów z bezpieczeństwem.

Format i tryby

Podczas tworzenia nowego repozytorium można wybrać format/typ repozytorium spośród kilku, takich jak Docker, Maven, npm, Python... oraz tryb, który zazwyczaj może być jednym z tych trzech:

  • Repozytorium standardowe: Domyślny tryb dla przechowywania własnych artefaktów (takich jak obrazy Docker, pakiety Maven) bezpośrednio w GCP. Jest bezpieczne, skalowalne i dobrze integruje się w ekosystemie Google Cloud.

  • Repozytorium zdalne (jeśli dostępne): Działa jako proxy do buforowania artefaktów z zewnętrznych, publicznych repozytoriów. Pomaga zapobiegać problemom związanym ze zmianami zależności w upstreamie i redukuje opóźnienia, buforując często używane artefakty.

  • Repozytorium wirtualne (jeśli dostępne): Zapewnia zunifikowany interfejs do uzyskiwania dostępu do wielu (standardowych lub zdalnych) repozytoriów przez jeden punkt końcowy, upraszczając konfigurację po stronie klienta i zarządzanie dostępem do artefaktów rozproszonych w różnych repozytoriach.

  • Dla repozytorium wirtualnego będziesz musiał wybrać repozytoria i nadać im priorytet (repozytorium z najwyższym priorytetem będzie używane).

  • Możesz łączyć repozytoria zdalne i standardowe w wirtualnym, jeśli priorytet zdalnego jest większy niż standardowego, pakiety z zdalnego (na przykład PyPi) będą używane. Może to prowadzić do Dependency Confusion.

Zauważ, że w zdalnej wersji Docker możliwe jest podanie nazwy użytkownika i tokena do uzyskania dostępu do Docker Hub. Token jest następnie przechowywany w Secret Manager.

Szyfrowanie

Jak się spodziewano, domyślnie używany jest klucz zarządzany przez Google, ale można wskazać klucz zarządzany przez klienta (CMEK).

Polityki czyszczenia

  • Usuń artefakty: Artefakty będą usuwane zgodnie z kryteriami polityki czyszczenia.

  • Symulacja: (Domyślna) Artefakty nie będą usuwane. Polityki czyszczenia będą oceniane, a testowe zdarzenia usunięcia wysyłane do Cloud Audit Logging.

Skanowanie podatności

Możliwe jest włączenie skanera podatności, który sprawdzi podatności w obrazach kontenerów.

Enumeryzacja

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

Eskalacja Uprawnień

GCP - Artifact Registry Privesc

Dostęp bez uwierzytelnienia

GCP - Artifact Registry Unauthenticated Enum

Poeksploatacja

GCP - Artifact Registry Post Exploitation

Utrzymywanie

GCP - Artifact Registry Persistence
Wsparcie HackTricks

Last updated