Adobe Flash Player ByteArray Use After Free – CVE-2015-5119

juillet 8, 2015

Cela fait un moment que je voulais écrire un article sur les failles liées a Adobe Flash Player (oui j’avoue en ce moment niveau écriture d’articles je suis à la bourre). J’avais commencé a rédiger un brouillon sur une récente faille, mais hier matin, lorsque le CERT m’a informé d’une monstrueuse faille dans la dernière version de FLASH 18.0.0.194 ainsi que ses versions antérieures (Windows et Mac inclu) taggée CVE-2015-5119, je me suis dit que l’occasion était trop belle.

Les failles dans Flash Player sont très régulière, parfois plus ou moins facile à exploiter, et c’est bien souvent la raison pour laquelle le greffon est souvent verrouillé dans de nombreuses entreprises. Suite à l’exfiltration des données provenant de l’entreprise italienne « Hacking Team », (cette fameuse entreprise italienne commercialisant des logiciels espions, principalement aux gouvernements, qui s’est littéralement fait piller ses données) une vulnérabilité de type 0 day dans Adobe Flash Player a été dévoilée. Elle permet à un attaquant de provoquer une exécution de code arbitraire à distance.. bien, voyons ça de plus prêt.

Après quelques rapides recherches sur Google et différents sites liés à la sécurité, je suis rapidement tombé sur un Tweet de w3bd3vil détaillant diverses informations techniques relatant l’exploitation et l’analyse de cette faille, ainsi que sur un tres bon article de Trend micro. La vulnérabilité est lié à la classe ByteArray faisant parti du package flash.utils. Cette classe ByteArray  s’adresse aux développeurs qui doivent accéder aux données au niveau des octets. A titre d’exemple d’utilisation, de cette classe ByteArray, est utilisé lors de la création d’un protocole personnalisé de connexion a un serveur ou encore pour l’écrire d’URLencoder…

Lorsque l’on a un objet ‘ba’ (ByteArray) et que l’on assigne une valeur du type ba[0] = objet, il appellera la fonction ValueOf de cet objet.

La fonction ValueOf  peut être remplacée, quelqu’un peut donc changer la valeur de ba dans la fonction objet ValueOF

Si l’on réaffecte la mémoire de ba dans la fonction ValueOf, cela provoquera un UAF (Use-After-Free) car ba[0] = objet sauvegardera la mémoire original et l’utilisera après que fonction ValueOf ai été appelé.

Dans son tweet, W3bd3vil, demontre la vulnérabilité de cette façon :

un exploit, utilisable localement est disponible ici, il y a le .SWF ainsi que le FLA.

CVE-2015-5119

 

Coté Metasploit, un exploit a déjà été posté. Ajouter un exploit à la base de donnée est simple, il suffit simplement de copier l’exploit.rb dans votre ./msf4/modules/exploits, en respectant bien le chemin indiqué par Metasploit :

En l’occurrence ici j’ai fait un rapide :

même principe pour le SWF

il n’y plus qu’a lancer msf :

CVE-2015-5119-2
A l’heure ou j’ecris ces quelques lignes, ADOBE diffuse déjà très largement son correctif (update 18.0.0.203).