Vulnerabilidades OAuth | Cómo implementar la autorización segura en su aplicación web

Anonim
Vulnerabilidades OAuth | Cómo implementar la autorización segura en su aplicación web 2740_1

Este artículo se ocupará de las conocidas vulnerabilidades de OAURH. Los lectores también aprenderán cómo implementar una autorización segura y segura en la aplicación web.

OAUTH es un protocolo confiable, pero su grado de seguridad depende en gran medida de la conciencia de los desarrolladores web al implementar la autorización. Esto hace que este tema sea extremadamente importante para los profesionales de la seguridad de la información. Necesitan proporcionar un alto nivel de protección de las cuentas de sus usuarios. Es hora de familiarizarse con los profesionales efectivos que ayudarán a reducir el peligro de la venta de pobres out.

Introducción

El protocolo OAUTH 2.0 se usa actualmente en varias aplicaciones. Usándolo, una interfaz de usuario conveniente está disponible, más fácil de autenticación y autorización en comparación con los métodos tradicionales para ingresar el nombre de usuario y la contraseña. Con una implementación adecuada y reflexiva, el Protocolo de OAUTH será más seguro que la autorización tradicional, ya que los usuarios no necesitan compartir sus datos contables con una aplicación de terceros para acceder a un recurso específico. Los usuarios a menudo prefieren iniciar sesión con sus cuentas de Google, Facebook o LinkedIn, en lugar de crear una nueva cuenta cada vez que necesite registrarse en algún sitio web. Por lo tanto, el protocolo de OAUTH simplifica enormemente nuestras vidas.

En general, los proveedores populares de servicios de OAURH son muy confiables. Inicie sesión con Google o en la cuenta de Facebook inspira un cierto sentido de seguridad, y es correcto. El protocolo es cuidadosamente probado por expertos. Todas las vulnerabilidades disponibles siempre son corregidas rápidamente por el equipo del desarrollador. Sin embargo, vale la pena señalar que la sensación de total seguridad puede ser falsa.

Los proveedores de servicios de OAURH dejaron a los desarrolladores de aplicaciones, muchas razones para contender la seguridad de sus programas. De hecho, el servicio de OAuth protegido inicialmente, implementado incorrectamente en el proceso de su instalación, puede convertirse en un objetivo fácil para los intrusos. Dicha preocupación conducirá al robo de datos personales de los usuarios.

A continuación, debe considerar las vulnerabilidades más comunes encontradas en aplicaciones de terceros que implementan el Protocolo de OAUTH para autorizar a sus usuarios. Debe recordarse que el protocolo en sí es seguro y confiable. Solo después de la implementación incorrecta, se vuelve vulnerable a los ataques de hackers.

Robo de OAURH TOCKEY utilizando el encabezado del árbitro

Cuando la aplicación solicita la autorización en nombre del usuario en el servidor OAUTH, una persona recibe el código para ingresar y enviar al servidor para su cheque posterior. Si durante el trabajo, el usuario será redirigido a otra página, el código se verá en el encabezado "ReferER" de la solicitud HTTP. Por lo tanto, el código caerá en el sitio web externo, que amenazará los datos de usuario registrados en el servidor OAUTH.

NOTA: El encabezado del árbitro es un encabezado de consulta HTTP, transmite el host de URL desde el cual se envía la solicitud.

Para suavizar las consecuencias de esta vulnerabilidad, el desarrollador debe asegurarse de que su aplicación web no contenga ninguna inyección HTML. Si se detectaron las inyecciones, el atacante puede configurar fácilmente la etiqueta de la imagen a su servidor web y encontrar una manera de redirigir al usuario en él. Por lo tanto, tendrá la oportunidad de robar el código del encabezado "Referido" de la solicitud HTTP.

Robo de OAURH TOCKEY usando el parámetro Redirect_uri

La aplicación inicia el proceso de autorización enviando una solicitud al servidor OAUTH:

https://www.example.com/signin/authorize?[...◆&irect_uri=httpps://Demo.example.com/Loginsuccess.

La consulta siempre contiene el parámetro "Redirect_uri" utilizado por el servidor OAUTH para enviar tokens a la aplicación después de que el usuario le dio su consentimiento. Si el valor de este parámetro no está controlado o no está marcado, el atacante puede cambiarlo fácilmente y redirigir la solicitud a su sitio web, donde utiliza un programa especial para procesar el token y obtener acceso a un recurso limitado.

