Il y a quelques semaines, dans le cadre de son « Project Zero », Google a mis en Open Source l’un de ses outils de tests qui a aidé en 2017 à détecter 31 failles dans les navigateurs. Le problème c’est que l’essentiel de ces failles se trouve dans Safari, le browser d’Apple, son principal concurrent. Qui évidemment n’a pas le sens de l’humour et n’apprécie pas.

L’API DOM concernée

Dans tous les navigateurs, il y a une API qui permet aux applications d’accéder aux pages HTML, via leur modèle DOM (Document Object Model), autrement dit par l’arborescence des pages HTML et les évènements qui leur sont associés, généralement via la souris.

Cette API est donc au cœur des usages du navigateur et fait régulièrement l’objet de mises à jour de sécurité. Elle est même la principale concernée.

De son côté, Google a institutionnalisé la recherche des bogues et failles dans les logiciels susceptibles d’accéder à ses applications, avec la mise en place d’une équipe permanente depuis 2014.

C’est cette équipe qui a mis au point un outil de test automatique de sécurité, qui a détecté les fameuses 31 failles dans les browsers, qui font tant polémique aujourd’hui.

Cet outil a été réalisé par l’un des chercheurs du « Project Zero », Ivan Fratric, qui a écrit un « fuzzing DOM », autrement dit un générateur de données aléatoires, conçu pour analyser la résilience des navigateurs, leur comportement. Cet algorithme qui a été baptisé Domato, est composé de 3 parties distinctes :

  • un moteur de base, très générique pour pouvoir être appliqué à d’autres domaines que le DOM. C’est la mécanique centrale.
  • un script qui utilise le moteur précédent pour créer des échantillons. C’est le générateur de données aléatoires.
  • un ensemble de grammaires pour générer le code HTML, CSS et JavaScript.
Des plates-fores différentes

Selon les navigateurs analysés, Domato a été utilisé dans des conditions très différentes, ce que reconnaît Fratric, qui indique que Safari a été testé via WebKitGTK+, qu’Edge l’a été via un cluster de machines virtuelles Windows 10 dans le Cloud Azure de Microsoft, car Google ne supportait pas Windows 10, alors que pour IE11, la procédure a été exécutée dans le propre Cloud de Google, Google Compute Engine, avec un serveur Windows 2012 R2 64 bits.

Quant à son propre browser Chrome, sa résilience a été contrôlée  sur le cluster de « fuzzing » interne, dit ClusterFuzz, alors que Firefox l’a été sur une machine Linux également interne de Google.

On comprend bien alors que les cartes n’étant pas les mêmes, on pouvait difficilement accepter les conclusions d’Ivan Fratric, qui a fait remonter 2 failles de sécurité dans Chrome, 4 dans Firefox, de même que pour IE11 et 6 dans Edge. Le mauvais élève étant donc Apple avec Safari, pour lequel le chercheur du « project Zero » a trouvé 17 failles, soit plus que tous les autres réunis.

De là à dire que WebKit, qui est au cœur de Safari est une passoire et ne réagit pas correctement aux attaques sur le modèle DOM, il n’y avait qu’un pas, que ni Google, ni Fratric n’ont cependant franchi.

Fratric a d’ailleurs ouvert un accès Domato à Apple, par l’intermédiaire d’un ancien membre du « Project Zero », passé chez la marque à la pomme.

Beaucoup d’hypocrisie

La stratégie de Google est évidemment de démontrer que Chrome est plus sûr que ses concurrents. En indiquant par exemple que depuis que Chrome et Safari ne partagent plus le même moteur de rendu WebKit, le comportement sécuritaire de Safari s’est fortement dégradé.

Démontrant que lui a le sens de l’humour, Google est d’ailleurs prêt à offrir son aide à ses concurrents, pour que ceux-ci améliorent le comportement de leur navigateur. Comme s’il était seul à détenir la vérité.

Il est clair que tout cela est très hypocrite et ne doit pas être pris pour argent comptant. Les conditions de mise en œuvre du « fuzzing » étant évidemment essentielles, qui permettent de prouver une vérité, mais aussi son contraire.

La seule manière qui permettrait d’avoir une réponse claire sur le sujet, effectivement important, serait que ce soit un organisme indépendant qui propose de la fournir.

Ici ce n’est pas le cas.