GCP - Artifact Registry Enum

Soutenez HackTricks

Informations de Base

Google Cloud Artifact Registry est un service entièrement géré qui vous permet de gérer, stocker et sécuriser vos artefacts logiciels. C'est essentiellement un référentiel pour stocker les dépendances de construction, telles que les images Docker, Maven, les packages npm et d'autres types d'artefacts. Il est couramment utilisé dans les pipelines CI/CD pour stocker et versionner les artefacts produits lors du processus de développement logiciel.

Les principales caractéristiques d'Artifact Registry comprennent :

  1. Dépôt Unifié : Il prend en charge plusieurs types d'artefacts, vous permettant d'avoir un seul référentiel pour les images Docker, les packages de langage (comme Maven de Java, npm de Node.js) et d'autres types d'artefacts, permettant des contrôles d'accès cohérents et une vue unifiée de tous vos artefacts.

  2. Entièrement Géré : En tant que service géré, il s'occupe de l'infrastructure sous-jacente, de l'évolutivité et de la sécurité, réduisant la charge de maintenance pour les utilisateurs.

  3. Contrôle d'Accès Finement Granulaire : Il s'intègre à la Gestion des Identités et des Accès (IAM) de Google Cloud, vous permettant de définir qui peut accéder, télécharger ou téléverser des artefacts dans vos référentiels.

  4. Géo-réplication : Il prend en charge la réplication des artefacts dans plusieurs régions, améliorant la vitesse de téléchargement et garantissant la disponibilité.

  5. Intégration avec les Services Google Cloud : Il fonctionne parfaitement avec d'autres services GCP comme Cloud Build, Kubernetes Engine et Compute Engine, en en faisant un choix pratique pour les équipes travaillant déjà dans l'écosystème Google Cloud.

  6. Sécurité : Offre des fonctionnalités telles que l'analyse de vulnérabilités et l'analyse de conteneurs pour garantir que les artefacts stockés sont sécurisés et exempts de problèmes de sécurité connus.

Formats et Modes

Lors de la création d'un nouveau référentiel, il est possible de sélectionner un format/type de référentiel parmi plusieurs comme Docker, Maven, npm, Python... et le mode qui peut généralement être l'un de ces trois :

  • Référentiel Standard : Mode par défaut pour stocker vos propres artefacts (comme les images Docker, les packages Maven) directement dans GCP. Il est sécurisé, évolutif et s'intègre bien dans l'écosystème Google Cloud.

  • Référentiel Distant (si disponible) : Agit comme un proxy pour mettre en cache les artefacts provenant d'externes, des référentiels publics. Cela aide à éviter les problèmes liés aux modifications des dépendances en amont et réduit la latence en mettant en cache les artefacts fréquemment consultés.

  • Référentiel Virtuel (si disponible) : Fournit une interface unifiée pour accéder à plusieurs référentiels (standard ou distants) via un seul point d'accès, simplifiant la configuration côté client et la gestion de l'accès pour les artefacts répartis dans divers référentiels.

  • Pour un référentiel virtuel, vous devrez sélectionner des référentiels et leur donner une priorité (le référentiel avec la plus grande priorité sera utilisé).

  • Vous pouvez mélanger des référentiels distants et standards dans un virtuel, si la priorité du distant est supérieure à celle du standard, les packages du distant (PyPi par exemple) seront utilisés. Cela pourrait entraîner une Confusion de Dépendance.

Notez que dans la version distante de Docker, il est possible de donner un nom d'utilisateur et un jeton pour accéder à Docker Hub. Le jeton est ensuite stocké dans le Gestionnaire de Secrets.

Chiffrement

Comme prévu, par défaut une clé gérée par Google est utilisée mais une clé gérée par le client peut être indiquée (CMEK).

Politiques de Nettoyage

  • Supprimer les artefacts : Les artefacts seront supprimés selon les critères de la politique de nettoyage.

  • Essai à Sec : (Par défaut) Les artefacts ne seront pas supprimés. Les politiques de nettoyage seront évaluées et des événements de suppression de test seront envoyés à l'audit de journalisation Cloud.

Analyse de Vulnérabilités

Il est possible d'activer le scanner de vulnérabilités qui vérifiera les vulnérabilités à l'intérieur des images de conteneurs.

Énumération

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

Élévation de privilèges

GCP - Artifact Registry Privesc

Accès non authentifié

GCP - Artifact Registry Unauthenticated Enum

Post-exploitation

GCP - Artifact Registry Post Exploitation

Persistance

GCP - Artifact Registry Persistence
Soutenez HackTricks

Last updated