BlueBorne, un vecteur d'attaque permettant une contagion rapide et furtive

Filtrer par catégorie :

19 Septembre 2017 by Alexandre Lai
19 Septembre 2017 by Nha-Khanh Nguyen
BlueBorne_logo2
Armis Labs, une firme spécialisée dans l'IoT, a publié une collection de 0day qui impacte quasiment tous les terminaux mobiles mais également les principaux systèmes d'exploitation utilisés en informatique et dans le monde de l'IoT. Plus précisement, il s'agit de vulnérabilités touchant l'implémentation du protocole Bluetooth, très largement répandu au sein de toutes sortes d'équipements. D'après Armis, plus de 8,5 milliards d'appareils vulnérables ont été recensés dont 2 milliards seraient sous Android, 2 milliards sous Microsoft Windows et 1 milliard sous Apple iOS.


 

Comment ça marche ?

L'ensemble des vulnérabilités identifiées a été baptisé BlueBorne, dans la lignée de cette nouvelle habitude consistant à créer un nom, un logo et un story telling sexy autour de nos chères failles de sécurité. Ainsi "Blue" est une référence à Bluetooth et "Borne" à airborn, terme anglais pour évoquer la propagation dans l'air. D'après Armis, cette collection pourrait permettre d'accéder à des réseaux dits "air-gap", c'est à dire des réseaux physiquement isolés pour des raisons de sécurité. Aucun appairage ni action de la part de l'utilisateur n'est nécessaire : il suffit que le Bluetooth soit simplement activé sur l'appareil en question pour être vulnérable ; et ce, même si le mode de découverte est désactivé. La société Armis a publié plusieurs vidéos de démonstration mettant en œuvre le piratage d'un appareil muni d'une connexion Bluetooth et les conséquences  que cela pourraient engendrer. Il suffit donc à l'attaquant de localiser une connexion Bluetooth afin d'obtenir l'adresse MAC de l'équipement. De nos jours, rien de plus facile que de trouver un smartphone, une tablette, une montre ou même une set-top box émettant en continu sur ce protocole. Avec l'adresse MAC, l'attaquant peut alors retrouver le type de l'appareil utilisé puis son système d'exploitation. Android, iOS, Windows ou même Linux, l'attaquant n'a plus qu'à exploiter la bonne vulnérabilité selon ce qu'il souhaite faire. La société Armis a effectivement identifié 8 vulnérabilités au total dont 4 sont nettement critiques.


En quoi est-ce critique ?

BlueBorne est une collection de vulnérabilités fraîchement découvertes, et, pas de jaloux, il y en a pour tous les systèmes d'exploitation. Comme évoqué précédemment, il existe aujourd'hui toute une faune d'objets et d'appareils connectés où que nous soyons : à la maison, au bureau, dans la rue, aucun lieu n'y échappe. Ordinateurs, smartphones, montres, pacemakers, ampoules, caméras : l'internet des objets est truffé d'accessoires en tout genre. Inutile de rappeler que la plupart disposent du Bluetooth. L'attaquant n'a alors que l'embarras du choix. Il peut dans de trop nombreux cas obtenir le contrôle de l'appareil, le tout avec des privilèges élevés. Il ne tient alors plus qu'à lui d'exfiltrer des données, d'espionner ou de s'en servir pour déployer un malware. Le dernier scénario peut alors prendre des ampleurs considérables. L'appareil infecté, à son tour, localise les autres appareils dont le Bluetooth est actif dans son périmètre et propage le malware de la même manière qu'il l'a reçu. Un véritable mouvement latéral de masse extrêmement contagieux. De manière assez furtive, une personne malveillante est alors capable de faire de l'espionnage rien qu'en se tenant près des locaux de sa victime. Et ce n'est qu'une question de temps avant de voir apparaître les premiers ransomwares utilisant le vecteur BlueBorne, qui se propageraient alors comme une traînée de poudre.

 

Quelles sont les vulnérabilités identifiées et leurs impacts ?

La prise de contrôle totale à distance

