Exploit cible le mode EDL de Qualcomm et affecte certains périphériques Xiaomi, OnePlus, Nokia et autres

Heureusement, il nécessite un accès physique à l'appareil

Les appareils équipés de puces Qualcomm disposent d'un PBL (Pimerary B oot l oader) qui démarre généralement le système Android, mais héberge également un mode de démarrage alternatif appelé mode EDL. Le mode EDL est le mode de téléchargement de fichiers de fusion de Qualcomm et permet à un fabricant d'équipement d'origine (OEM) de forcer le logiciel flash sur un périphérique. Cela ne peut pas être modifié (mode lecture seule) et permet un contrôle total sur le stockage de l'appareil. De nombreux constructeurs, dont OnePlus et Xiaomi, ont publié des outils (connus sous le nom de programmeurs) utilisant le mode EDL et un protocole appelé Firehose pour supprimer le périphérique, tandis que d'autres outils de sociétés telles que Nokia ont fui. Firehose peut utiliser un certain nombre de commandes pour faire clignoter des périphériques, ainsi que la possibilité d'examiner les données contenues dans la mémoire d'un périphérique. Les chercheurs en sécurité Roee Hay (@roeehay) et Noam Hadad d’ Aleph Research ont découvert des vulnérabilités de périphérique critiques en utilisant ce mode, ce qui confère à un attaquant un accès complet au périphérique .

Il est important de noter que cet exploit nécessite un accès physique à l'appareil, mais il est toujours extrêmement dangereux et ne peut probablement pas être corrigé . Les attaquants ont utilisé le niveau d’accès accordé au mode EDL pour contourner le démarrage sécurisé sur un Nokia 6, détruisant ainsi la chaîne de confiance et permettant une exécution complète du code, et ce, pour toutes les étapes de la séquence de démarrage, y compris le système d’exploitation Android. Il est théorisé de fonctionner de la même manière sur d’autres appareils et les chercheurs ont également réussi à déverrouiller et root plusieurs appareils Xiaomi sans aucune perte de données.

Quels appareils sont affectés par cet exploit?

Tout d'abord, les appareils qui sont affectés.

Liste des appareils concernés.

  • LG G4
  • Nokia 6 (d1c)
  • Nokia 5
  • Nexus 6 (shamu)
  • Nexus 6P (pêcheur à la ligne)
  • Moto G4 Plus
  • OnePlus 5 (cheeseburger)
  • OnePlus 3T
  • OnePlus 3
  • OnePlus 2
  • OnePlus X
  • Un plus un
  • ZTE Axon 7
  • ZUK Z1
  • ZUK Z2
  • Xiaomi Note 5A (Ugglite)
  • Xiaomi Note 5 Prime (ugg)
  • Xiaomi Note 4 (mido)
  • Xiaomi Note 3 (jason)
  • Xiaomi Note 2 (scorpion)
  • Xiaomi Mix (lithium)
  • Xiaomi Mix 2 (chiron)
  • Xiaomi Mi 6 (sagit)
  • Xiaomi Mi 5s (capricorne)
  • Xiaomi Mi 5s Plus (natrium)
  • Xiaomi Mi 5x (tiffany)
  • Xiaomi Mi 5 (gemini)
  • Xiaomi Mi 3 (cancro)
  • Xiaomi Mi A1 (tissot)
  • Xiaomi Mi Max2 (oxygène)
  • Xiaomi Redmi Note 3 (kenzo)
  • Xiaomi Redmi 5A (riva)
  • Xiaomi Redmi 4A (rose)

Exploiter un téléphone Android

Séquence d'amorçage d'un téléphone Android Qualcomm typique

Il est important de comprendre d'abord la séquence de démarrage d'un appareil Android typique avant d'expliquer comment il peut être exploité. Le logiciel officiel (SBL) est un chargeur de démarrage à signature numérique dont l’authenticité est vérifiée avant son chargement dans imem. imem est une mémoire rapide sur puce utilisée pour le débogage et les transactions DMA (accès mémoire direct) et est la propriété exclusive des chipsets Qualcomm.

Certains périphériques ont un XB (XBL) extensible au lieu d'un SBL, mais le processus de démarrage est à peu près le même. Le SBL ou le XBL lance ensuite ABOOT, qui implémente fastboot. Suite à cela, TrustZone (sécurité basée sur le matériel) est également chargé. TrustZone vérifie l'authenticité de ABOOT au moyen d'un certificat racine basé sur le matériel. Le SBL (ou XBL, dans certains cas) est conçu pour rejeter un ABOOT mal signé (ou non signé).

Une fois authentifié, ABOOT vérifie l’authenticité de / boot et / recovery avant de lancer le noyau Linux. Certaines préparations du système sont terminées, puis l'exécution du code est transférée au noyau. ABOOT est communément appelé «chargeur d'amorçage Android» et lorsque nous déverrouillons le chargeur d'amorçage d'un périphérique, nous désactivons cette vérification d'authenticité dans ABOOT.

Séquence de démarrage d'un appareil Android standard visualisé. // Source: Aleph Research

Accéder au mode EDL

