Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Credenciales que salen por el servicio de metadatos

5 tareas · 30 min · Principiante

Cada máquina virtual en la nube puede preguntarle a un servicio interno "¿quién soy y qué credenciales tengo?", y ese servicio de metadatos le entrega las claves temporales del rol de la instancia. Es cómodo — la aplicación no guarda contraseñas — y es una trampa si se configura mal: si un fallo de la aplicación permite que una petición hecha desde fuera se reenvíe hacia ese servicio interno, el atacante se lleva las credenciales de la máquina sin haber entrado en ella. En la cuenta de Cobalto hay una instancia con la versión insegura del servicio y un rol amplio detrás. En esta sala aprendes a reconocer las dos piezas y a cerrarlas. La superficie ofensiva la ves en detalle en el curso de profundizar; aquí el trabajo es defenderla.

0 de 5 · 0%

Objetivo de la sala

Cada máquina virtual en la nube puede preguntarle a un servicio interno "¿quién soy y qué credenciales tengo?", y ese servicio de metadatos le entrega las claves temporales del rol de la instancia. Es cómodo — la aplicación no guarda contraseñas — y es una trampa si se configura mal: si un fallo de la aplicación permite que una petición hecha desde fuera se reenvíe hacia ese servicio interno, el atacante se lleva las credenciales de la máquina sin haber entrado en ella. En la cuenta de Cobalto hay una instancia con la versión insegura del servicio y un rol amplio detrás. En esta sala aprendes a reconocer las dos piezas y a cerrarlas. La superficie ofensiva la ves en detalle en el curso de profundizar; aquí el trabajo es defenderla.

El servicio de metadatos de instancia vive en una dirección interna fija, alcanzable solo desde dentro de la propia máquina. Entre otras cosas, entrega las credenciales temporales del rol que la instancia tiene asignado: unas claves que sirven para actuar como ese rol en la nube. Mientras solo procesos legítimos de la máquina lo consulten, es un mecanismo sano y hasta más seguro que guardar una clave fija. El problema aparece cuando algo que no es la máquina consigue que la máquina haga esa consulta por él.

Entender que el servicio de metadatos reparte credenciales del rol es lo que explica por qué robar una petición hacia él equivale a robar la identidad de la máquina.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

¿Qué entrega el servicio de metadatos de una instancia cuando se le consulta desde dentro?

Ver pista de ayuda

Sirve para que la aplicación actúe como su rol sin guardar una clave fija.

Hay dos versiones del servicio. La primera responde a cualquier petición que llegue a su dirección interna, sin más. La segunda exige que quien pregunte obtenga antes un vale de sesión con una petición especial que un simple reenvío desde fuera no puede hacer. La instancia de Cobalto usa la primera. Con ella, si la aplicación tiene un fallo que permite pedirle que traiga una dirección arbitraria —y esa dirección es la del servicio de metadatos—, la respuesta con las credenciales vuelve al atacante. Es robo de credenciales por el servicio de metadatos de instancia: no se explota el servicio, se explota que la máquina lo consulte de parte de otro.

La versión que responde sin exigir un vale de sesión es la que convierte un fallo de la aplicación en un robo de las credenciales de la máquina.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

La instancia usa la versión del servicio de metadatos que responde a cualquier petición interna. ¿Por qué es un riesgo?

Ver pista de ayuda

El servicio no se rompe; se le pregunta de parte de otro. ¿Qué lo impide?

Robar las credenciales de la instancia solo vale lo que esas credenciales permitan hacer. La instancia de Cobalto tiene asignado un rol amplio —puede leer varios almacenamientos y tocar la base de datos— cuando la aplicación que corre allí solo necesita leer un almacenamiento de imágenes. Así, un robo por metadatos no se queda en la máquina: hereda todo lo que el rol puede hacer en la cuenta. Es la misma lección del permiso de más, ahora combinada con la ventana de los metadatos: la exposición y el privilegio se multiplican, no se suman. Cerrar solo una de las dos deja la mitad del problema.

Un rol de instancia recortado al mínimo hace que, incluso si las credenciales se filtran, sirvan para muy poco.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

La instancia tiene un rol que puede tocar varios almacenamientos y la base de datos, y su aplicación solo lee imágenes. ¿Qué añade eso al riesgo de metadatos?

Ver pista de ayuda

Las credenciales robadas valen exactamente lo que el rol permita.

El arreglo cierra las dos piezas a la vez. Primero, obligar a la versión del servicio que exige el vale de sesión, de modo que un reenvío desde fuera ya no obtenga respuesta — en AWS es requerir la versión 2 del servicio en la instancia; en Azure, el servicio de metadatos ya exige una cabecera equivalente, y se comprueba que la aplicación no la reenvíe. Segundo, recortar el rol de la instancia al mínimo que la aplicación usa. Con la ventana cerrada y el rol recortado, ni se roban las credenciales fácilmente ni sirven de mucho si se roban. Hacer solo lo primero deja un rol amplio esperando; solo lo segundo, una ventana abierta.

Requerir el vale de sesión y recortar el rol son un solo arreglo en dos mitades: quitar la vía y quitarle el valor a lo que saldría por ella.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

¿Cuál es la corrección completa del riesgo de metadatos en la instancia de Cobalto?

Ver pista de ayuda

Son dos piezas —la ventana y el privilegio—; el arreglo cierra las dos.

Abre el laboratorio de instancias de Cobalto. Lee la configuración de la instancia de la web —la versión de su servicio de metadatos y el rol que lleva adjunto— y después el informe de la revisión, que cierra con el código del hallazgo.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Confirma en la instancia la versión insegura del servicio de metadatos y el rol amplio adjunto, y escribe el código del hallazgo que cierra el informe de la revisión de metadatos.

Formato esperado: IMD-____

Ver pista de ayuda

Con la terminal, `cat revision.txt`. El hallazgo es la versión del servicio que responde sin vale de sesión más el rol amplio; el código está en la última línea.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build bcc89e

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad