GCP - Artifact Registry Enum

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Información Básica

Google Cloud Artifact Registry es un servicio completamente gestionado que te permite administrar, almacenar y asegurar tus artefactos de software. Es esencialmente un repositorio para almacenar dependencias de compilación, como imágenes de Docker, Maven, paquetes 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: Admite múltiples tipos de artefactos, permitiéndote tener un único repositorio para imágenes de Docker, paquetes de lenguajes (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. Completamente Gestionado: Como un servicio gestionado, se encarga de la infraestructura subyacente, escalabilidad 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: Admite la replicación de artefactos a través de múltiples regiones, mejorando la velocidad de descargas y asegurando la 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 análisis de vulnerabilidades y análisis de contenedores para ayudar a asegurar que los artefactos almacenados estén seguros y 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 Maven) directamente en GCP. Es seguro, escalable e 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 de cambios en las dependencias aguas arriba 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 repositorios (estándar o remoto) a través de un único 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 asignarles 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 del estándar, se utilizarán paquetes del remoto (por ejemplo, PyPi). Esto podría llevar a una Confusión de Dependencia.

Nota 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 entonces en el Secret Manager.

Encriptación

Como se espera, 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 a los criterios de la política de limpieza.

  • Ejecución en seco: (La opción predeterminada) Los artefactos no serán eliminados. Las políticas de limpieza serán evaluadas y se enviarán eventos de eliminación de prueba al Registro de Auditoría de Cloud.

Análisis de Vulnerabilidades

Es posible habilitar el escáner de vulnerabilidades que comprobará la existencia de 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>

Escalación de Privilegios

pageGCP - Artifact Registry Privesc

Acceso No Autenticado

pageGCP - Artifact Registry Unauthenticated Enum

Post-Explotación

pageGCP - Artifact Registry Post Exploitation

Persistencia

pageGCP - Artifact Registry Persistence
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización