Outil de signature pour Kindle Fire HDX Exploits Bootloader

Que se passe-t-il lorsqu'une vulnérabilité liée à Android est publiée sur un site Web tel que le Forum CodeAurora? Tu l'as eu! Les passionnés de sécurité et les développeurs Android du monde entier tentent de tirer parti du nouveau problème rencontré pour créer un exploit, qui peut être utilisé pour obtenir un accès avancé à votre appareil (tel qu'un accès root ou la possibilité de flasher des images personnalisées).

C’est exactement ce qui est arrivé à CVE-2014-0973, une vulnérabilité dans un chargeur de démarrage Android appelé «Little Kernel (LK)». Nous parlerons des détails de l'exploit un peu plus tard, mais pour l'instant examinons ce que les développeurs ont mis au point.

Forum Member vortox a réussi à implémenter un exploit basé sur CVE-2014-0973 et a publié un outil pour la série Amazon Kindle Fire HDX, capable de signer des images de démarrage personnalisées si vous utilisez une version plus ancienne du chargeur de démarrage. Le point clé ici est que vous n'avez besoin d'aucun déverrouillage ni d'aucune astuce pour le faire fonctionner - l'exploit permet à l'outil de signer les images de manière à ce qu'elles passent l'étape de vérification dans le chargeur de démarrage avec brio.

La prochaine partie de cet article se concentrera sur le fonctionnement de l'exploit et sur les raisons pour lesquelles il est assez triste de constater cette vulnérabilité particulière dans un logiciel moderne. Si vous souhaitez simplement mettre la main sur l'outil le plus rapidement possible, dirigez-vous vers le message original et se déconnecter.

Les détails

Ok, voyons les détails de CVE-2014-0973. Le problème est tout à propos de RSA, une norme de cryptage également utilisée pour signer les images de démarrage Android. En bref, RSA est un système cryptographique à clé publique dans lequel vous avez deux clés, une clé privée et une clé publique. Habituellement, la clé publique (qui peut être partagée avec n'importe qui) est utilisée pour chiffrer un message qui ne peut ensuite être déchiffré qu'avec la clé privée (qui est gardée privée, d'où le nom). De cette façon, deux parties peuvent communiquer sans jamais divulguer leurs clés privées, qui doivent être déchiffrées.

Cependant, RSA peut également être utilisé pour vérifier le contenu d'un message (ou dans notre monde, pour «signer» quelque chose). Dans ce cas, le message est crypté avec la clé privée et peut ensuite être partagé avec le destinataire. La clé publique peut ensuite être utilisée pour déchiffrer le message et si le déchiffrement fonctionne correctement, le destinataire peut être sûr que le contenu chiffré provient de l'auteur d'origine et n'est en aucun cas tempéré.

En parlant de falsification, la vérification de signature est une fonctionnalité très importante pour tous les équipementiers Android, car il est essentiel de vérifier qu’un logiciel est bien un équipement OEM et non un tiers (par exemple, un développeur). Ainsi, par exemple, lorsque vous essayez de flasher une nouvelle image d’amorçage sur votre appareil, le problème est le suivant: le chargeur d’amorçage examinera la signature numérique RSA de l’image, la déchiffrera avec sa clé publique et s’assurera donc que l’image a été signée par le destinataire. auteur prévu (le fabricant OEM, qui est le seul à posséder la clé privée correspondante).

La signature déchiffrée contient une valeur de hachage des données d'image de démarrage, qui peut ensuite être utilisée pour comparer les données réelles sur le point d'être flashées. Donc, à ce stade, le chargeur de démarrage calcule la valeur de hachage de l'image de démarrage et la compare à celle trouvée dans la signature RSA. Si ces deux tables de hachage correspondent, il est à peu près certain (suffisamment pour qu'il soit sécurisé par rapport aux normes actuelles) que le contenu ne soit pas falsifié et que le propriétaire de la clé privée a signé l'image. Ce qui signifie fondamentalement que ce sont les logiciels en stock du fabricant OEM qui peuvent très bien être flashés.

Cette partie était probablement un peu plus difficile à comprendre, alors assurez-vous de bien la comprendre avant de continuer.

La vulnérabilité

Maintenant, qu'en est-il de la vulnérabilité, pourquoi cela nous permet-il de signer des images de démarrage malgré l'absence de clé privée (dont seul le fabricant OEM dispose)? Eh bien, il s’avère que l’implémentation de la vérification de la signature RSA dans le chargeur de démarrage Little Kernel est défectueuse. Le problème ici est que l'algorithme de déchiffrement ne vérifie pas la longueur des données qu'il traite. Bien que cela puisse sembler plutôt innocent, les lecteurs préoccupés par la sécurité verront immédiatement le problème. Cryptosystems doit toujours valider ses données d'entrée de la meilleure façon possible, en supposant simplement que les données sont «correctes», ce qui ouvre l'ensemble du processus à diverses attaques.

Et c'est exactement ce qui s'est passé ici. La vérification de la longueur manquante permet aux exploiteurs de forger une signature valide en ajoutant des données personnalisées à la signature, ce qui, à son tour, la rend valide pour la vérification du vérificateur dans le chargeur de démarrage. Expliquer cela en détail irait au-delà de la portée de cet article, mais vous trouverez à la fin quelques liens pour en savoir plus sur le sujet.

Si vous consultez le site Web qui a publié la vulnérabilité, il apparaît d’abord que le problème a été rendu public assez récemment, le 13 juin 2014, mais que des recherches plus approfondies vous permettront de découvrir rapidement qu’elle est un peu plus ancienne. Beaucoup plus vieux en fait. Le numéro initial remonte à 2006, lorsque Daniel Bleichenbacher en a parlé sur la scène de la Conférence internationale sur la cryptologie. Évidemment, il ne parlait pas d'un chargeur de démarrage Android, mais il a découvert que de nombreuses implémentations de signatures RSA présentaient une faille potentiellement désastreuse. Aujourd'hui, près de neuf ans plus tard, nous pouvons toujours tirer parti de la très ancienne vulnérabilité car elle permet aux propriétaires d'Amazon Fire HDX de signer des images de démarrage personnalisées pouvant être utilisées pour rooter le périphérique ou pour effectuer une récupération personnalisée.

Si vous souhaitez avoir une image plus détaillée de ce qui se passe dans les coulisses, assurez-vous de consulter ces liens:

  • Détails sur l'exposé original de Daniel Bleichenbacher (2006): //www.ietf.org/mail-archive/web/openpgp/current/msg00999.html
  • Article de blog de Symantec sur le problème (2006): //www.symantec.com/connect/blogs/common-rsa-implementation-mistake-explained
  • Divulgation des vulnérabilités lors du Forum Codeaurora (2014): //www.codeaurora.org/projects/security-advisories/incomplete-signature-parsing-during-boot-image-authentication-leads-to-signature-forgery-cve-2014-0973