"Vulnérabilité dans la gestion des URI" - Une vulnérabilité dont personne ne veut !
Date : 05 Novembre 2007
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
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
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.).
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.
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
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