"Vulnérabilité dans la gestion des URI" - Une vulnérabilité dont personne ne veut !

Date : 05 Novembre 2007

Ces derniers temps, la scène des vulnérabilités est accaparée par les failles liées aux navigateurs. L’une d’entre-elles s’est imposée d’elle-même du fait de l’implication de multiples éditeurs.  Ces derniers ont souvent refusé d’en endosser la responsabilité et n’ont donc pas publié de correctif pour cette faille.

Retour en arrière sur une faille latente. Un risque grandissant !

En juin dernier (le 19 pour être précis) les fils de discussion s’agitent autour d’une vulnérabilité "Cross Browser Scripting - IE pwns FireFox". Cette faille, liée à "Internet Explorer 7" permettrait l’exécution de code arbitraire. Une exploitation de cette vulnérabilité affecte le navigateur "Firefox", qui peut être exécuté depuis "Internet Explorer 7" avec des paramètres particuliers, sans interaction avec l’utilisateur.

Après de nombreux tests et recherches sur les versions impactées, sur les contextes de mise en œuvre de cette vulnérabilité, les découvreurs déterminent que le problème ne vient pas uniquement du navigateur "Internet Explorer 7", mais qu’il touche aussi des applications tierces susceptibles de recevoir ce type de paramètres. Le seul point commun était toutefois la présence du navigateur phare de Microsoft.

Dès lors, de nouvelles vulnérabilités sont identifiées dans diverses applications. Citons "Adobe" dont plusieurs articles ont été publiés par "GnuCitizen" le 20 septembre dernier, sous le titre "0day: PDF pwns Windows".

Faute de prise en compte sérieuse par les éditeurs impliqués, et du fait de leur refus d’accepter leur responsabilité, cette vulnérabilité suscite peu d’engouement. Ce n’est que fin juillet que l’US-Cert fait part de l’exploitation de cette vulnérabilité sur les navigateurs Firefox.

La situation devient critique, car des programmes d’exploitation sont désormais disponibles sur Internet, notamment en exploitant des fichiers PDF. Plus inquiétant, l’utilisation de ces programmes d’exploitation dans des campagnes de "Spam" massives pourrait vite prendre de l’ampleur. On peut raisonnablement s'attendre aussi à l’exploitation de ces vulnérabilités via des sites malicieux visant à tromper des utilisateurs peu vigilants.

Nota : La chronologie des évènements est rappelée en annexe.

 
Où est le problème ?

En fait, il n’y a pas un problème, mais plusieurs problèmes. Nous ne reviendrons pas sur la partie de "ping-pong" jouée entre les différents éditeurs se renvoyant la responsabilité de la vulnérabilité. Ne faisons pas la même erreur qu’eux, en ne considérant cette vulnérabilité qu’au niveau du système d’exploitation, mais abordons aussi le problème au niveau des applications tierces.

Avant d’aller plus loin dans la compréhension du problème, il est nécessaire de considérer que les serveurs Windows XP et 2003 ne sont vulnérables que si "Internet Explorer 7" est installé. Passés ces "détails", nous pouvons décrire la problématique.


Comprendre le(s) problème(s)

Il est possible dans une URI d’un navigateur web de spécifier le type de protocole qui sera appelé pour effectuer un traitement particulier. Nous les utilisons tous machinalement dans nos navigateurs lorsque nous saisissons une page web à visiter, sans toutefois les connaître réellement. Dans le jargon des navigateurs ce mécanisme s’appelle un "URI handler".

A quoi servent les "URI handlers" ?

S’il est communément reconnu que le "URI handler" "http://" permet à tout internaute de naviguer sur un site Internet, d’autres moins connus offrent des possibilités similaires. C’est le cas de "mailto://" qui permet d’envoyer un email, "callto://" pour lancer une communication téléphonique (via Skype par exemple), ou encore "nntp://" pour accéder à des serveurs de news. Il en existe bien d’autres.

Pourquoi sont-ils dangereux ?

Ils ne le sont pas fondamentalement si l’on s’arrête à un usage normal des "URI handler". Or un défaut de contrôle des paramètres qui leur sont passés, d’interprétation du contenu, peut permettre à une personne malveillante d’exécuter à distance un programme sur le système de l’utilisateur victime.

