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).
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...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première