L'avertissement semblait critique, puisque, quelques heures après la révélation du problème, Microsoft a annoncé qu'elle livrerait « dans la journée » un correctif « hors calendrier » pour sa plate-forme ASP.NET.

Les tables de hachage sont utilisées pour stocker et retrouver des données rapidement. Elle gère l'affectation des données et les répartit à différents endroits dans la table, sur la base des résultats d'un calcul - le hachage - réalisé sur les données elles-mêmes. Idéalement, la fonction de hachage doit retourner un résultat différent pour chaque donnée fournie en entrée et calculer l'empreinte unique qui servira à l'identifier rapidement. Mais, en pratique, ça ne se passe pas tout à fait ainsi. Il arrive que « deux ou plusieurs morceaux de données différents génèrent le même hachage, » si bien que les tables doivent gérer des «collisions de hachage. »

Eviter une surcharge des serveurs web

Selon Alexander « Alech » Klink, consultant pour l'entreprise de sécurité informatique allemande n.runs, et Julian « zeri » Wälde, chercheur à l'Université technologique de Darmstadt, chaque collision ralentit le stockage et la récupération des données concernées. Et le temps qu'il faut pour gérer ces opérations augmente avec le carré du nombre d'éléments impliqués dans la collision.

Un pirate qui sait comment une application web calcule les hachages, peut envoyer un lot de données qui auront pour effet de générer beaucoup de collisions. « Avec une requête HTTP unique, il peut épuiser le temps processeur,» ont mis en garde les deux chercheurs mercredi dans leur avis consultatif. « Le PHP 5, Java et ASP.NET sont tous vulnérables à ce type d'attaque, » ont ajouté les deux chercheurs qui se sont exprimés lors du Chaos Communication Congress de Berlin (du 27 au 30 déc 2011).

Une mise à jour hors programme Patch Tuesday

Microsoft a publié un avis de sécurité dans la journée de mercredi, reconnaissant que cette vulnérabilité dans ASP.NET pouvait permettre des attaques par déni de service. L'éditeur a également suggéré une solution de contournement. Peu de temps après, Microsoft a fait savoir qu'elle dérogerait à son calendrier de mise à jour de sécurité mensuelle, et qu'elle livrerait un patch pour corriger cette vulnérabilité dès vendredi matin.

Dans leur avis consultatif, Alexander Klink, et Julian Wälde ont indiqué que l'application Java du serveur Apache Tomcat avait déjà été corrigée « afin de limiter le nombre de paramètres dans une requête, » et empêcher l'attaquant de générer un trop grand nombre de collisions de hachage à la fois. « Une valeur par défaut de 10 000 devrait apporter une protection suffisante, » ont-ils écrit. La mise à jour est disponible pour la version 7.0.23 et à partir de la version 6.0.35 de Tomcat.

Une faille découverte en 2003

« Les développeurs d'application pour plateforme web ont depuis longtemps soulevé et mis en garde contre ce problème, » ont ajouté les deux chercheurs, « puisque l'attaque a été décrite en... 2003, » ont-ils rappelé. Dans un article de Usenix Security intitulé « Denial of Service via Algorithmic Complexity Attacks, » les auteurs Scott A. Crosby et Dan S. Wallach expliquaient comment les algorithmes de hash pouvaient être victimes de leur complexité et être utilisés pour mener des attaques par déni de service.

Cette année là, des modifications avaient été apportées à Perl pour rendre aléatoire le calcul de hachage, et empêcher le calcul des collisions à l'avance. « Des changements similaires avaient été apportés à CRuby à partir de la version 1.9, » ont-ils précisé.