Plusieurs attaques sont possibles. Elles peuvent avoir lieu par envoi d’un fichier malicieux à une victime, l’invitant à ouvrir le fichier ; c’est le cas notamment des attaques par fichier PDF. Elles peuvent également avoir lieu via les navigateurs Mozilla ou Netscape. Ces attaques sont décrites ci-après.

Problème d’enregistrement des URI

Le premier problème concerne l’enregistrement au niveau système des schémas de traitement des protocoles dans les URI utilisées dans les navigateurs. Ces mécanismes sont parfaitement illustrés dans le document MSDN suivant : "Registering an Application to a URL Protocol". En langage "clair", toute application désireuse d’utiliser "un protocole" particulier (ex. http, nntp, rtsp, etc.) via une syntaxe d’URI (ex. "http://, nntp://, rtsp://") doit l’enregistrer auprès du système.

Par conséquent, tout mauvais enregistrement auprès du système et toute mauvaise interprétation de caractères (cas du caractère "%") peuvent conduire à une mauvaise utilisation d’un protocole d’URI par l’application appelée. Nous allons décrire ce problème ci-après.

Ce problème de gestion des URI et d’interprétation des caractères "%" possède la référence CVE-2007-3896. Il a fait l’objet de la "faille en cours d’investigation" FA-2007.0230.

Interprétation des extensions dans les balises d’URI

La technique employée repose sur l’utilisation de séquences particulières de caractères "%" dans des "URI handler", tels que "mailto" ou d’autres, afin de lancer des programmes locaux, voire d’interpréter des programmes malveillants transmis au moment de l’appel. A l’aide d’une "URI" spécialement formée avec ce type de séquences et en passant une extension spécifique dans celle-ci (comme ".EXE", ou ".BAT"), il est possible d’exécuter du code arbitraire à l’insu de l’utilisateur.

La vulnérabilité est déjà exploitée sur les navigateurs Mozilla ou Netscape. Elle permet à un attaquant distant, via une page web malicieuse, d’exécuter des commandes arbitraires sur le poste de l'internaute qui visite cette page. Une mauvaise interprétation des caractères "%00" est décrite dans l’avis CERT-IST/AV-2007-338.

Ce problème de gestion des extensions utilisées en paramètres dans les URI possède la référence CVE-2007-3845. Il a fait l’objet de l’avis CERT-IST/AV-2007-353 et du DanGer potentiel CERT-IST/DG-2007.006 (pour les produits Mozilla et Thunderbird).

Interprétation des caractères " dans les balises d’URI

Ce problème concerne les caractères guillemets utilisés dans les URI lors de l’invocation d’un protocole particulier. Le mauvais traitement des " " " peut conduire à un découpage de la chaine saisie dans l’URI, et faire en sorte que le programme appelé considère la chaine comme une suite de paramètres, et non comme un paramètre unique. En fait, comme nous l’avons évoqué au début de l’article, c’est pour cette raison, que les développeurs se renvoient la faute, certains pensant que les paramètres doivent être filtrés par l’application appelante, d’autres par l’application appelée.

Techniquement, le problème vient de la façon dont le programme appelant, dans le cas présent "IE 7", permet le passage de paramètres, sans aucun contrôle ni vérification, aux programmes appelés (ex. Mozilla, Skype, etc.). La fonction Windows "ShellExecute()" est à l’origine de la vulnérabilité. Elle permet l’invocation d’applications tierces depuis une autre application. Cette fonction est appelée, lors de l’invocation d’un protocole particulier susceptible de nécessiter le lancement d’une application tierce.

Ce problème est connexe aux deux problèmes d’interprétation précédemment abordés, et à la gestion des "URI handlers". Toutefois la forme de son exploitation dépend essentiellement de l’application vulnérable.

Contrôle des balises et paramètres passés via une URI

La dernière problématique concerne l’absence de contrôle de la part des éditeurs tiers, lorsque des paramètres sont passés via des appels à des balises d’URI. C’est le cas d’Adobe avec la balise d’URI "mailto", mais aussi de Firefox et Netscape avec les balises "mailto", "snews" ou encore "telnet". D’autres applications en sont aussi victimes.

L’attaque peut avoir lieu par envoi d’un fichier malicieux à une victime, invitée à ouvrir le fichier. C’est le cas notamment des attaques via des fichiers PDF malicieux (cf. avis CERT-IST/AV-2007-459), pour laquelle la victime doit cliquer (ou amener le pointeur de la souris) sur un lien "mailto:" spécifique pour que les commandes soient exécutées sur le système.

Ce problème de gestion des balises possède la référence CVE-2007-5020. Il a fait l’objet d’un avis CERT-IST/AV-2007-459 pour les produits Acrobat 8.1.

 

Quelles conclusions en tirer ? Pourquoi tant d’attente ?

S’il est difficile de reconnaître ses erreurs, et plus facile de les attribuer aux autres, le cas de cette vulnérabilité en est le parfait exemple. Cette vulnérabilité a été abordée dans de nombreux forums de discussion depuis juin 2007, et a donné naissance à de nombreuses vulnérabilités connexes dans des outils tiers.

Si certains éditeurs reconnaissent le problème, attribué tantôt au système d’exploitation Windows, tantôt aux applications tierces, d’autres l’ignorent, voire le corrigent silencieusement. De nombreux éditeurs et produits ont en effet été concernés par cette faille. Tous n’ont pas réagi de la même façon.

Notons quand même que le principal intéressé n’a reconnu le problème que courant octobre et ce n’est que mi-novembre qu’il a produit un correctif majeur face à une menace grandissante. Soit 5 mois après la découverte du problème !


Annexe – Chronologie

Le 27 juillet, le Cert-IST en l’absence de correctif, émet une première faille en attente (FA-2007-0181), ainsi qu’un "Danger Potentiel" (CERT-IST/DG-2007.006) afin d’attirer l’attention sur l’exploitation de cette vulnérabilité portant sur la gestion des URI par les navigateurs Firefox.

Le 31 juillet, le Cert-IST émet un avis (CERT-IST/AV-2007-353) suite à la prise en compte et la correction de cette vulnérabilité dans le navigateur Firefox (version 2.0.0.6).

Le 21 septembre, le Cert-IST émet alors un "vuln-coord" afin d’avertir ses membres de l’importance de l’impact que pourrait avoir cette vulnérabilité.

Le 24 septembre, cette nouvelle faille concernant la gestion des fichiers PDF fait l’objet d’une faille en attente (FA-2007-0217), en l’absence de correctif de l’éditeur.

Le 9 octobre, un nouvel avis (CERT-IST/AV-2007-459) est émis suite à la publication d’un palliatif par Adobe.

Le 10 octobre 2007, Microsoft reconnaît officiellement la vulnérabilité dans un avis de sécurité (943521).

Le 12 octobre, le Cert-IST émet une nouvelle faille en attente (FA-2007-0233) concernant cette fois-ci les mécanismes de filtrage d’IE7 dans le traitement des extensions de fichiers.

Le 14 octobre, le Cert-IST émet une nouvelle faille en attente (FA-2007-0230) suite à l’avis officiel de Microsoft sur la mauvaise gestion des URI par le système.

Le 24 octobre, le Cert-IST émet un nouveau "Danger Potentiel" (CERT-IST/DG-2007.008) afin d’attirer l’attention suite à l’apparition de PDF malicieux exploitant la faille touchant les produits Adobe.

L’avis Microsoft émis le 10 octobre est révisé le 25 octobre compte tenu de l’augmentation de la menace de la vulnérabilité.

Ce n’est que le 13 novembre que Microsoft émet un nouvel avis de sécurité et propose des correctifs de sécurité pour celle-ci (MS07-061).

Le 14 novembre, le Cert-IST émet un nouvel avis (CERT-IST/AV-2007-525) ainsi qu’un "vuln-coord" suite à la mise à disposition de correctifs pour cette vulnérabilité.

 

Conscient des risques induits, le Cert-IST a ouvert deux hubs de crise afin de suivre l’évolution de ces menaces :

o        [Firefox %00 URI] Vulnérabilité URI Handler dans Firefox et d'autres navigateurs

o        URI Handling/IE7


Précedent Précedent Suivant Suivant Imprimer Imprimer