Parmi les 0day "BlueBorne", on dénombre 4 vulnérabilités permettant l'exécution de code à distance. Du côté d'Android, la faiblesse se situe au niveau du service BNEP (Bluetooth Network Encapsulation Protocol) permettant le partage de données via Bluetooth, provoquant alors un heap-based buffer overflow (CVE-2017-0781) ou un integer underflow (CVE-2017-0782). En exploitant ces vulnérabilités, il est alors possible d'exécuter du code et d'élever ses privilèges grâce à la corruption de mémoire engendrée et ce sans même alerter l'utilisateur étant donné qu'aucun appairage, authentification ou intervention de l'utilisateur n'est requis. Une aubaine pour propager un logiciel espion au sein d'une société ou sur un site industriel sensible par exemple. Afin d'illustrer la portée de ces vulnérabilités, Armis a publié une vidéo de la prise de contrôle totale du smartphone d'un particulier alors même que celui-ci est juste à côté.

Il est également possible de prendre le contrôle total de l'appareil si ce dernier est sous Linux ou iOS. Sous Linux, la stack BlueZ embarque une implémentation de L2CAP (Logical Link Control and Adaptation Protocol), protocole utilisé pour connecter deux appareils entre eux, dont le code est sensible également au buffer overflow (CVE-2017-1000251). Comme dans les vulnérabilités précédentes, l'attaquant n'a plus qu'à injecter son payload et le tour est joué. Certains objets connectés, dont certaines smartwatch tournent notamment sous Linux. C'est le produit qu'a choisi d'utiliser Armis en guise de démonstration. Une montre, plus qu'un smartphone, émet constamment en Bluetooth en plus d'être quasiment tout le temps connecté à ce dernier pour certains modèles. Une fois au poignet, elle accompagne l'utilisateur dans ses moindres déplacements. Imaginez alors la portée de propagation d'un malware si la montre est infectée, ne serait-ce que lors une banale journée metro-boulot-dodo.

Quant à Apple, la marque a implémenter son propre protocole, nommé LEAP (Low Energy Audio Protocol), et permettant à des périphériques basse consommation (Bluetooth Low Energy) d'envoyer du son et des commandes audio. L'implémentation de LEAP gère cependant mal la taille des paquets reçus (CVE-2017-14315). L'exploitation de cette vulnérabilité est somme toute triviale. Le simple envoi d'un paquet Bluetooth classique résulterait en un heap-based buffer overflow, puisque plus volumineux qu'un paquet Bluetooth Low Energy.


Une fuite mémoire aux airs de Heartbleed

Afin de communiquer entre eux, les appareils munis de Bluetooth sont capables d'identifier les autres appareils dont le service est également activé, autour d'eux. C'est le SDP (Service Discovery Protocol) qui est responsable de cette caractéristique. Le client Bluetooth interroge les périphériques accessibles dans le but de découvrir les services qu'ils proposent puis déterminer quelle couche de la pile Bluetooth solliciter. Les requêtes SDP peuvent parfois attendre des réponses dont la taille dépasse le PDU (Protocol Data Unit). Un paramètre appelé "continuation state" est envoyé avec la réponse partielle afin de signifier qu'une ou plusieurs autres unités de réponse sont attendues. Or il se trouve qu'une erreur d'implémentation au niveau de ce paramètre permettrait à un attaquant d'en prendre le contrôle afin de lire en dehors des bornes de la mémoire (out-of-bounds read). Avec une requête spécialement conçue, l'attaquant peut provoquer en réponse une fuite de bits mémoire pouvant contenir des informations sensibles (clés de chiffrement...) contenues dans un apapreil Android (CVE-2017-0785) ou Linux (CVE-2017-1000250). Ce n'est pas sans rappeler une certaine vulnérabilité SSL, Heartbleed de son nom, qui avait beaucoup fait parler d'elle en 2012. Toutefois, il faut noter que les deux vulnérabilités impactant Android et Linux sont similaires mais concernent chacune une pile différente.


Bluetooth Pineapple

