CloudBleed, le bug chez CloudFlare qui leakait la mémoire

Un bug dans le code d'un composant CloudFlare a exposé de nombreuses données utilisateurs (cookies, password, login, adresse IP, …) de plusieurs sites (dont des populaires comme Uber, 1Password, Fitbit, OkCupid, ...) qui se sont retrouvées sur les caches des moteurs de recherche.

Pour rappel, Cloudflare est un service populaire qui fournit principalement un service de CDN (Content Delivery Network). Il propose à la fois des offres gratuites et payantes de services d'optimisation des pages, de détection d'intrusion ou de DNS et seraient utilisés pour traiter 13% du trafic internet.

Le bug logiciel dont on parle aurait permis la fuite d’informations potentiellement sensibles qui se seraient ensuite retrouvées dans les caches de moteurs de recherche (Google, Bing, Yahoo), les caches des FAI, voir même des serveurs proxy d'entreprise ou d'université.

Exemple de données que l'on pouvait trouver:
alt

Ce bug serait dû à un dépassement de tampon provoqué par une erreur dans le code généré par l'analyseur syntaxique Ragel et serait en production depuis le 22 septembre 2016.
Une fois le bug déclenché, la réponse inclurait le contenu de la mémoire, donc les données de TOUS les utilisateurs transitant par le même serveur. Vous pouvez visiter un site, la seconde suivante une autre personne visite un autre site via le même serveur et elle reçoit des données concernant votre requête en plus de la sienne.
Ce bug se déclenchait quand une balise HTML était mal refermée. Vous pouvez trouver plus de détails techniques sur le site de CloudFlare

Dans son enquête, Cloudflare souligne que ce problème est apparu quand les clients ont activé deux paramètres dans leur compte : Email Obfuscation et Automatic HTTPS Rewrites.

Il est pour l’instant difficile de savoir quel est l'impact, mais CloudFlare a fourni l'estimation suivante:

« L’activité la plus intense du problème de fuite de mémoire a été entre le 13 et 18 février en impactant 1 requête chaque 3,3 millions de requêtes HTTP, cela représente donc 0,00003% des demandes. »

Cela peut paraître peu, mais au regard du nombre de requêtes traitées par CloudFlare (soit disant 13% du trafic mondial), cela est relativement important.

Notons qu'encore une fois, c'est Tavis Ormandy (du projet Google Zero) qui a trouvé le bug et que les premières contre-mesures ont été mises en place en 47 minutes (coupure des modules impactés).
L'incident quant à lui aurait été résolu en 7 heures. Chapeau bas aux développeurs de CloudFlare qui ont su résoudre ce bug rapidement! Le plus long fut de supprimer des moteurs de recherche les données en cache.

Le nom CloudBleed serait une référence à Heartbleed (CVE-2014-0160), la vulnérabilité découverte dans la bibliothèque OpenSSL.

Lien de la description du bug par CloudFlare :