El último error descubierto por los investigadores en la implementación de OAuth en varios sitios web permite a los usuarios autenticarse con sus identidades desde servicios de terceros como Facebook o Google. Sin embargo, algunos sitios no logran completar un paso importante en la cadena de autorización de OAuth, que consiste en validar la aplicación para la cual el proveedor de identidad ha emitido un token de acceso. Al explotar esta falla, un atacante podría recopilar tokens emitidos para una aplicación o sitio web falso y luego usarlos para acceder a las cuentas de las víctimas en sitios vulnerables a este problema. Los investigadores de la firma de seguridad Salt Security lo demostraron en tres sitios web populares: el servicio de mecanografía Grammarly, el sitio indonesio de transmisión de videos Vidio y la plataforma indonesia de comercio electrónico Bukalapak.
Si estas empresas fueran informadas de forma privada y solucionaran el problema, los investigadores dicen que todas las empresas deberían auditar sus implementaciones para asegurarse de que no exponen a sus usuarios a ataques similares. "Estos tres sitios son suficientes para demostrar nuestro punto y hemos decidido no buscar otros objetivos, pero creemos que miles de otros sitios web son vulnerables al ataque que detallamos en este artículo y ponen en riesgo a miles de millones de usuarios adicionales de Internet cada día. " dijeron los investigadores de Salt Security en su informe.
Tokens de acceso vinculados a las aplicaciones que emiten la solicitud
Muy popular en la web, el estándar de autorización y pseudoautenticación OAuth se utiliza para que un sitio web o una aplicación solicite a un proveedor de identidad como Google, Facebook, Apple o Microsoft que verifique que un usuario es efectivamente quien dice ser. Este método facilita el proceso de autenticación para los usuarios porque pueden usar sus identidades de Facebook, Google o Microsoft, eliminando la necesidad de crear y recordar contraseñas separadas para diferentes sitios. En realidad, OAuth no se trata sólo de autenticación. El mecanismo permite a los usuarios otorgar acceso a sitios web externos a diversa información de perfil asociada con cada proveedor de identidad a través de la API del proveedor. Sin embargo, este problema descubierto por Salt Security se aplica a la parte de autenticación, es decir, cuando un sitio solicita al proveedor de identidad que confirme que el usuario es el propietario de la identidad (dirección de correo electrónico) que desea utilizar. Y si para su demostración los investigadores utilizaron “Iniciar sesión con Facebook”, técnicamente podría funcionar con cualquier proveedor de identidad.
El proceso OAuth funciona de la siguiente manera: un usuario desea crear una cuenta en un sitio web y elige la opción "Iniciar sesión con Facebook" proporcionando una dirección de correo electrónico. El sitio web redirige el navegador del usuario a Facebook para demostrar que el usuario tiene una cuenta con esta dirección de correo electrónico con el proveedor de identidad. La primera vez, para confirmar que el sitio web o la aplicación de terceros está autorizado a acceder a la información de su cuenta, como la dirección de correo electrónico, Facebook muestra una solicitud de permiso al usuario. Luego, genera un token secreto y redirige el navegador del usuario al sitio web solicitante, con el token adjunto a la URL de solicitud.
Permisos memorizados
El sitio web toma el token y lo utiliza para acceder a la API Graph de Facebook en nombre del usuario y solicita a la red social la dirección de correo electrónico asociada con el token. Facebook responderá con la dirección de correo electrónico del usuario y el sitio web tendrá confirmación de que el usuario es quien dice ser y le autorizará a crear su cuenta. Para cualquier inicio de sesión posterior, el proceso se repite, excepto que Facebook ya no le pedirá al usuario que proporcione acceso porque ya se le ha concedido. El usuario simplemente hará clic en "Iniciar sesión con Facebook", el sitio redirigirá su navegador a Facebook para obtener un token, Facebook redirigirá el navegador del usuario al sitio con el token adjunto en la URL y el sitio utilizará el token para confirmar la correo electrónico del usuario a través de la API de Facebook y dejarle entrar. Sin embargo, hay un elemento muy importante para la seguridad de este proceso: Facebook, y cualquier proveedor de identidad OAuth, vincula el token al ID de la aplicación del sitio web que solicitó el token a través de la API de Facebook. navegador del usuario. Cada sitio web o aplicación que desee ofrecer la funcionalidad "Iniciar sesión con Facebook" debe registrarse primero en Facebook y recibirá su propia ID de aplicación única en la base de datos de Facebook.
El problema es que es responsabilidad del sitio web verificar el token antes de aceptarlo y utilizarlo. Esta validación implica verificar que el token se generó para su propio ID de aplicación y no para otra aplicación. Para hacer esto, se realiza una solicitud a un punto final API especial de Facebook antes de usar el token para pedirle a Facebook que valide la identidad del usuario y le permita acceder a su cuenta. Si se omite este paso (y resulta que muchos sitios web lo omiten), es posible hacerse pasar por el usuario y hacerse cargo de su cuenta. Por ejemplo, un atacante puede crear un sitio web o una aplicación legítimos que brinden un servicio, registrarlo en Facebook para proporcionar la función "Iniciar sesión con Facebook" y luego usarlo subrepticiamente para generar y recopilar tokens OAuth de usuarios que legítimamente deseen usar el sitio. Servicio. Los tokens que Facebook genera para que los usuarios validen su identidad en el sitio web del atacante serán válidos, incluso si se emiten para el ID de la aplicación del sitio web. Pero, si otro sitio web no verifica el ID de aplicación de los tokens que recibe y simplemente los usa, el atacante podría tomar un token generado por el usuario para su sitio web y usarlo en un sitio web vulnerable para acceder a la cuenta del usuario en este sitio web. Si este sitio es una plataforma de comercio electrónico como Bukalapak, es posible que el usuario haya almacenado información de facturación y pago en su perfil. Si se trata de un servicio como Grammarly, el usuario puede tener documentos confidenciales, etc.
Otras variantes y fallos de implementación.
OAuth es un estándar complejo que ofrece varias variaciones de implementación. Por ejemplo, en lugar de utilizar URL de redireccionamiento entre el sitio y el proveedor de identidad, el sitio puede optar por utilizar la función PostMessage, pero el ataque aún es posible en dicha implementación si el token no es válido. Pasar tokens a través de URL es potencialmente vulnerable a ataques de intermediario si un atacante tiene la capacidad de monitorear pasivamente el tráfico y extraer el token OAuth de la URL que está observando. Por esta razón, OAuth también ofrece un enfoque más seguro en el que el proveedor de identidad emite un código único en lugar de un token de acceso, y luego el sitio web toma ese código con un secreto de aplicación que solo él y Facebook conocen e intercambian el código en token usando API de Facebook. De hecho, Grammarly utilizó este método basado en código más seguro cuando el equipo de Salt Security probó su implementación de OAuth. Sin embargo, los investigadores descubrieron que el script OAuth de Grammarly aceptaba solicitudes con el código de entrada en la solicitud y se preguntaron si podría incluir una función que también aceptara tokens. Entonces intentaron realizar solicitudes reemplazando el código con diferentes palabras como token, facebookToken, FBtoken y otras variaciones, hasta que descubrieron que access_token funcionó y fue aceptado.
En otras palabras, lograron mover la implementación de Grammarly a la variante más segura porque el código para administrar tokens directamente en lugar del código todavía se dejaba como una opción en el script. Y resultó que no había ningún paso de validación del token para verificar la identificación de la aplicación. En el pasado, los investigadores de Salt Security encontraron otras fallas en la implementación de OAuth en sitios web importantes, algunas de las cuales podrían haber permitido a los atacantes acceder a cuentas de Booking.com. "Es extremadamente importante garantizar que la implementación de OAuth sea segura", dijeron los investigadores. “La solución se reduce a una sola línea de código. Cuando se utiliza OAuth para proporcionar autenticación de servicios, cualquier violación de seguridad puede provocar robo de identidad, fraude financiero y acceso a diversa información personal, incluidos números de tarjetas de crédito, mensajes privados, registros médicos y más, según el servicio específico atacado”. dijeron además los investigadores.
Otras noticias que te pueden interesar