CSIRTCV

Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es

01/08/2013

Fallada en LinkedIn permetia extraure el token d'OAuth de l'usuari autenticat

LinkedIN LinkedIn ha corregit una fallada en el seu web que permetia extraure el testimoni (token) del protocol OAuth de l’usuari autenticat.

La fallada va ser reportada pel britànic Richard Mitchell i segons comenta en el seu blog es va adonar com a l’accedir al lloc d’ajuda de LinkedIn (http://help.linkedin.com) este procedia a autenticar l’usuari amb el seu ID de LinkedIn sobre HTTP.

Mitchell es va detindre a observar per curiositat, a través de les ferramentes del desenrotllador de Chrome, com s’efectuava el procés. Va trobar que hi havia un script que efectuava una petició amb la clau API corresponent al lloc web d’ajuda i este responia amb el token OAuth de l’usuari.

Va intentar fer la mateixa petició copiant el script en una pàgina local i va comprovar que, com calia esperar, les peticions eren denegades des d’un altre domini. El problema era que la manera de revisar-ho, en primer lloc, es feia des del mateix script, consultant la variable “window.location.host” i comparant-la amb un grup de valors, dominis controlats per LinkedIn: “*.linkedin.com” i “*.custhelp.com”. Este primer filtre va poder evadir-lo trivialment sobreescrivint la funció “window.String.prototype.matx” perquè sempre tornara “true”.

Posteriorment, va comprovar-se que la petició tornava a ser denegada pel servidor de LinkedIn, així que verificant que l’única diferència entre una petició des del navegador (dins del domini LinkedIn) i des de la seua pàgina modificada en local (domini local) era la capçalera Referer, va procedir a canviar l’HTML local perquè el seu Referer no indicara el seu origen:

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

D’esta manera podia arreplegar el token OAuth sense que el servidor s’adonara de l’origen de la petició.

La fallada, que ja ha sigut corregida, ens mostra doblement una cosa que repetim contínuament: No cregues res que vinga del client (navegador). Primer per filtrar des de Javascript el domini des del qual s’està efectuant la petició i segon per filtrar la petició en el servidor comprovant la capçalera Referer del client.

Per cert, Mitchell va ser premiat pel report d’este bug amb una camiseta.

Més informació:

Stealing OAuth tokens from the LinkedIn API using meta referrer:
http://awesomeco.de/blog/tricking-weak-authentication-on-linkedin-using-meta-referrer/

Font: La Flecha

CSIRT-CV