
Outils pour contrôler la LED de la webcam sur ThinkPad X230
Ce dépôt contient des outils permettant d'obtenir un contrôle logiciel de la LED de la webcam sur ThinkPad X230 sans accès physique à l'ordinateur portable. Ils ont été créés pour démontrer concrètement qu'un logiciel malveillant peut enregistrer une vidéo via la webcam sans que la LED ne s'allume.
Cela fonctionne en reflashant le firmware de la webcam via USB (la webcam du X230 est connectée en interne via USB) afin d'ajouter la capacité de contrôler arbitrairement la LED. Cette approche affecte probablement de nombreux autres ordinateurs portables, car le fait de connecter la webcam via USB et de permettre le reflashage de son firmware est un schéma de conception courant chez les fabricants d'ordinateurs portables.
Voir la présentation "Lights Out: Covertly turning off the ThinkPad webcam LED indicator" (pdf) que j'ai donnée à POC 2024 pour les détails : la découverte d'un moyen de reflasher le firmware de la webcam du X230, la rétro-ingénierie du firmware, l'ajout d'un implant pour le contrôle de la LED, et des remarques sur l'applicabilité de cette approche à d'autres ordinateurs portables.
Remarque : Reflasher le firmware de la webcam peut rendre la webcam inutilisable, utilisez ces outils avec précaution.
La webcam utilisée sur le ThinkPad X230 (et quelques autres ordinateurs portables de la même époque) est basée sur le contrôleur de caméra USB Ricoh R5U8710. Ce contrôleur stocke une partie de son firmware, la partie SROM, sur la puce flash SPI située sur la carte de la webcam. Le contrôleur permet également de reflasher le contenu de la puce SPI via USB.
La LED de la carte webcam du X230 est connectée à la broche GPIO B1 du contrôleur R5U8710.
Le port GPIO B est mappé à l'adresse 0x80 dans l'espace mémoire XDATA du CPU basé sur l'architecture 8051 à l'intérieur du R5U8710.
Ainsi, modifier la valeur à cette adresse change l'état de la LED.
Cela fonctionne que la webcam soit en train de diffuser une vidéo à ce moment-là ou non.
Les outils fournis dans ce dépôt permettent de flasher un firmware personnalisé avec ce que l'on appelle un « implant universel » contrôlé via USB sur la puce SPI de la carte webcam.
Cet implant permet d'écrire des données contrôlées à des adresses arbitraires (dans l'espace mémoire XDATA) et d'appeler des adresses arbitraires (dans l'espace mémoire CODE ; en alias avec XDATA à partir de l'offset 0xb000).
L'implant universel peut être utilisé pour :
Charger dynamiquement un implant de second étage dans la mémoire du contrôleur de la caméra et l'exécuter (utilisé à l'origine pour de la rétro-ingénierie) ;
Contrôler directement la LED de la webcam.
Voir les diapositives de la présentation pour plus de détails.
srom.py — lit et écrit la partie SROM du firmware d'une webcam basée sur le Ricoh R5U8710 via USB.
Remarque : la webcam ne charge le firmware SROM que lors de son démarrage. Par conséquent, vous devrez éteindre complètement l'ordinateur portable (arrêt complet, pas seulement un redémarrage) pour que le firmware mis à jour soit chargé ;
patch_srom.py — patche l'image SROM de la webcam FRU 63Y0248 (pas de la webcam X230 d'origine) pour ajouter l'implant universel.
Remarque : cet outil doit être modifié pour fonctionner avec l'image SROM de la webcam X230 d'origine.
Cependant, l'image SROM du FRU 63Y0248 (éventuellement avec l'implant ajouté) peut également être flashée sur la webcam X230 d'origine ;
fetch.py — récupère le contenu de l'espace mémoire IRAM, XDATA ou CODE via USB grâce à un implant de second étage chargé dynamiquement via l'implant universel ;
led.py — allume ou éteint la LED de la webcam en écrasant la valeur à l'adresse 0x80 dans XDATA via l'implant universel.
srom/x230.bin — contenu SROM du module webcam X230 d'origine (FRU inconnu ; marquage 19N1L1NVRA0H sur la carte) ;
srom/63Y0248.bin — contenu SROM du module webcam FRU 63Y0248 ;
code/63Y0248.bin — contenu de l'espace mémoire CODE extrait du module webcam FRU 63Y0248.
Remarque : la ROM de démarrage se trouve sous l'offset 0xb000 et elle est identique à la ROM de démarrage du module webcam X230 d'origine.