La faille WMF qui a récemment empoisonné Microsoft continue de faire couler beaucoup d’encre. Parfois au sens littéral du terme…

Le feuilleton de la faille WMF, à l’instar de celui des DRM rootkits de Sony BMG, alimente les conversations, mais il prend une nouvelle tournure avec les affirmation d’un développeur américain, Steve Gibson, qui estime que cette faille est en fait une porte dérobée (backdoor) installée volontairement par Microsoft dans les ‘’anciennes’’ versions de Windows, et jamais supprimée depuis.

A la base de cette affirmation, se trouve une fonction, ‘’SetAbortProc’’ (pour Set Abort Procedure ; mise en place d’une procédure d’annulation), destinée à reprendre la main par rapport au système d’exploitation lorsqu’une tâche doit être annulée avant d’être complétée.

C’est le cas, par exemple, pour une impression sur papier : lorsque vous cliquez sur l’icône d’impression dans Word, ou dans toute autre application sous Windows, le logiciel envoie une commande au système d’exploitation. Ce dernier, qui est chargé de hiérarchiser les tâches à exécuter, met votre commande d’impression dans une file d’attente, lance les périphériques et pilotes nécessaires à l’exécution de ladite tâche, et sauf avis contraire de votre part ou problème matériel (imprimante débranchée, par exemple), quelques secondes plus tard, une feuille devrait sortir de votre matériel d’impression.

Jusqu’à Windows 3.0, pour annuler une impression avant qu’elle ne soit complétée, il fallait ouvrir une fenêtre d’invite de commande, puis y entrer une série de commandes relativement complexes. Seuls les utilisateurs les plus avertis savaient procéder de cette manière, ou même que la possibilité d’annuler l’impression existait. Les autres attendaient patiemment que le travail soit terminé, avant de faire une boule avec la feuille tout droit sortie de l’imprimante, puis de viser du mieux qu’ils pouvaient la corbeille à papier la plus proche…

Vers 1990, il fut décidé d’ajouter à Windows 3.0 une nouvelle fonction permettant de reprendre la main sur les tâches hiérarchisées de Windows en matière d’impression. Cette fonction, baptisée ‘’SetAbortProc’’, fut même dotée d’une petite interface graphique, et d’une icône en barre de tâches pour en faciliter l’accès. Il devenait ainsi plus aisé d’interrompre une impression sur papier.

Bien entendu, à l’époque, les menaces informatiques n’étaient pas ce qu’elles sont aujourd’hui, et cette fonction de rappel ne présentait que des avantages. De nos jours, c’est une autre paire de manches, et le fait qu’une telle fonction subsiste sous une forme ou sous une autre dans les versions récentes de Windows soulève question.

En effet, cette fonction permet d’interrompre une tâche sans qu’un quelconque contrôle sur la validité de la commande ne soit exigé par le système d’exploitation : Windows reconnaît cette fonction comme légitime en toute circonstance, et si elle émane, par exemple, d’un fichier WMF piégé, elle sera exécutée de toute façon. Et si la fonction réclame, par exemple, la fermeture de l’Explorateur Windows depuis la liste des processus actifs, elle l’obtiendra…

Et votre PC cessera de fonctionner.

La faute à qui ' Pas seulement aux développeurs de Microsoft, ni même aux gens malintentionnées qui exploitent cette faiblesse, mais à la nature même des impressions telles qu’elles sont gérées par Windows. Avant de tracer quelques caractères sur une feuille de papier, il faut déjà définir de nombreux paramètres, comme la taille du papier, la forme des caractères, la longueur de la ligne avant saut de ligne, la couleur du fond de la page, etc... Tous ces paramètres forment ce qu’on appelle un contexte. Une fois défini le contexte, l’impression peut être lancée. Les fichiers WMF réclament un contexte différent de celui, par exemple, d’un fichier texte : les fonctions de dessin (car il s’agit bien de dessiner à l’écran des formes parfois complexes) sont plus élaborées, et les besoins en ressources plus conséquents. Pour pouvoir interrompre l’exécution d’un fichier WMF, et économiser ces ressources, il est nécessaire d’intégrer dans la commande d’exécution une porte de sortie, au cas où l’utilisateur changerait d’avis, et déciderait de ne plus afficher le contenu dudit fichier WMF.

Cette porte de sortie, c’est la fameuse fonction ‘’SetAbortProc’’, intégrée dans une commande d’échappement.

Le problème, c’est que les fichiers WMF sont répertoriés par Windows d’une manière jugée peu naturelle par certains : le code qui leur est attribué repose sur une valeur arbitrairement fixée, et qu’aucune situation ‘’normale’’ ne peut reproduire. En d’autres termes, pour exploiter la faiblesse introduite par le format WMF, il faut savoir que cette particularité existe. Ce qui fait dire à certains de nos confrères que cette vulnérabilité est en fait une porte dérobée (backdoor), soigneusement dissimulée par les développeurs de Windows, et dont ils ont égaré la clé. Celle-ci a finalement été retrouvée, mais par des gens pas très bien intentionnées. D’où le feuilleton à rallonge dont nous nous somme faits l’écho ces dernières semaines.

La véritable question, telle que soulevée par nos homologues américains, est de savoir qui a eu la malencontreuse idée, si c’est le cas, de laisser la porte de la cuisine ainsi déverrouillée sous Windows. Et à quelles fins… '

Microsoft a presqu'aussitôt réagi, contredisant les affirmations de Steve Gibson, et indiquant que la fonction ''SetAbortProc'' a été introduite en toute bonne fois. L'éditeur de Redmond ajoute que jusqu'à un passé récent, le format WMF était jugé parfaitement sûr, et ne requérait par conséquent pas de surveillance particulière.

Bien entendu, il en va tout autrement aujourd'hui. Quelque chose me dit que nous allons à nouveau entendre parler de cette histoire, dans les prochaines semaines. Ne vous éloignez pas trop...



Source : Slashdot