Alors que certains appareils ont une combinaison matérielle simple (ou pire, une simple commande fastboot propriétaire présente dans de nombreux appareils Xiaomi), d'autres, tels que les appareils Nokia, ont besoin de broches courtes connues sous le nom de "points de test" sur la carte principale de l'appareil. Avant le correctif de sécurité de décembre 2017, il était également possible d'exécuter simplement «adb reboot edl» sur de nombreux appareils (y compris les Nexus 6 et 6P) et de passer en mode EDL. Ceci a été corrigé depuis.

Les points de test sont indiqués dans une boîte jaune dessinée au bas de la carte mère de l'appareil. // Source: Aleph Research

D'autres périphériques peuvent également utiliser un câble dit «flash profond», qui est un câble spécial dont certaines broches sont en court-circuit pour indiquer au système de démarrer en mode EDL. Les anciens appareils Xiaomi peuvent utiliser cette méthode, ainsi que Nokia 5 et Nokia 6. D'autres appareils démarreront également en mode EDL s'ils ne parviennent pas à vérifier le SBL.

Un câble flash profond

Utilisation du mode EDL pour obtenir un accès complet sur un OnePlus 3 / 3T

Le mode EDL peut être utilisé de différentes manières sur un périphérique, principalement pour dissocier les périphériques en les faisant clignoter. Comme expliqué ci-dessus, l'accès à ce mode devrait théoriquement être sûr pour quiconque, car le pire des cas est qu'ABOOT rejettera les logiciels qui ne sont pas officiellement signés par le fabricant. Bien que cela soit vrai, il est en fait possible de contrôler entièrement un OnePlus 3 ou 3T et ses fichiers dans un exploit de preuve de concept démontré par les chercheurs.

Cela se fera par le biais de deux commandes très dangereuses que OnePlus laissait accessibles dans une version antérieure d’ABOOT (le chargeur de démarrage Android), afin de déverrouiller le chargeur de démarrage du périphérique (sans qu'un avertissement ne soit affiché à l’utilisateur au démarrage) et de désactiver dm_verity. dm_verity est également appelé démarrage vérifié et fait partie d'une séquence de démarrage en toute sécurité sur un périphérique Android. Les deux commandes sont les suivantes.

 fastboot oem disable_dm_verity 
 fastboot oem 4F500301/2 

Observez le processus simple en 4 étapes ci-dessous, qui utilise le protocole Firehose.

  1. Commencez par démarrer le périphérique en mode EDL. Cela peut être effectué via adb sur OxygenOS 5.0 ou version ultérieure, ou en utilisant une simple combinaison de clé matérielle.
  2. Téléchargez une ancienne image système ci-dessous d'OxygenOS 4.0.2.
  3. Flash aboot.bin via firehose (rappelez-vous que aboot.bin implémente fastboot, comme nous l'avons mentionné précédemment)
  4. Vous pourrez maintenant désactiver le démarrage sécurisé et déverrouiller le chargeur de démarrage sans effacer le périphérique simplement en utilisant les deux commandes fastboot ci-dessus.

Si vous vous en souvenez bien, il a été constaté il y a près d'un an que OnePlus avait laissé deux commandes fastboot dangereuses, l'une qui déverrouillait le chargeur de démarrage et l'autre qui désactivait le démarrage sécurisé. S'il est vrai qu'un attaquant ne peut pas installer de logiciel malveillant sur le périphérique, il peut rétrograder le périphérique pour qu'il soit plus ancien et vulnérable aux logiciels d'attaque . Simplement en exécutant les commandes fastboot ci-dessus, un attaquant peut avoir un accès complet au périphérique.

Et voilà, le chargeur de démarrage est déverrouillé, le démarrage sécurisé est désactivé et il n'y a aucune perte de données. Si un attaquant souhaitait aller plus loin, il pourrait faire apparaître un noyau personnalisé illicite qui permet un accès root au périphérique, ce que l'utilisateur ne saurait jamais.

Firehose fonctionne via le protocole Qualcomm Sahara, qui accepte un programmeur signé par un fabricant et constitue le moyen de mener l'attaque ci-dessus. Lorsqu'il est connecté à un périphérique, il agit comme un SBL sur USB. La plupart des programmeurs utilisent Firehose pour communiquer avec un téléphone en mode EDL, ce que les chercheurs ont exploité pour obtenir le contrôle total du périphérique. Les chercheurs ont également utilisé cela pour déverrouiller un appareil Xiaomi en faisant simplement clignoter une image modifiée qui a déverrouillé le chargeur de démarrage. Ils ont ensuite flashé un noyau personnalisé qui donnait un accès root et lancé SELinux de manière permissive, puis extrait l'image de données utilisateur chiffrée du périphérique.

Conclusion

On ignore pourquoi les constructeurs OEM libèrent ces programmeurs de Qualcomm. Les programmeurs Nokia, LG, Motorola et Google ont eu des fuites plutôt que de paraître, mais les chercheurs ont réussi à briser toute la chaîne de confiance sur le Nokia 6 et à obtenir un accès complet à l'appareil par des méthodes d'exploitation similaires. Ils sont convaincus que l'attaque peut être portée sur n'importe quel périphérique prenant en charge ces programmeurs. Dans la mesure du possible, les constructeurs doivent utiliser des qFusibles matériels empêchant les restaurations logicielles, en soufflant lorsque le matériel du périphérique est restauré et en avertissant un utilisateur que cela s'est déjà produit. Les personnes intéressées peuvent consulter l'intégralité du document de recherche ci-dessous et lire également l'exploitation complète de Nokia.


Source: Recherche Aleph