Zenbleed, l'ultimo di una lunga serie di bug di sicurezza per le CPU, è un'altra cosa che deve essere corretta. Ecco cosa devi sapere.
Dopo che gli exploit CPU Spectre e Meltdown sono stati pubblicizzati nel 2018, il mondo informatico è stato piuttosto vigile sulla ricerca di bug e scappatoie di sicurezza nei processori e negli ultimi cinque anni i ricercatori ne hanno trovati tantissimi. Il 24 luglio è stato reso pubblico un altro exploit dopo essere stato segnalato per la prima volta a maggio. Questa volta è specifico per i processori AMD basati sull'architettura Zen 2 ed è soprannominato "Zenbleed". Ecco tutto ciò che devi sapere su Zenbleed e cosa significa per il mondo.
Come funziona Zenbleed?
Zenbleed è molto simile ad altri bug di sicurezza basati su hardware come Spectre in quanto sfrutta la capacità speculativa delle CPU. Al fine di migliorare le prestazioni, CPU speculare o prevedere la prossima cosa che dovranno fare e, da quando Spectre è stato rivelato per la prima volta, il mondo ha imparato che la speculazione può essere molto insicura se fatta impropriamente.
I registri in una CPU possono contenere una piccola quantità di dati, in genere un'istruzione, un indirizzo di archiviazione o qualsiasi altro tipo di piccolo dato. I registri XMM in un'architettura x86_64 (quindi, qualsiasi processore Zen 2 interessato) possono essere utilizzati solo per eseguire calcoli sui dati, non per indirizzare la memoria. Questo è esteso a 256 bit nel caso dei registri YMM e 512 bit nei registri ZMM. In questo caso, XMM si riferisce ai 128 bit inferiori del file totale 512 bit dei registri ZMM.
Questi registri sono incredibilmente utili per molte cose diverse, comprese le funzioni C standard. La vulnerabilità abusa dell'esecuzione speculativa e delle previsioni errate dei rami per sputare essenzialmente un pezzo di dati casuale dalla memoria, ma quei dati possono provenire da nulla. Le funzioni della libreria C standard come strlen, che misura la lunghezza di una stringa, possono utilizzare questi registri per spostare i dati in giro, ed è possibile che, per caso, una password che usi sia sfortunatamente caduta in uno di questi registri.
La previsione dei rami e l'esecuzione speculativa si riferiscono in generale al momento in cui il computer esegue operazioni che non sono ancora necessarie ma che saranno probabilmente necessarie nei cicli successivi. Viene spesso eseguito nei periodi in cui il sistema dispone di risorse libere, poiché accelera l'elaborazione complessiva quando altrimenti le istruzioni o i dati non sarebbero ancora pronti per la CPU. Se il lavoro svolto non è necessario, in genere viene scartato e il processore può tornare al punto in cui è necessario per eseguire l'istruzione successiva, corretta. Quando lo fa, si parla di previsione errata del ramo.
Il problema si verifica nell'istruzione vzeroupper, che azzera i bit nella posizione 128 e superiore dei registri YMM e ZMM. Ciò viene fatto in particolare durante la transizione tra AVX e il codice SSE legacy, poiché elimina le prestazioni penalità causate da false dipendenze evitando allo stesso tempo un effetto simile alla promozione dei numeri interi in C.
Se il processore esegue speculativamente un'istruzione vzeroupper, non vi è alcun rollback adeguato. Tuttavia, i processori Ryzen interessati possono essere costretti a riprendersi, anche se in modo errato. Una volta in questo stato, il programma attualmente in esecuzione può quindi spiare tali registri in tempo reale, visualizzando i dati che fluiscono attraverso il sistema in qualsiasi momento.
Quali CPU sono interessate da Zenbleed e quando saranno disponibili le patch?
Come affermato in precedenza, solo le CPU AMD basate sull'architettura Zen 2 sono vulnerabili al bug di sicurezza Zenbleed, ma l'architettura Zen 2 ha alimentato le CPU in tre serie, rendendo complicato capire quali CPU sono vulnerabili e quali non lo sono. Ecco una tabella che dovrebbe chiarire tutto:
CPU interessate | |
---|---|
Serie Ryzen 3000 |
Tutti tranne le APU (ad esempio Ryzen 3 3200G) |
Roma epica |
Tutto |
Serie Ryzen 4000 |
Tutto |
Serie Ryzen 5000 |
Solo 5300U, 5500U e 5700U |
Serie Ryzen 7000 |
Solo APU 7020 (ad esempio Ryzen 3 7320U) |
Si tratta di un numero piuttosto elevato di processori AMD e questi sono solo quelli confermati finora. Zen 2 viene utilizzato anche nelle APU che alimentano Steam Deck, Xbox Series S e X e PS5. Non abbiamo saputo se anche queste CPU siano state colpite, ma a giudicare dal modo in cui funziona questo exploit, sarei sorpreso se non fossero state colpite anche loro. Sembra improbabile che AMD abbia apportato patch a Xbox e PS5 poiché anche i chip della serie 7020, che sono più recenti, sono interessati.
Nel momento in cui scrivo, il microcodice è stato inviato al kernel Linux ciò risolverà questa vulnerabilità e il tuo sistema operativo o BIOS potrebbe già avere un aggiornamento che risolve questo problema.
Cosa significa questo per i computer che utilizzano CPU vulnerabili?
È difficile rispondere a questa domanda perché non tutti i computer sono uguali. Per le persone normali che utilizzano solo desktop e laptop da gioco, probabilmente non è necessario preoccuparsi così tanto. Si tratta di un exploit piuttosto sofisticato e, sebbene ora sia di pubblico dominio, non ci sono ancora esempi noti di un utente malintenzionato che utilizzi Zenbleed per hackerare qualcosa.
Tuttavia, la posta in gioco è molto più alta per i data center e per le persone importanti che gestiscono informazioni sensibili sui propri computer. C'è un motivo per cui AMD è stata molto chiara sul fatto che Epyc Rome è stato corretto prima che la vulnerabilità fosse resa pubblica: molte persone sensibili le informazioni vengono gestite dalle CPU Epyc e sarebbe un disastro se le CPU che alimentano server su larga scala riuscissero a attaccato. Il kernel Linux 6.4.6 è già rilasciato e risolve questa vulnerabilità inserendo il file patch ufficiale del microcodice da AMD. Sembra probabile che Microsoft integrerà qualcosa di simile in Windows.
In modo preoccupante, Le patch ufficiali del BIOS di AMD potrebbero non essere disponibili prima di diversi mesi, nel qual caso c'è un "pezzettino di pollo" che puoi impostare se utilizzi una macchina Linux o FreeBSD. Su macchine Linux, puoi utilizzare msr-tools ed eseguire il seguente comando.
wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))
Su FreeBSD, puoi anche utilizzare quanto segue.
cpucontrol(8)
Disabilitare SMT non è sufficiente per mitigare la vulnerabilità.
Una cosa che rende Zenbleed particolarmente pessimo è che Zen 2 era una delle architetture CPU più popolari di AMD. Ha dato il via al ritorno di AMD nel 2019 e nel 2020 e molte persone, aziende e organizzazioni utilizzano ancora computer con processori Zen 2 nel 2023, in particolare Epyc Rome CPU. Questo non è così grave come Spectre (che colpisce praticamente tutte le CPU precedenti al 2019) e Meltdown (che colpisce praticamente tutte le CPU Intel precedenti al 2019), ma è comunque abbastanza esteso.
Anche le patch di sicurezza per vulnerabilità come questa spesso comportano una penalizzazione delle prestazioni, ma AMD ha detto L'hardware di Tom che questa penalità dipenderà dalla CPU e dal carico di lavoro. Le speculazioni e le previsioni sono state piuttosto importanti per le prestazioni della CPU, quindi non è chiaro se qualsiasi potenziale soluzione vedrà una riduzione significativa delle prestazioni.