[aleaksah] s’est procuré une Mi Smart Kettle Pro, une bouilloire avec connectivité Bluetooth et une application pour smartphone qui va avec. Malgré toutes les astuces, il ne pouvait pas être allumé à distance. Dynamisé par sa vision d’une maison intelligente idéale où il peut allumer la bouilloire le matin dès qu’il se réveille, il s’est mis à réparer cette injustice. (russe, traduit) Tout d’abord, il a démoli la bouilloire, dans l’intention de vider le micrologiciel, de le modifier et de le retransformer. Cela semble assez simple – où est le piège?
Cette bouilloire est construite autour du contrôleur QN9022, de la famille de puces assez ouverte QN902X. QN9022 nécessite une puce flash SPI externe pour le code, contrairement à ses frères et sœurs QN9020 et QN9021 qui ont un flash interne semblable à ESP8285. On pourrait penser que le vidage du micrologiciel serait simplement une question de lecture de ce flash, mais le micrologiciel est chiffré au repos, avec une clé unique pour chaque MCU et stockée en interne. Lorsque le microcontrôleur lit le contenu de la puce flash, il est déchiffré de manière transparente avant d’être exécuté. Il a donc fallu trouver un autre moyen, impliquant le MCU lui-même en tant que seule entité ayant accès à la clé de déchiffrement.
Il a persévéré et a décidé d’étudier le code du chargeur de démarrage lui-même, chargeant encore un autre stub de RAM qui viderait le code du chargeur de démarrage. Après avoir décompilé le chargeur de démarrage, mis à part quelques commandes non documentées mais sans intérêt, il a découvert que le chargement de n’importe quel type de programme envoyait en effet à la puce flash une commande pour effectuer un effacement flash. À partir de là, il pourrait théoriquement faire un hack avec une pince à épiler, protégeant le flash en écriture en court-circuitant ses broches de données – pourtant, il a décidé de trouver une méthode de vidage appropriée qui s’étendrait aux puces avec flash intégré, si l’un de ceux-ci apparaissent sur nos bureaux.
Un autre jour, un autre mécanisme de protection contre la lecture du micrologiciel a été contourné ! Trouver de tels exploits est bénéfique pour de nombreux voyages amusants, comme le récent piratage qui nous aide à exploiter des myriades d’appareils alimentés par STM32. Vous pouvez même utiliser les nombreux programmateurs ST-Link comme terrain d’entraînement ! Si l’interface SWD n’est pas déverrouillée sur votre appareil, consultez ce parcours éducatif sur la modification d’une manette Xbox tierce à l’aide de SWD. Vous vous demandez comment modifier le firmware que vous avez vidé ? Nous venons de couvrir un hacker moddant le firmware de leur synthétiseur Kurzweil avec Ghidra !