GCP - Artifact Registry Enum

Support HackTricks

Grundinformationen

Google Cloud Artifact Registry ist ein vollständig verwalteter Dienst, der es Ihnen ermöglicht, Ihre Softwareartefakte zu verwalten, zu speichern und zu sichern. Es ist im Wesentlichen ein Repository zum Speichern von Build-Abhängigkeiten, wie Docker-Images, Maven, npm-Paketen und anderen Arten von Artefakten. Es wird häufig in CI/CD-Pipelines verwendet, um die während des Softwareentwicklungsprozesses produzierten Artefakte zu speichern und zu versionieren.

Wichtige Funktionen des Artifact Registry umfassen:

  1. Einheitliches Repository: Es unterstützt mehrere Arten von Artefakten, sodass Sie ein einzelnes Repository für Docker-Images, Sprachpakete (wie Javas Maven, Node.js npm) und andere Arten von Artefakten haben können, was konsistente Zugriffskontrollen und eine einheitliche Ansicht über alle Ihre Artefakte ermöglicht.

  2. Vollständig verwaltet: Als verwalteter Dienst kümmert es sich um die zugrunde liegende Infrastruktur, Skalierung und Sicherheit, wodurch der Wartungsaufwand für die Benutzer reduziert wird.

  3. Feingranulare Zugriffskontrolle: Es integriert sich mit Googles Identity and Access Management (IAM), sodass Sie definieren können, wer auf Ihre Artefakte in Ihren Repositories zugreifen, sie hochladen oder herunterladen kann.

  4. Geo-Replikation: Es unterstützt die Replikation von Artefakten über mehrere Regionen hinweg, was die Downloadgeschwindigkeit verbessert und die Verfügbarkeit sicherstellt.

  5. Integration mit Google Cloud-Diensten: Es funktioniert nahtlos mit anderen GCP-Diensten wie Cloud Build, Kubernetes Engine und Compute Engine, was es zu einer praktischen Wahl für Teams macht, die bereits im Google Cloud-Ökosystem arbeiten.

  6. Sicherheit: Bietet Funktionen wie Schwachstellenscanning und Containeranalyse, um sicherzustellen, dass die gespeicherten Artefakte sicher und frei von bekannten Sicherheitsproblemen sind.

Formate und Modi

Beim Erstellen eines neuen Repositories ist es möglich, das Format/den Typ des Repositories aus mehreren wie Docker, Maven, npm, Python... auszuwählen und den Modus, der normalerweise einer dieser drei sein kann:

  • Standard-Repository: Standardmodus zum Speichern Ihrer eigenen Artefakte (wie Docker-Images, Maven-Pakete) direkt in GCP. Es ist sicher, skalierbar und integriert sich gut in das Google Cloud-Ökosystem.

  • Remote-Repository (falls verfügbar): Fungiert als Proxy zum Caching von Artefakten aus externen, öffentlichen Repositories. Es hilft, Probleme durch Änderungen von Abhängigkeiten upstream zu verhindern und reduziert die Latenz, indem häufig verwendete Artefakte zwischengespeichert werden.

  • Virtuelles Repository (falls verfügbar): Bietet eine einheitliche Schnittstelle zum Zugriff auf mehrere (Standard- oder Remote-) Repositories über einen einzigen Endpunkt, was die clientseitige Konfiguration und das Zugriffsmanagement für über verschiedene Repositories verteilte Artefakte vereinfacht.

  • Für ein virtuelles Repository müssen Sie Repositories auswählen und ihnen eine Priorität geben (das Repository mit der höchsten Priorität wird verwendet).

  • Sie können Remote- und Standard-Repositories in einem virtuellen kombinieren, wenn die Priorität des Remote höher ist als die des Standard, werden Pakete von Remote (z. B. PyPi) verwendet. Dies könnte zu einer Dependency Confusion führen.

Beachten Sie, dass es in der Remote-Version von Docker möglich ist, einen Benutzernamen und ein Token zum Zugriff auf Docker Hub anzugeben. Das Token wird dann im Secret Manager gespeichert.

Verschlüsselung

Wie erwartet wird standardmäßig ein von Google verwalteter Schlüssel verwendet, aber ein vom Kunden verwalteter Schlüssel kann angegeben werden (CMEK).

Bereinigungspolitiken

  • Artefakte löschen: Artefakte werden gemäß den Kriterien der Bereinigungspolitik gelöscht.

  • Trockenlauf: (Standard) Artefakte werden nicht gelöscht. Die Bereinigungspolitiken werden bewertet und Testlöschereignisse an Cloud Audit Logging gesendet.

Schwachstellenscanning

Es ist möglich, den Schwachstellenscanner zu aktivieren, der nach Schwachstellen in Container-Images sucht.

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>

Privilegieneskalation

Unauthentifizierter Zugriff

Post-Exploitation

Persistenz

Unterstütze HackTricks

Last updated