Informatique

De simples URLs font planter Chrome et Opera

La version de Google Chrome (45.0.2454.93) et Opera (32.0) 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.

[quote]‘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.’[/quote]

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 (buffer overflow), 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.

À titre d’exemple: https://www.google.fr/%%300.

Le problème se trouve dans le système de suivi des bogues Chromium et les développeurs planchent sur son élimination.

Laisser un commentaire