[EXPLOIT][GOOGLE] Prise de contrôle du système via 2 vulnérabilités au sein du système Android

Le CERT-XMCO vous partage une information ayant fait l’actualité durant la semaine écoulée (9 octobre au 13 octobre). Il s’agit de la publication d’un code d’exploitation tirant parti de deux vulnérabilités Blueborne (présentées dans le bulletin CXN-2017-3389). Il permet à un attaquant de prendre le contrôle d’un téléphone vulnérable à portée de connexion Bluetooth.


Les vulnérabilités en question, référencées CVE-2017-0781 et CVE-2017-0785, affectent le composant Bluetooth du système Android. L’exploitation de ces failles permet respectivement d’exécuter du code à distance et de dérober des informations sensibles.

La preuve de concept se matérialise sous la forme d’un code en python, et concerne les équipements Pixel 7.1.2 et Nexus 5x 7.1.2 (correctifs juillet/août 2017).

Le code exploite tout d’abord la vulnérabilité de fuite mémoire au sein du Service Discovery Protocol (SDP, vulnérabilité CVE-2017-0785). Ces données contiennent des espaces d’adressage et des pointeurs (de code et données) pouvant être exploités pour contourner le mécanisme de sécurité Address Space Layout Randomization (ASLR). L’exploitation de cette vulnérabilité permet à l’attaquant de récupérer des adresses de la bibliothèque Libc (‘libc.so’) et de la section ‘bss’ associée à la bibliothèque implémentant la stack bluetooth d’Android (‘bluetooth.default.so’).

Le script exploite également une corruption de mémoire au sein de Bluetooth Network Encapsulation Protocol (BNEP, vulnérabilité CVE-2017-0781). L’attaquant configure son nom d’équipement Bluetooth avec une charge utile spécifiquement forgée. Ceci provoque l’écriture de cette charge au sein de la section ‘bss’ de l’équipement vulnérable. La charge utile contient notamment l’établissement d’un interprète de commande inverse (reverse shell) vers un serveur maîtrisé par l’attaquant. L’attaquant envoie ensuite 20 paquets spécifiquement forgés provoquant des réponses « Command not understood » par le service Bluetooth vulnérable. Enfin, en répétant une boucle de débordement, le script provoque l’appel de la fonction « btu_hci_msg_process » avec un message « p_msg » sous le contrôle de l’attaquant (la charge utile).

Ainsi, l’attaquant est en mesure d’exécuter des commandes système sur un équipement vulnérable à portée de connexion Bluetooth.


Versions vulnérables

  • Pixel 7.1.2
  • Nexus 5x 7.1.2

Code d’exploitation
La publication détaillant le code d’exploitation est disponible via l’adresse suivante :

https://go.armis.com/hubfs/BlueBorne%20-%20Android%20Exploit.pdf?t=1508711403067


Référence(s)

Adrien Guinault

Découvrir d'autres articles