Une seule URL, et Google Chrome peut planter

D’après un communiqué de The Register, la nouvelle version de Google Chrome contiendrait une erreur de programmation capable de faire planter l’application en cas de saisie de certaines URL. Le simple fait de passer la souris sur l’adresse dans une page Web ou de cliquer sur le lien depuis une autre application suffit pour provoquer la fermeture du navigateur ou de l’onglet actif.

Andris Atteka, qui a découvert le problème la semaine dernière, a abordé le sujet dans son blog et a rempli un rapport de débogage. « Je n’ai malheureusement pas été récompensé car il s’agit seulement d’une vulnérabilité de déni de service » a écrit Andris Atteka. « Mais produire un logiciel protégé est bien plus compliqué que de trouver les erreurs qu’il contient. Merci Google. »

L’élément intéressant est que ce bogue provoque une erreur irrécupérable (SIGTRAP) et non pas l’erreur normale d’accès à la mémoire provoquée via un débordement de tampon, une corruption du tas ou d’autres problèmes similaires. Cela signifie qu’une partie du fichier exécutable n’aurait jamais du être exécutée dans des conditions normales.

La séquence « %%300 » en fin d’URL se convertit en %00, car 0x30 est le code ASCII du caractère « 0 ». C’est pour cette raison que %%300 se transforme en une ligne qui contient le « % », le « 0 » converti et le « 0 » initial. Par conséquent, un octet NULL apparaît en fin d’adresse.
L’adresse obtenue est envoyée à la fonction GURLToDatabaseURL() qui appelle ReplaceComponents(). L’URL est à nouveau traitée, mais cette fois avec l’octet NULL. La fonction en déduit que l’adresse n’est pas correcte et marque l’URL.

L’exécution revient à la fonction GURLToDatabaseURL() qui s’attend à ce que l’URL soit toujours valide et la transmet à la fonction spec(). Mais vu que l’URL n’est pas valide, l’application provoque une erreur lors de l’appel DCHECK(), même dans la version publiée.

Lorsqu’une URL de ce type est saisie d’une manière ou d’une autre, le navigateur envoie une adresse considérée comme invalide à un composant qui attend uniquement des adresses valides.

A l’heure actuelle, le problème se trouve dans le système de suivi des bogues Chromium et les développeurs planchent sur son élimination.

Source: The Register

Posts similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *