GCP - Artifact Registry Enum

Support HackTricks

Información Básica

Google Cloud Artifact Registry es un servicio completamente gestionado que te permite gestionar, almacenar y asegurar tus artefactos de software. Es esencialmente un repositorio para almacenar dependencias de construcción, como imágenes de Docker, Maven, paquetes de npm y otros tipos de artefactos. Se utiliza comúnmente en pipelines de CI/CD para almacenar y versionar los artefactos producidos durante el proceso de desarrollo de software.

Las características clave de Artifact Registry incluyen:

  1. Repositorio Unificado: Soporta múltiples tipos de artefactos, permitiéndote tener un solo repositorio para imágenes de Docker, paquetes de lenguaje (como Maven de Java, npm de Node.js) y otros tipos de artefactos, lo que permite controles de acceso consistentes y una vista unificada de todos tus artefactos.

  2. Totalmente Gestionado: Como servicio gestionado, se encarga de la infraestructura subyacente, escalado y seguridad, reduciendo la carga de mantenimiento para los usuarios.

  3. Control de Acceso Granular: Se integra con la Gestión de Identidad y Acceso (IAM) de Google Cloud, permitiéndote definir quién puede acceder, subir o descargar artefactos en tus repositorios.

  4. Geo-replicación: Soporta la replicación de artefactos a través de múltiples regiones, mejorando la velocidad de descargas y asegurando disponibilidad.

  5. Integración con Servicios de Google Cloud: Funciona sin problemas con otros servicios de GCP como Cloud Build, Kubernetes Engine y Compute Engine, lo que lo convierte en una opción conveniente para equipos que ya trabajan dentro del ecosistema de Google Cloud.

  6. Seguridad: Ofrece características como escaneo de vulnerabilidades y análisis de contenedores para ayudar a asegurar que los artefactos almacenados sean seguros y estén libres de problemas de seguridad conocidos.

Formatos y Modos

Al crear un nuevo repositorio, es posible seleccionar el formato/tipo del repositorio entre varios como Docker, Maven, npm, Python... y el modo que generalmente puede ser uno de estos tres:

  • Repositorio Estándar: Modo predeterminado para almacenar tus propios artefactos (como imágenes de Docker, paquetes de Maven) directamente en GCP. Es seguro, escalable y se integra bien dentro del ecosistema de Google Cloud.

  • Repositorio Remoto (si está disponible): Actúa como un proxy para almacenar en caché artefactos de repositorios externos, públicos. Ayuda a prevenir problemas por cambios en las dependencias y reduce la latencia al almacenar en caché artefactos de acceso frecuente.

  • Repositorio Virtual (si está disponible): Proporciona una interfaz unificada para acceder a múltiples (estándar o remotos) repositorios a través de un solo punto final, simplificando la configuración del lado del cliente y la gestión de acceso para artefactos distribuidos en varios repositorios.

  • Para un repositorio virtual, necesitarás seleccionar repositorios y darles una prioridad (el repositorio con la mayor prioridad será utilizado).

  • Puedes mezclar repositorios remotos y estándar en uno virtual, si la prioridad del remoto es mayor que la estándar, se utilizarán paquetes del remoto (por ejemplo, PyPi). Esto podría llevar a una Confusión de Dependencias.

Ten en cuenta que en la versión Remota de Docker es posible dar un nombre de usuario y token para acceder a Docker Hub. El token se almacena en el Secret Manager.

Cifrado

Como se esperaba, por defecto se utiliza una clave gestionada por Google, pero se puede indicar una clave gestionada por el cliente (CMEK).

Políticas de Limpieza

  • Eliminar artefactos: Los artefactos serán eliminados de acuerdo con la política de limpieza.

  • Prueba en seco: (La predeterminada) Los artefactos no serán eliminados. Se evaluarán las políticas de limpieza y se enviarán eventos de prueba de eliminación a Cloud Audit Logging.

Escaneo de Vulnerabilidades

Es posible habilitar el escáner de vulnerabilidades que verificará si hay vulnerabilidades dentro de imágenes de contenedores.

Enumeración

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

Escalamiento de Privilegios

GCP - Artifact Registry Privesc

Acceso No Autenticado

GCP - Artifact Registry Unauthenticated Enum

Post-Explotación

GCP - Artifact Registry Post Exploitation

Persistencia

GCP - Artifact Registry Persistence
Apoya a HackTricks

Last updated