
Hardware backdoor nelle CPU x86
: backdoor hardware nelle CPU x86
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
progetto:rosenbridge rivela una backdoor hardware in alcuni processori x86 per desktop, laptop e embedded.
La backdoor permette al codice del ring 3 (userland) di aggirare le protezioni del processore per leggere e scrivere liberamente i dati del ring 0 (kernel). Sebbene la backdoor sia tipicamente disabilitata (richiedendo l'esecuzione in ring 0 per attivarla), abbiamo scoperto che è abilitata per impostazione predefinita su alcuni sistemi.
Questo repository contiene utilità per verificare se il tuo processore è affetto, chiudere la backdoor se presente, e la ricerca e gli strumenti utilizzati per scoprire e analizzare la backdoor.
La backdoor rosenbridge è un piccolo core non-x86 integrato accanto al core x86 principale nella CPU. Viene abilitata tramite un bit di controllo in un model-specific-register, e poi attivata con una launch-instruction. Al core integrato vengono poi inviati comandi, avvolti in un'istruzione x86 appositamente formattata. Il core esegue questi comandi (che chiamiamo 'deeply embedded instruction set'), bypassando tutte le protezioni della memoria e i controlli dei privilegi.
Sebbene la backdoor richieda l'accesso a livello kernel per essere attivata, è stato osservato che è abilitata per impostazione predefinita su alcuni sistemi, permettendo a qualsiasi codice non privilegiato di modificare il kernel.
La backdoor rosenbridge è completamente distinta da altri coprocessori pubblicamente noti sulle CPU x86, come il Management Engine o il Platform Security Processor; è integrata più profondamente di qualsiasi coprocessore conosciuto, avendo accesso non solo a tutta la memoria della CPU, ma anche al suo file dei registri e alla pipeline di esecuzione.
Si ritiene che solo le CPU VIA C3 siano interessate da questo problema. I processori della serie C sono commercializzati per l'automazione industriale, i punti vendita, gli sportelli ATM e l'hardware sanitario, oltre a una varietà di computer desktop e laptop consumer.
La portata di questa vulnerabilità è limitata; generazioni di CPU successive alla C3 non contengono più questa funzionalità.
Questo lavoro viene rilasciato come caso di studio ed esperimento mentale, illustrando come le backdoor possano emergere in processori sempre più complessi e come ricercatori e utenti finali possano identificare tali caratteristiche. Gli strumenti e la ricerca offerti qui forniscono il punto di partenza per una ricerca sempre più approfondita sulle vulnerabilità dei processori.
Per verificare se la tua CPU è interessata:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
L'utilità fornita deve essere eseguita su hardware nudo (non in una macchina virtuale) ed è in uno stato alpha. Potrebbe causare crash, panico o blocchi su sistemi che non contengono la backdoor.
Le utilità fornite qui sono progettate attorno a una specifica famiglia e core di processore; sfortunatamente, gli strumenti non rileveranno la backdoor se è stata anche solo leggermente modificata rispetto alla forma studiata.
Alcuni sistemi hanno la backdoor abilitata per impostazione predefinita, permettendo al codice non privilegiato di ottenere accesso a livello kernel senza autorizzazione. Se i passaggi in 'Verifica della tua CPU' indicano che la tua CPU è vulnerabile, puoi installare uno script per chiudere la backdoor all'inizio del processo di avvio:
cd fix
make
sudo make install
reboot
Nota che, anche con questo, un attaccante con accesso a livello kernel può ancora riabilitare la backdoor. Questo script è fornito come schema per correggere il problema durante il processo di avvio, ma richiederà adattamento per sistemi diversi.
L'utilità sandsifter è stata ampiamente utilizzata in questa ricerca per scoprire istruzioni sconosciute.
asm
Un assemblatore per il Deeply Embedded Instruction Set (DEIS). Converte i programmi scritti nell'assembly personalizzato rosenbridge in istruzioni x86, che, quando eseguite dopo la launch-instruction, invieranno i comandi al core CPU nascosto.
esc
Una prova di concetto dell'uso della backdoor rosenbridge per l'escalation dei privilegi.
fix
Uno schema approssimativo per chiudere la vulnerabilità sui sistemi interessati, nella misura possibile attraverso aggiornamenti dei model-specific-register.
fuzz
Una raccolta di utilità utilizzate per fuzzare sia il core x86 che quello rosenbridge, al fine di isolare la sconosciuta launch-instruction e bridge-instruction, e risolvere il formato delle istruzioni del core rosenbridge.
deis
Il fuzzer utilizzato per esplorare gli effetti e le capacità del core CPU nascosto.
exit
Si pensa che, su alcuni processori, sia necessaria una sequenza di uscita per tornare al core x86 alla fine di una sequenza DEIS. Questa directory contiene le utilità utilizzate per cercare la sequenza di uscita nelle fasi iniziali della ricerca, ma è stata abbandonata quando è stato trovato un processore che non richiedeva tale sequenza.
manager
Una raccolta di utilità Python progettate per monitorare e gestire attività di fuzzing distribuite su una rete di worker.
wrap
Una versione ridotta del fuzzer sandsifter, utilizzata per identificare la bridge-instruction che invierà comandi dal core x86 al core rosenbridge nascosto.
kern
Una raccolta di utilità helper utilizzate per monitorare la memoria del kernel e i registri per rilevare modifiche causate da istruzioni DEIS fuzzate.
lock
Utilità per bloccare o sbloccare la backdoor rosenbridge.
proc
Uno strumento per identificare pattern dai log di fuzzing per identificare classi di comportamenti delle istruzioni DEIS.
test
Uno strumento utilizzato all'inizio della ricerca, per tentare di identificare l'architettura del core nascosto eseguendo istruzioni RISC note.
util
Uno strumento in stato alpha per rilevare se un processore è affetto da rosenbridge.
(TODO: link to whitepaper)
(TODO: link to slides)
I dettagli e le implicazioni presentati in questo lavoro sono le inferenze e le opinioni degli autori, derivate dalla ricerca descritta. La ricerca è effettuata e fornita con l'obiettivo di identificare e correggere una presunta vulnerabilità di sicurezza sulle CPU descritte. I processori VIA sono rinomati per il loro basso consumo energetico e l'eccellenza nei progetti embedded; crediamo che la funzionalità descritta sia stata creata in buona fede come una caratteristica utile per il mercato embedded, e sia stata lasciata involontariamente abilitata su alcune prime generazioni del processore. Non è implicata alcuna intenzione malevola.
progetto:rosenbridge è uno sforzo di ricerca di Christopher Domas (@xoreaxeaxeax).