1. Descripción técnica
Unauthenticated Docker Registry Exposure aparece cuando la API de un registry permite a clientes no autenticados enumerar repositorios, consultar manifests o descargar blobs. Una imagen no contiene únicamente el sistema de archivos final: sus capas y configuración también pueden conservar artefactos incorporados durante la construcción.
Eliminar un secreto en una capa posterior no lo elimina de las capas anteriores. Si el registry entrega los blobs, un atacante puede reconstruir la historia de la imagen y recuperar claves, configuraciones o credenciales.
1.1. Mecanismo
// renderizando diagrama…
2. Impacto
La exposición puede revelar código, topología de aplicaciones, versiones, variables de entorno, claves privadas y credenciales. Si existe acceso de escritura, el impacto puede incluir sustitución de imágenes y compromiso de la cadena de suministro, pero esa capacidad debe verificarse por separado.
3. Condiciones necesarias
- El registry es alcanzable desde la red del atacante.
- La API permite operaciones de lectura sin autenticación o con permisos excesivos.
- Existen repositorios o tags enumerables o conocidos.
- Las imágenes contienen información sensible en su configuración o capas.
Un endpoint que responde en /v2/ no demuestra por sí solo acceso a repositorios privados.
4. Validación y detección
Se comprueba primero /v2/ y después, de forma no destructiva, la capacidad de consultar catálogo, tags y manifests. Las respuestas 401 con desafío de autenticación deben distinguirse de un acceso anónimo real.
En defensa se revisan logs de enumeración, descargas masivas de blobs, accesos desde redes no previstas y repositorios que contienen secretos. El análisis de imágenes debe incluir todas las capas, no sólo el sistema de archivos resultante.
5. Explotación documentada en los writeups
5.1. 044-doll
El registry del puerto 1007 permite enumerar dolly, consultar su manifest y descargar las capas sin autenticación. El manifest expone una passphrase y la imagen contiene la clave privada SSH de bela.
6. Mitigación
- Exigir autenticación y autorización por repositorio.
- Restringir el registry a redes y consumidores necesarios.
- Usar TLS para evitar exposición de tokens y contenido en tránsito.
- No introducir secretos durante la construcción de imágenes.
- Usar mecanismos de secretos del sistema de build y rotar cualquier valor ya incorporado.
- Escanear manifests, configuración y todas las capas antes de publicar.
- Deshabilitar operaciones de catálogo o escritura que no sean necesarias.
7. Clasificación
- CWE relacionada: CWE-306, Missing Authentication for Critical Function
- CWE de impacto: CWE-200, Exposure of Sensitive Information
- Vector: API de registry accesible sin control de acceso suficiente
- Impacto principal: divulgación de imágenes y secretos