Fallo en LinkedIn permitía extraer el token de OAuth del usuario autenticado

LinkedIn ha corregido un fallo en su web que permitía extraer el token

del protocolo OAuth del usuario autenticado.

El fallo fue reportado por el británico Richard Mitchell y según comenta
en su blog se dio cuenta como al acceder al sitio de ayuda de LinkedIn
(http://help.linkedin.com) este procedía a autenticar al usuario con su
ID de LinkedIn sobre HTTP.

Mitchell se detuvo a observar por curiosidad, a través de las
herramientas de desarrollador de Chrome, como se efectuaba el proceso.
Encontró que existía un script que efectuaba una petición con la llave
API correspondiente al sitio web de ayuda y este respondía con el token
OAuth del usuario.

Intentó hacer la misma petición copiando el script en una página local y
comprobó que, como era de esperar, que las peticiones eran denegadas
desde otro dominio. El problema era que la manera de chequear esto, en
primer lugar, se hacía desde el propio script, consultando la variable
“window.location.host” y comparándola con un grupo de valores, dominios
controlados por LinkedIn: “*.linkedin.com” y “*.custhelp.com”. Este
primer filtro pudo evadirlo trivialmente sobreescribiendo la función
“window.String.prototype.match” para que siempre devolviera “true”.

Posteriormente comprobó como la petición volvía a ser denegada por el
servidor de LinkedIn, así que verificando que la única diferencia entre
una petición desde el navegador (dentro del dominio LinkedIn) y desde su
página modificada en local (dominio local) era la cabecera “Referer”,
procedió a cambiar el HTML local para que su “Referer” no indicara su
origen:

<meta name=”referrer” content=”never”>

De esta forma podía recoger el token OAuth sin que el servidor se
percatara del origen de la petición.

El fallo, que ya ha sido corregido, nos muestra doblemente algo que
repetimos continuamente: No creas nada que venga del cliente
(navegador). Primero por filtrar desde Javascript el dominio desde el
cual se está efectuando la petición y segundo por filtrar la petición en
el servidor comprobando la cabecera “Referer” del cliente.

Por cierto, Mitchell fue premiado por el reporte de este bug con una
camiseta.
 Fuente

__________

NOTA: Los interesados en información sobre contrato de soporte Asistencia Tecnica de SATINFO y/o licencia de uso/actualizaciones de sus utilidades, contacten con info@satinfo.es
__________

Este blog no se hace responsable de las opiniones y comentarios de los textos en los que se cita la Fuente, ofreciendo su contenido solo para facilitar el acceso a la información del mismo.

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Los comentarios y los pings están cerrados.

Los comentarios están cerrados.

 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies