Une attaque exploitant une vulnérabilité 0day dans Adobe Flash Player a été observée in the wild fin octobre 2010 [1] [2]. Les exploits rencontrés utilisaient une technique grossière de heap spraying pour parvenir à exécuter un code arbitraire. Haifei Li a présenté à CanSecWest 2011 [3] une méthode d'exploitation stable de cette vulnérabilité pouvant être étendue à d'autres bugs du player Flash, comme l'a montré Vupen [4].
1. One byte fuzzing
Comme l'explique Haifei Li dans un billet sur le blog de Fortinet [5], la vulnérabilité a été trouvée par fuzzing : le fichier SWF malveillant diffère seulement d'un seul octet d'un fichier SWF quelconque trouvé sur le Web. Cet octet correspond à une entrée du tableau cpool_info.multiname de la structure abcFile, qui représente le bytecode ActionScript [6].
Les entrées de la structure cpool_info sont des tableaux contenant les constantes (entier, chaînes de caractères, espaces de nom, etc.) utilisées par les différentes méthodes d'un code ActionScript. Le tableau multiname décrit les noms utilisés dans le bytecode. Ici, les 2 entrées sont :
- 0x16 : fl.controls::RadioButtonGroup ;
- 0x07 :
- 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