Exploitation du décodeur de fonte WOFF de Firefox

Magazine
Marque
MISC
Numéro
50
Mois de parution
juillet 2010
Domaines


Résumé

Le 22 mars 2010, la fondation Mozilla a publié un bulletin de sécurité indiquant la correction d'une nouvelle faille de sécurité [1]. Reportée par Evgeny Legerov, elle affecte la version 3.6 de Firefox et a été corrigée dans la version 3.6.2. D'après ce bulletin, le décodeur WOFF contiendrait un integer overflow dans la fonction de décompression des fontes résultant sur un heap overflow dans certains cas : l'utilisation d'une fonte malformée pourrait provoquer le crash du navigateur et entraîner l'exécution d'un code arbitraire. La suite de cet article détaille l'origine de la vulnérabilité et les techniques utilisées pour l'exploiter.


1. Analyse de la vulnérabilité

1.1 Le format WOFF

Depuis la version 3.6 de Firefox, le nouveau format de fonte compressée WOFF (Web Open Font Format) est supporté ; en conséquence, la surface d'attaque s'est trouvée agrandie et une vulnérabilité n'a donc pas tardé à être trouvée.

WOFF encapsule des fontes SFNT (TrueType, OpenType, ou Open Font Format) compressées par l'algorithme zlib. La structure des fontes WOFF est documentée [4] et similaire à celles des fontes SFNT : un répertoire de tables contient l'offset et la longueur des tables de fontes, suivi des tables elles-mêmes (Figure 1).

 

woff

 

Figure 1 : structure d'une fonte au format WOFF

1.2 A la recherche du patch

Bien que le bulletin de sécurité donne des informations assez précises sur la vulnérabilité, aucun lien vers le patch [2] n'est présent. Il est cependant aisé de le trouver grâce au gestionnaire de versions accessible publiquement. Les commentaires du bugzilla...

Cet article est réservé aux abonnés. Il vous reste 93% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Zerologon pour les (mots de passe) nuls

Magazine
Marque
MISC
Numéro
113
Mois de parution
janvier 2021
Domaines
Résumé

ZeroLogon est LA vulnérabilité de septembre 2020 qui expose de nombreux domaines Windows à une compromission totale via un scénario d’exploitation réaliste et fiable. Mais ce qui donne à Zerologon ses lettres de noblesse c’est qu’elle repose essentiellement sur la mauvaise utilisation d’un algorithme cryptographique permettant de réaliser une attaque à clair choisi particulièrement astucieuse. Zoom sur la vulnérabilité la plus passionnante de la rentrée 2020 !

CVE-2020-3433 : élévation de privilèges sur le client VPN Cisco AnyConnect

Magazine
Marque
MISC
Numéro
112
Mois de parution
novembre 2020
Domaines
Résumé

Cet article explique comment trois vulnérabilités supplémentaires ont été découvertes dans le client VPN Cisco AnyConnect pour Windows. Elles ont été trouvées suite au développement d’un exploit pour la CVE-2020-3153 (une élévation de privilèges, étudiée dans MISC n°111). Après un rappel du fonctionnement de ce logiciel, nous étudierons chacune de ces nouvelles vulnérabilités.

Use-After-Free dans le noyau Linux

Magazine
Marque
MISC
HS n°
Numéro
22
Mois de parution
octobre 2020
Domaines
Résumé

Pièce logicielle qui a accompagné les deux dernières décennies, le noyau Linux est un système relativement complet qui dispose d’un allocateur de mémoire dynamique. Comme tous les logiciels classiques, le noyau est ainsi régulièrement sujet à des vulnérabilités de type Use-After-Free via cet allocateur.

Return oriented programming 101

Magazine
Marque
MISC
HS n°
Numéro
22
Mois de parution
octobre 2020
Domaines
Résumé

Le Returned Oriented Programming (ou ROP) est une technique permettant d'exploiter des programmes disposant de la protection NX (No eXecute) ou DEP (Data Execution Prevention). L'objectif de cet article est de vous présenter les bases du ROP, ainsi que l’exploitation pas-à-pas d’un programme d’entraînement via l'utilisation de la bibliothèque python pwntools [1]. Dans un souci de simplicité, la démonstration sera réalisée sur un programme s'exécutant sur un système Linux 64 bits. Bien entendu, cette démonstration reste applicable sur d'autres architectures (ARM, MIPS, etc.).