web-dev-qa-db-fra.com

Comment détecter le contenu suspect dans un fichier de police TrueType Font (.ttf)

Je suis curieux de savoir comment analyser ou évaluer le risque d'un fichier de police particulier avant de le déployer sur des hôtes. La première ligne de défense, bien sûr, consiste à s'assurer que nos hôtes sont corrigés contre toutes les vulnérabilités des polices TrueType.

J'ai lu l'excellente recherche de Google Project Zero et il semble que cela vaut la peine de comprendre les risques liés aux polices. J'ai également lu le réponse de Tom Leek qui suggère (très judicieusement) d'essayer la police sous Linux avant de l'essayer sous Windows car:

il serait très difficile de créer une "police malveillante" qui peut installer un virus sur un système Windows, mais sinon fonctionne "correctement" sur un système Linux

Enfin, j'ai installé une bibliothèque python (FontTools) qui permet une conversion d'un fichier .ttf en un fichier .xml lisible par l'homme. Dans le fichier résultant, il y a des centaines de lignes de code d'assemblage comme il existe un "mécanisme d'indices" dans chaque fichier .ttf. C'est dans ce code Assembly qu'un attaquant insèrerait des exploits.

Pour de plus amples informations, je voudrais comparer un mauvais fichier .ttf connu, comme ceux qui ont été utilisés pour exploiter les vulnérabilités de gestion des polices, avec un bon fichier .ttf connu. J'imagine qu'il serait difficile de repérer les différences sans une connaissance intime de l'Assemblée, mais j'aimerais jeter un œil, ou du moins entendre quelqu'un ici si une telle chose est possible. Donc, la question est: quelqu'un connaît-il un moyen d'analyser les fichiers .ttf pour les commandes suspectes et quelqu'un sait-il où obtenir un fichier .ttf utilisé pour exploiter les vulnérabilités de gestion des polices.

9
mcgyver5

C'est une question intéressante. Les fichiers de polices sont comme d'autres fichiers multimédias qui pourraient être utilisés abusivement par des logiciels malveillants ou dans le cadre de tentatives d'exploitation.

La détection de blocs malveillants dans de tels fichiers multimédias suivrait une approche basée sur les signatures: vous ou votre logiciel antivirus rechercheriez un schéma suspect.

Je ne connais pas de compilation publique de code malveillant dans les fichiers de polices. Vous devrez peut-être compiler les vôtres à l'aide de bases de données de vulnérabilité publiques et exploiter des bases de données.

L'ouverture d'un fichier non approuvé sur une autre plate-forme peut permettre de détecter des défauts sans exposer l'environnement. En effet, le code d'exploitation cible généralement une plate-forme spécifique et il n'est pas possible de réussir sur d'autres. Un fichier de police qui se comporte mal pourrait alors être un indicateur d'une tentative d'attaque.

La conversion d'un fichier de police d'un format à un autre est essentiellement ce que ferait un proxy (une passerelle d'application le fait avec des protocoles). Une implémentation stricte détecterait les comportements inappropriés et échouerait la conversion. Une implémentation moins stricte ignorerait les parties malveillantes et générerait un fichier valide sans dangers persistants.

3
Marc Ruef