https://www.example.com/signin/authorize?[...◆&irect_uri=httpps://localhost.evil.com.

Las URL a veces similares están bloqueadas. El atacante puede redirigir los datos recibidos en la URL abierta, como esta:

https://www.example.com/oauth20_authorize.srf?[...[-redirect_uri=httpps://accounts.google.com/backtouthsubtarget?next=httpset ://evil.com.

O esto:

https://www.example.com/oauth2/authorize? [...]% irect_uri = https% 3a% 2f% 2fapps.facebook.com% 2fattacker% 2f.

Al implementar OAUTH, nunca puede incluir dominios completos en la lista blanca. Solo se deben agregar algunas URLs a "Redirect_uri", no redirigido una solicitud para abrir Redirect.

Falsificación de solicitudes de línea cruzada

La falsificación de una solicitud de intervención puede ocurrir cuando un atacante logra hacer que la víctima haga clic en su enlace y, por lo tanto, para generar una solicitud de que no iba a generar. La falsificación de las solicitudes de línea cruzada se suaviza generalmente con el token CSRF, que está asociado con la sesión de usuario. Ayuda a la solicitud para verificar a la persona de una persona que envió la solicitud. El parámetro "Estado" en el protocolo OAUTH sirve como token de CSRF.

Vale la pena ver cómo se lleva a cabo el ataque del CSRF en OAUTH y, como se puede usar el parámetro "Estado" para mitigar los efectos de la vulnerabilidad.

Hacker abre una aplicación web y lanza el proceso de autorización para acceder al proveedor de servicios utilizando OAuth. La aplicación solicita a un proveedor de servicios que pueda proporcionar que se proporcionen. Hacker será redirigido al sitio web del proveedor de servicios, donde generalmente necesita ingresar su nombre de usuario y contraseña para autorizar el acceso. En su lugar, el hacker capta y evita esta solicitud y ahorra su URL. Hacker de alguna manera hace que la víctima abra esta URL. Si la víctima ingresó al sistema del proveedor de servicios utilizando su cuenta, entonces sus credenciales se utilizarán para emitir un código de autorización. El código de autorización intercambia el acceso al token de acceso. Ahora está autorizado la cuenta de hacker en la solicitud. Puede acceder a la cuenta de la víctima.

Entonces, ¿cómo puedo evitar esta situación utilizando el parámetro "Estado"?

La aplicación debe crear un valor que de alguna manera se basa en la cuenta de origen (por ejemplo, use la tecla HASH de la sesión del usuario). No es tan importante lo que es, lo principal es que el valor es único y generado utilizando información privada sobre el usuario original. Se asigna al parámetro "Estado".

Este valor se transmite al proveedor de servicios al redirigir. Ahora, el hacker invita a la víctima a abrir la URL, que conservó.

El código de autorización se emite y envíe al cliente en la sesión junto con el parámetro "Estado".

El cliente genera un valor de parámetros basado en una información de sesión y la compara con el valor "Estado", que se envió de vuelta de la solicitud de autorización al proveedor de servicios. Este valor no coincide con el parámetro "Estado" en la consulta, ya que se ha generado solo sobre la base de la información sobre la sesión actual. Como resultado, el sistema no acepta el valor obtenido.

Otras vulnerabilidades detectadas cuando la implementación de OAUTH incluyen la capacidad de realizar XSS (scripts de sitio transversal) utilizando el parámetro "Redirect_uri", la configuración de la clave privada de OAURH (la clave a veces se puede obtener al descompilar una aplicación móvil) y la violación de la regla del código de autorización (cuando El código de autorización puede usarse más de una vez para emitir múltiples tokens de acceso). Estas vulnerabilidades son menos comunes que las descritas anteriormente, pero no las hacen menos peligrosas. El desarrollador debe conocer todas las prácticas necesarias para garantizar un funcionamiento confiable de su aplicación web.

El autor del artículo traducido: Simon Saliba.

¡Importante! Información únicamente para fines académicos. Cumplir con la legislación y no aplicar esta información con fines ilegales.

Material más interesante en cisoclub.ru. Suscríbase a nosotros: Facebook | Vk | Twitter | Instagram | Telegrama | Zen | Messenger | ICQ nuevo | YouTube | Legumbres.

Lee mas