GCP - Artifact Registry Enum

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Google Cloud Artifact Registry to w pełni zarządzana usługa, która umożliwia zarządzanie, przechowywanie i zabezpieczanie artefaktów oprogramowania. Jest to w zasadzie repozytorium do przechowywania zależności budowania, takich jak obrazy Docker, pakiety Maven, paczki npm i inne rodzaje artefaktów. Jest powszechnie używane w potokach CI/CD do przechowywania i wersjonowania artefaktów produkowanych podczas procesu tworzenia oprogramowania.

Główne cechy Artifact Registry to:

  1. Jednolite repozytorium: Obsługuje wiele rodzajów artefaktów, umożliwiając posiadanie jednego repozytorium dla obrazów Docker, pakietów językowych (takich jak Maven dla Javy, npm dla Node.js) i innych rodzajów artefaktów, zapewniając jednolite kontrolę dostępu i jednolite widoki wszystkich artefaktów.

  2. W pełni zarządzane: Jako usługa zarządzana, zajmuje się infrastrukturą, skalowaniem i zabezpieczeniami, zmniejszając nakład konserwacji dla użytkowników.

  3. Precyzyjna kontrola dostępu: Integruje się z zarządzaniem tożsamością i dostępem (IAM) w Google Cloud, umożliwiając określenie, kto może uzyskać dostęp, przesyłać lub pobierać artefakty z repozytoriów.

  4. Replikacja geograficzna: Obsługuje replikację artefaktów w wielu regionach, poprawiając prędkość 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 zapewnić, że przechowywane artefakty są bezpieczne i wolne od znanych problemów związanych z bezpieczeństwem.

Formaty i tryby

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

  • Standardowe repozytorium: Tryb domyślny do przechowywania własnych artefaktów (takich jak obrazy Docker, pakiety Maven) bezpośrednio w GCP. Jest bezpieczne, skalowalne i dobrze integruje się z ekosystemem 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 wynikającym z zmian w zależnościach w górę strumienia i redukuje opóźnienia poprzez buforowanie często używanych artefaktów.

  • Repozytorium wirtualne (jeśli dostępne): Zapewnia jednolite interfejsy dostępu do wielu (standardowych lub zdalnych) repozytoriów za pomocą jednego punktu końcowego, upraszczając konfigurację po stronie klienta i zarządzanie dostępem do artefaktów rozproszonych w różnych repozytoriach.

  • W przypadku repozytorium wirtualnego będziesz musiał wybrać repozytoria i nadać im priorytet (repozytorium o najwyższym priorytecie będzie używane).

  • Możesz mieszać zdalne i standardowe repozytoria w jednym wirtualnym, jeśli priorytet dla zdalnego jest wyższy niż dla standardowego, używane będą paczki z repozytorium zdalnego (np. PyPi). Może to prowadzić do konfuzji zależności.

Należy zauważyć, że w zdalnej wersji Docker można podać nazwę użytkownika i token dostępu do Docker Hub. Token jest następnie przechowywany w Secret Managerze.

Szyfrowanie

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

Polityki czyszczenia

  • Usuń artefakty: Artefakty zostaną usunięte zgodnie z kryteriami polityki czyszczenia.

  • Symulacja: (Domyślna) Artefakty nie zostaną usunięte. Polityki czyszczenia zostaną ocenione, a testowe zdarzenia usuwania zostaną wysłane do Cloud Audit Logging.

Skanowanie podatności

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

Wyliczanie

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

pageGCP - Artifact Registry Privesc

Nieuwierzytelniony dostęp

pageGCP - Artifact Registry Unauthenticated Enum

Po eksploatacji

pageGCP - Artifact Registry Post Exploitation

Trwałość

pageGCP - Artifact Registry Persistence
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated