Faille XSS chez Yahoo ! : il était possible de lire très facilement tous les mails de n'importe qui

Par:
fredericmazue

lun, 12/12/2016 - 16:38

Le webmail de Yahoo! comportait une très grosse vulnérabilité permettant à un attaquant de lire tous les mails de sa victime. Cette faille a été découverte par le chercheur en sécurité  Jouko Pynnönen de la société finlandaise Klikki.

Jouko Pynnönen  a remarqué que le webmail de Yahoo! ne filtrait pas correctement les balises HTML avant de rendre le contenu à l'écran de l'utilisateur, notamment en ce qui concerne les attributs data-* des balises HTML, ce qui a mis la puce à l'oreille de Jouko Pynnönen. Mais ces attributs data n'étaient pas les seuls à ne pas être filtrés. Il était possible de placer du code JavaScript à peu près n'importe où. Les détails techniques sont donnés sur le blog de Klikki.

Il était donc très simple d'attaquer n'importe qui, en lui envoyant un mail en HTML avec des balises malicieuses. Le code JavaScript n'étant pas éliminé par un filtrage, il était exécuté dans le contexte de la page, ce qui en clair permettait à un attaquant de faire ce qu'il voulait selon son imagination, à commencer par récupérer le contenu de tous les mails de sa victime. Celle-ci n'avait pas à faire quoi que ce soit de son côté. Le simple fait d'ouvrir le mail dans le webmail était suffisant.

Le code ci-dessous est un exemple de mail HTML malicieux, qui lu dans le webmail ouvre une alerte dans le navigateur de sa victime. Cf. capture ci-dessous. Vraiment très simple.

Yahoo! a corrigé le défaut et récompensé  Jouko Pynnönen  par une prime de 10 000 dollars, dans le cadre du programme Bug Bounty dont Yahoo! fait partie.

From: <attacker@attacker.com>
Subject: hello
To: eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%76%69%63%74%69%6d%40%79%61%68%6f%6f%2e%63%6f%6d%22%3e%76%69%63%74%69%6d%40%79%61%68%6f%6f%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))
MIME-Version: 1.0
Content-type: text/html

<div class="yahoo-link-enhancr-card" data-url="https://www.youtube.com/aaa&quot;&gt;&lt;img src=x onerror=alert(/xss/)&gt;&lt;">
<div class="card-share-container">
<a class="enhancr-play-btn"></a>
</div></div>