5 abr. 2018

Eludiendo la autenticación Auth0

Nahuel Grisolía de Cinta Infinita ha publicado una falla (ya solucionada) que ataca a la Consola de Administración de Auth0, una de las mayores plataformas de identidad del mundo y con de 2.000 clientes empresariales y la gestión de 1,5 mil millones de inicios de sesión diarios.

"Knocking Down the Big Door" describe una vulnerabilidad que permitiría a los usuarios malintencionados ejecutar ataques entre empresas y acceder a cualquier aplicación protegida con Auth0. Lo único que el usuario malicioso necesitaba para realizar el ataque es acceso administrativo a cualquier cuenta de Auth0 y, dado que el registro es gratuito, este requisito podría cumplirse de forma trivial.

Para comprender completamente lo que sigue, debe conocer algunos conceptos básicos sobre JSON Web Tokens (JWT). Básicamente, JWT es un objeto JSON que contiene una serie de identificadores firmados del lado del servidor con una clave secreta o un certificado. Su seguridad se basa en el hecho de que solo el emisor conoce la clave (o posee el certificado privado) para firmar y verificar los tokens.
En el primer escenario planteado para el ataque, la respuesta marcada en rojo contiene un JWT firmado con los siguientes datos:
{
 "id": 48,
 "user_id": 48,
 "username": "[email protected]",
 "iat": 1516146210,
 "exp": 1516146270,
 "aud": "urn:auth0:secureapp:secureapp-dev",
 "iss": "urn:auth0"
}
Estos datos no se pueden modificar porque han sido firmados pero inicialmente probaron que un dato válido para un usuario en un entorno de desarrollo podía ser reutulizado en otro ento entorno de producción.

Es decir que que ambos entornos utilizan las mismas claves de firma o certificados, lo cual induce a pensar que existe cientos o miles de instalaciones similares y con el mismo problema de implementación. Un valor de "user_id" que identifica a un usuario interno puede ser reutilizado en múltiples aplicaciones con solo tener credenciales válidas para uno de ellas.

El segundo escenario usa el mismo enfoque para analizar el flujo de inicio de sesión en la Consola de Administración de Auth0 y manipulando el JWT y los parámetros devueltos por la aplicación. Se puede realizar ingeniería social para obtener el "user_id" y la Consola de Administración para crear un scripts de base de datos, que se ejecuta cada vez que un usuario inicia sesión, y que permite crear un set de datos válidos necesarios para el ataque.
{
 "user_id": "59d60fef8025c603ce735e02",
 "email": "[email protected]",
 "email_verified": true,
 "iat": 1507203410,
 "exp": 1507203470,
 "aud": "urn:auth0:atacante:Username-Password-Authentication",
 "iss": "urn:auth0"
}
Finalmente el atacante ingresa con sus credenciales y al momento de autenticarse se utiliza el proxy para modificar los datos del parámetro "wresult", que Auth no verifica apropiadamente.
En el video se puede apreciar cómo se puede manipular JWT y el parámetro mencionado para ingresar a la cuenta de la víctima.

Esta vulnerabilidad (CVE-2018-6873) fue reportada al equipo de Auth0 en octubre de 2017 y solucionada rápidamente en su Public/Private SaaS.

Fuente: Cinta Infinita

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!