OnePlus a accidentellement préinstallé une application qui agit comme une porte dérobée vers l'accès root

OnePlus a laissé en place une application de test d'ingénierie Qualcomm qui agit comme une porte dérobée pour accorder un accès root sur les OnePlus 3, 3T et 5.

Mise à jour: OnePlus a publié un réponse officielle à la question. Ils supprimeront la fonction racine ADB de EngineerMode dans une prochaine mise à jour.

Cela fait un peu plus d'un mois que OnePlus collecte informations personnellement identifiables pour l'analyse. L'entreprise a rapidement fait marche arrière et, dans une mise à jour, elle a promis d'être plus transparente en donnant clairement aux utilisateurs le option pour se désinscrire des analyses OxygenOS. Bien que cette débâcle ait été résolue depuis, une autre fait son apparition ce soir. Un utilisateur sur Twitter qui s'appelle "Elliott Alderson" (du nom du personnage principal de la populaire série télévisée Mr. Robot) a découvert que OnePlus accidentellement laissé en place une application de test de diagnostic fabriqué par Qualcomm. Après avoir décompilé cette application, il a découvert qu'elle pouvait être

exploité pour accorder un accès root – agissant effectivement comme une porte dérobée.

L'application s'appelle "EngineerMode" et il s'agit essentiellement d'une application système créée par Qualcomm. et fourni aux OEM comme OnePlus afin que les OEM puissent tester facilement tous les composants matériels du appareil. L'application est préinstallée sur tous les appareils OnePlus 3, OnePlus 3T et OnePlus 5 et peut être facilement accessible via n'importe quel lanceur d'activités car toutes les activités de l'application sont exportées.

En fait, nous a évoqué l'existence de cette application il y a plusieurs mois, mais à l’époque nous ne savions pas à quoi cela pouvait servir. L'utilisateur de Twitter a décompilé l'application (sa source a été mise en ligne ici) et j'ai trouvé une activité intéressante appelée DiagEnabled. Une méthode s’est notamment démarquée au sein de l’activité: escalatedUp. Cette méthode accepte une valeur booléenne (vrai/faux) et une chaîne. La chaîne est un mot de passe qui est vérifié par la méthode avant de définir les propriétés du système persist.sys.adbroot et oem.selinux.reload_policy à 1.

La première propriété système est particulièrement intéressante car elle permet à l'utilisateur d'exécuter ADB en tant que root. Cela ouvre immédiatement la possibilité d'acquérir un accès root complet sur le téléphone, le tout sans déverrouiller le chargeur de démarrage. Alors, comment faire exactement pour que l'application EngineerMode définisse ces propriétés système sur « 1 » ?

@ fs0c131y devait trouver le mot de passe correct pour envoyer l'intention afin de transmettre la logique dans la méthode publiée ci-dessus. Trouver ce mot de passe n’est cependant pas une tâche simple. Il a décompilé la bibliothèque chargée de générer le mot de passe (appelée libdoor.so) et a trouvé où se trouvait le hachage du mot de passe: /data/backup/fpwd. Le mot de passe est généré à partir de diverses propriétés de construction telles que ro.product.model et ro.product.brand et il ne serait pas facile de procéder à une ingénierie inverse.

Heureusement avec l'aide David Weinstein et Maintenant sécurisé sur Twitter, il a découvert le mot de passe nécessaire à EngineerMode pour faire passer ADB aux privilèges root.

Il suffit d'envoyer une intention dans ce format :

adb shell am start -n com.android.engineeringmode/.qualcomm.DiagEnabled --es "code""angela"

où com.android.engineeringmode/.qualcomm. DiagEnabled est le nom du composant de l'activité DiagEnabled que nous exploitons, et "code" est le nom de la chaîne et "angela" est la valeur du mot de passe pertinent.

@fs0c131y déclare qu'il le fera publier une candidature bientôt, cela enverra cette intention d'élever ADB aux privilèges root, de corriger l'image de démarrage pour désactiver dm-verity et d'installer les sous-binaires. Gardez un œil sur les forums XDA pour savoir quand cette application racine sera publiée.

Cela signifie pour les utilisateurs finaux que vous pouvez rootez facilement votre OnePlus 3, OnePlus 3T et OnePlus 5 sans jamais déverrouiller votre chargeur de démarrage. Cet exploit ne permet pas à une application malveillante de s'accorder un accès root, donc à moins que quelqu'un n'ait un accès physique à votre appareil pour configurer ADB, vous êtes à l'abri de toute exploitation.

Si vous souhaitez malgré tout vous protéger contre cet exploit, vous pouvez désinstaller l'application de l'utilisateur actuel ce qui empêchera l'intention d'être envoyée à l'application EngineerMode. Utilisez simplement la commande suivante dans ADB :

adbshellpmuninstall-k--user 0 com.android.engineermode

Bien sûr, cela est toujours considéré comme un exploit et nous espérons que OnePlus le corrigera bientôt. Tout ce qu’ils auraient à faire, c’est de supprimer cette application des futures versions.


Mise à jour 1: le mot de passe est « angela »

L'utilisateur @ fs0c131y a publié une mise à jour sur sa page Twitter avec le mot de passe dont vous avez besoin pour accéder à un shell ADB rooté. Ce mot de passe est...Angèle. Pour ceux d'entre vous qui ne regardent pas Mr. Robot, Angela est le nom de l'un des protagonistes. Je suppose qu'il doit y avoir beaucoup de fans de M. Robot chez Qualcomm.

Si vous entrez la commande que j'ai publiée ci-dessus dans ADB, vous remarquerez qu'ADB se déconnecte immédiatement et que le serveur redémarre. Entrez à nouveau ADB et vous remarquerez qu’il s’agit désormais d’un shell rooté.


Mise à jour 2: comment le mot de passe a été dérivé

La société de sécurité Now Secure a publié un article de blog détaillant comment elle a obtenu le mot de passe nécessaire pour que cet exploit root se produise. Vous pouvez lire leur article complet ici.


Mise à jour 3: plus d'appareils concernés

Ces dernières nouvelles ne devraient pas être une surprise, mais davantage d'appareils semblent être concernés par cet exploit. En effet, l'application EngineerMode est une application Qualcomm. Il est donc possible que d'autres constructeurs OEM l'aient laissée préinstallée sur leurs appareils. Jusqu'à présent, les utilisateurs ont contacté @fs0c131y sur Twitter pour confirmer que l'application est installée sur certains appareils Asus Zenfone et Xiaomi. Vous pouvez facilement vérifier si votre appareil dispose de cette application en accédant aux paramètres et en voyant quelles applications sont installées.


Mise à jour 4: rooter votre appareil

En utilisant quelques commandes via le shell ADB rooté, il est désormais possible de poussez le binaire su sur votre appareil. En utilisant cela, vous pouvez ensuite installer une application de gestion racine comme SuperSU, puis accorder librement un accès root à d'autres applications. Tout cela sans déverrouiller votre chargeur de démarrage !


Mise à jour 5: OnePlus répond

OnePlus a officiellement répondu à la situation. Dans un article de blog, la société réitère que cet exploit ne peut être utilisé que si un attaquant a un accès physique à l'appareil et a activé le débogage USB. Afin d'activer le débogage USB, l'attaquant a également besoin du code PIN/mot de passe de votre appareil. Ainsi, la porte dérobée racine n'est pas facilement exploitable par une application ou une personne, mais OnePlus répondra néanmoins aux préoccupations des utilisateurs en supprimant cette fonctionnalité de l'application EngineerMode.