Tout comme son homologue sur WiFi, Bluetooth Pineapple est le surnom donné à la vulnérabilité touchant Android (CVE-2017-0783) et Windows (CVE-2017-8628), permettant d'intercepter les communications entre deux appareils, mais en Bluetooth cette fois-ci. Un défaut de sécurité situé à un autre niveau du service BNEP, plus précisement dans le protocole PAN (Personal Area Networking), responsable de la connexion entre deux appareils via un réseau IP, est identifié par Armis. Cette vulnérabilité donnerait les droits à un attaquant de créer une interface réseau pirate sur l'appareil de la victime puis de reconfigurer le routage IP afin de forcer la transmission des flux de communication vers cette interface. Là encore, l'attaque est complètement furtive : elle ne nécessite ni interaction utilisateur, ni authentification ni appairage et à l'inverse du Pineapple sur WiFi, elle ne nécessite aucun matériel particulier en sus. Comme démontré dans la vidéo d'Armis, un utilisateur, imaginons un employé sur son lieu de travail, peut se faire voler ses identifiants de connexion en toute discrétion et de manière indétectable par l’utilisateur, ni même par son entreprise qui surveille rarement les communications hertziennes.


Qui est impacté par BlueBorne ?

Toutes les versions d'Android antérieures au patch émis par Google en Septembre 2017 sont donc affectées par les vulnérabilités décrites (CVE-2017-0781, CVE-2017-0782, CVE-2017-0785, CVE-2017-0783). Seuls les objets connectés sous Android et de type "wearable" utilisant Bluetooth Low Energy ne sont pas impactés.

En ce qui concerne iOS, les iPhone, iPad et iPod faisant tourner une version antérieure ou égale à iOS 9.3.5 ainsi que les AppleTV ayant une version antérieure ou égale à 7.2.2 sont également concernés par BlueBorne. Pour l'heure, seuls iOS 10 et 11 ne sont pas affectés par la vulnérabilité CVE-2017-14315.

Du côté de Microsoft, les systèmes d'exploitation de Vista à Windows 10 sont impactés par la vulnérabilité CVE-2017-8628. Un patch a été publié le 12 Septembre 2017.

Enfin, les versions de BlueZ inférieures à 5.46 sont impactés par la vulnérabilité CVE-2017-1000250. Seuls les versions du noyau Linux allant de 3.3-rc1 à 4.13.1 sont affectées par l'injection de commande à distance (CVE-2017-1000251). Pour l'heure, aucun patch n'a encore été annoncé sur les plateformes Linux excepté du coté de Red Hat.

Plateforme Type de vulnérabilité Identifiant CVE Description
Android Exécution de code à distance CVE-2017-0781 Attaque furtive
Android Exécution de code à distance CVE-2017-0782 Attaque furtive
Android Fuite de données CVE-2017-0785 Similaire à Heartbleed
Android Attaque "Man-In-The-Middle" (MiTM) CVE-2017-0783 Bluetooth "Pineapple"
Linux Exécution de code à distance CVE-2017-1000251 -
Linux Fuite de données CVE-2017-1000250 Similaire à Heartbleed
iOS Exécution de code à distance CVE-2017-14315 -
Windows Attaque "Man-In-The-Middle" (MiTM) CVE-2017-8628 Bluetooth "Pineapple"
Tableau récapitulatif des vulnérabilités BlueBorne


Recommandations

Une mise-à-jour majeure a été publié par Google le 9 Septembre 2017, permettant de corriger les vulnérabilités de BlueBorne sur les systèmes Android. Comme toujours pour Android, il faudra attendre le bon vouloir des différents constructeurs de smartphones pour la diffusion du correctif. Pour Apple iOS, une mise à jour vers la version la plus récente permettra de se protéger contre BlueBorne.

Pour les systèmes ne proposant pas de correctif contre BlueBorne, le mieux reste de désactiver la fonctionnalité Bluetooth de l'appareil ou d'en réduire au maximum l'usage afin d'éviter toute compromission en attendant que le constructeur mette à disposition un patch.

Par ailleurs, la société Armis a publié une application disponible sur Google Store permettant de vérifier si un appareil est vulnérable et d'identifier les périphériques vulnérables dans le périmètre.


 

Conclusion

A ce jour, les codes d'exploitation de BlueBorne n'ont pas été divulgués et aucune exploitation dans la nature n'a encore été répertoriée. Il est cependant très rare que des failles de sécurité touchant un nombre aussi important d'appareils - rappelons-le, près de 8.5 milliards d'objets de tout types - n'intéressent pas quelques attaquants, d'autant que la société Armis a publié suffisament de détails pour que certains commencent à chercher. Pour le secteur de l'IoT, c'est, après les attaques de botnet de type Mirai, un second test de sa capacité à réagir face à une menace critique.