Edge vulnérable : Google le fait savoir sans attendre le correctif de Microsoft

Google a rendu publique une faille dans le mécanisme de cloisonnement destiné à empêcher les injections de code sur le navigateur Edge.

Microsoft risque-t-il, sous la pression de Google, de bâcler son correctif de sécurité ?

La question se pose une fois encore sur le Twitter de Tavis Ormandy.

L’intéressé est l’une des têtes de gondole de Project Zero.

Cette équipe d’experts en sécurité informatique, montée à l’été 2014 par Google pour détecter les vulnérabilités dans les principaux logiciels du marché, laisse traditionnellement 90 jours aux éditeurs pour colmater les failles qui leur sont signalées.

Passé ce délai, lesdites failles sont rendues publiques, preuves à l’appui. Une politique dont Microsoft vient de faire les frais, pour une vulnérabilité dans Edge.

Notifiée le 17 novembre 2017, la firme de Redmond n’a toujours pas fixé de date pour la livraison d’un patch. Tout au plus s’estime-t-elle capable d’avoir résolu le problème d’ici au 13 mars 2018, date du prochain Patch Tuesday.

La vulnérabilité en question réside dans la fonction ACG (Arbitrary Code Guard), intégrée fin 2016 dans la bêta d’Edge sur Windows 10 et rendue disponible pour tous les utilisateurs avec la mise à jour « Creators Update », diffusée en avril 2017.

Destiné à empêcher l’injection de code arbitraire, l’ACG sépare les pages mémoire inscriptibles des pages exécutables. Un cloisonnement que certains systèmes Linux mettent en œuvre depuis le début des années 2000 avec PaX.

Faille prédictive

Le problème constaté par l’équipe Project Zero vient du compilateur just-in-time qui transforme le JavaScript en code natif et l’exécute dans un processus de contenu.

Dans l’ordre normal des choses, le processus de compilation réserve d’abord, avec la fonction CreateFileMapping (), une zone mémoire partagée. Il s’y donne un accès en lecture-écriture et fournit au processus de contenu un droit d’exécution – avec la fonction MapViewOfFile.

L’allocation des pages inscriptibles se fait depuis cette zone mémoire, avec la fonction VirtualAllocEx ().

Or, le processus de contenu peut être compromis de sorte à prédire à quelle adresse le compilateur appellera VirtualAllocEx ().

Dans ce scénario, il peut alors dissocier la mémoire partagée, puis allouer une zone inscriptible à l’adresse prédite et y injecter du code… qui deviendra exécutable avec l’intervention du processus just-in-time.

Au dernier pointage de StatCounter, Edge capte 1,89 % du marché mondial des navigateurs Internet, contre 56,31 % pour Chrome de Google, 14,44 % pour Safari d’Apple et 5,66 % pour Firefox de Mozilla. NetMarketShare lui concède une part similaire (2,11 %), légèrement inférieure à celle d’Internet Explorer.

Crédit photo : DigitalMajority via Visualhunt / CC BY-NC-SA