
Strumenti per il controllo del LED della webcam su ThinkPad X230
Questo repository contiene strumenti che consentono di ottenere il controllo software del LED della webcam su ThinkPad X230 senza accesso fisico al portatile. Questi strumenti sono stati creati come dimostrazione pratica che un malware può registrare video tramite la webcam senza che il LED lo segnali.
Questo funziona riscrivendo il firmware della webcam via USB (la webcam del X230 è collegata internamente via USB) per aggiungere la capacità di controllare arbitrariamente il LED. Questo approccio probabilmente riguarda molti altri portatili, poiché collegare la webcam via USB e consentire di riscriverne il firmware è un modello di progettazione comune tra i produttori di portatili.
Vedi il talk "Lights Out: Covertly turning off the ThinkPad webcam LED indicator" (pdf) che ho tenuto al POC 2024 per i dettagli: la scoperta di un modo per riscrivere il firmware della webcam X230, il reverse engineering del firmware, l'aggiunta di un impianto per il controllo del LED e note sull'applicabilità dell'approccio ad altri portatili.
Nota: riscrivere il firmware della webcam potrebbe rendere inutilizzabile la webcam; usare questi strumenti con cautela.
La webcam utilizzata su ThinkPad X230 (e su alcuni altri portatili della stessa epoca) si basa sul controller per fotocamera USB Ricoh R5U8710. Questo controller memorizza una parte del suo firmware, la parte SROM, sul chip di memoria flash SPI situato sulla scheda della webcam. Il controller consente inoltre di riscrivere i contenuti del chip SPI via USB.
Il LED sulla scheda della webcam del X230 è collegato al pin GPIO B1 del controller R5U8710.
La porta GPIO B è mappata all'indirizzo 0x80 nello spazio di memoria XDATA della CPU basata su 8051 all'interno del controller R5U8710.
Pertanto, modificare il valore a quell'indirizzo cambia lo stato del LED.
Questo funziona indipendentemente dal fatto che la webcam stia trasmettendo video in quel momento o meno.
Gli strumenti forniti in questo repository consentono di flashare firmware personalizzato con un cosiddetto "impianto universale" controllato via USB sul chip SPI della scheda della webcam.
Questo impianto consente di scrivere dati controllati a indirizzi arbitrari (all'interno dello spazio di memoria XDATA) e di chiamare indirizzi arbitrari (all'interno dello spazio di memoria CODE; in alias con XDATA a partire dall'offset 0xb000).
L'impianto universale può essere utilizzato per:
Caricare dinamicamente un impianto di seconda fase nella memoria del controller della fotocamera ed eseguirlo (originariamente utilizzato a scopo di reverse engineering);
Controllare direttamente il LED della webcam.
Vedi le slide del talk per maggiori dettagli.
srom.py — legge e scrive la parte SROM del firmware di una webcam basata su Ricoh R5U8710 via USB.
Nota: la webcam carica il firmware SROM solo durante l'avvio. Pertanto, sarà necessario spegnere completamente il portatile (spegnimento completo, non solo riavvio) affinché il firmware aggiornato venga caricato;
patch_srom.py — applica una patch all'immagine SROM della webcam FRU 63Y0248 (non della webcam X230 originale) per aggiungere l'impianto universale.
Nota: questo strumento richiede modifiche per funzionare con l'immagine SROM della webcam X230 originale.
Tuttavia, l'immagine SROM del FRU 63Y0248 (opzionalmente, con l'impianto aggiunto) può essere flashata anche sulla webcam X230 originale;
fetch.py — recupera i contenuti dello spazio di memoria IRAM, XDATA o CODE via USB tramite un impianto di seconda fase caricato dinamicamente tramite l'impianto universale;
led.py — accende o spegne il LED della webcam sovrascrivendo il valore all'indirizzo 0x80 in XDATA tramite l'impianto universale.
srom/x230.bin — Contenuto SROM del modulo webcam X230 originale (FRU sconosciuto; marcatura 19N1L1NVRA0H sulla scheda);
srom/63Y0248.bin — Contenuto SROM del modulo webcam FRU 63Y0248;
code/63Y0248.bin — Contenuto dello spazio di memoria CODE estratto dal modulo webcam FRU 63Y0248.
Nota: la Boot ROM si trova al di sotto dell'offset 0xb000 ed è identica alla Boot ROM del modulo webcam X230 originale.