GCP - Artifact Registry Privesc
Artifact Registry
Para más información sobre Artifact Registry, consulta:
GCP - Artifact Registry Enumartifactregistry.repositories.uploadArtifacts
Con este permiso, un atacante podría subir nuevas versiones de los artefactos con código malicioso, como imágenes de Docker:
Se verificó que es posible subir una nueva imagen docker maliciosa con el mismo nombre y etiqueta que la ya presente, por lo que la anterior perderá la etiqueta y la próxima vez que se descargue la imagen con esa etiqueta, se descargará la maliciosa.
No es posible subir una biblioteca de python con la misma versión que la ya presente, pero es posible subir versiones mayores (o agregar un extra .0
al final de la versión si eso funciona -no en python, sin embargo-), o eliminar la última versión y subir una nueva con (necesario artifactregistry.versions.delete)
:
artifactregistry.repositories.downloadArtifacts
artifactregistry.repositories.downloadArtifacts
Con este permiso puedes descargar artefactos y buscar información sensible y vulnerabilidades.
Descargar una imagen de Docker:
Descargar una python biblioteca:
¿Qué sucede si se mezclan un registro remoto y un registro estándar en uno virtual y un paquete existe en ambos? Consulta esta página:
artifactregistry.tags.delete
, artifactregistry.versions.delete
, artifactregistry.packages.delete
, (artifactregistry.repositories.get
, artifactregistry.tags.get
, artifactregistry.tags.list
)
artifactregistry.tags.delete
, artifactregistry.versions.delete
, artifactregistry.packages.delete
, (artifactregistry.repositories.get
, artifactregistry.tags.get
, artifactregistry.tags.list
)Elimina artefactos del registro, como imágenes de docker:
artifactregistry.repositories.delete
artifactregistry.repositories.delete
Elimina un repositorio completo (incluso si tiene contenido):
artifactregistry.repositories.setIamPolicy
artifactregistry.repositories.setIamPolicy
Un atacante con este permiso podría otorgarse permisos para realizar algunos de los ataques de repositorio mencionados anteriormente.
Pivotando a otros Servicios a través de Artifact Registry Read & Write
Cloud Functions
Cuando se crea una Cloud Function, se envía una nueva imagen de docker al Artifact Registry del proyecto. Intenté modificar la imagen con una nueva, e incluso eliminar la imagen actual (y la imagen cache
) y nada cambió, la función en la nube siguió funcionando. Por lo tanto, podría ser posible abusar de un ataque de Race Condition como con el bucket para cambiar el contenedor de docker que se ejecutará, pero simplemente modificando la imagen almacenada no es posible comprometer la Cloud Function.
App Engine
A pesar de que App Engine crea imágenes de docker dentro de Artifact Registry. Se probó que incluso si modificas la imagen dentro de este servicio y eliminas la instancia de App Engine (para que se despliegue una nueva), el código ejecutado no cambia. Podría ser posible que al realizar un ataque de Race Condition como con los buckets, podría ser posible sobrescribir el código ejecutado, pero esto no fue probado.
Last updated