Un gruppo di ricercatori dell'Università Libre di Amsterdam ha identificato una nuova (CVE-2020-0543) nelle strutture microarchitetturali dei processori Intel, notevole in quanto consente di recuperare i risultati di alcune istruzioni eseguite su un altro core CPU. Questa è la prima vulnerabilità del meccanismo di esecuzione speculativa delle istruzioni che consente la perdita di dati tra i singoli core CPU (in precedenza le perdite erano limitate a diversi thread di un singolo core). I ricercatori hanno dato alla questione il nome di CROSSTalk, ma nei la vulnerabilità è menzionata come SRBDS (Special Register Buffer Data Sampling).
La vulnerabilità rientra nell' un anno fa e si basa sull'applicazione di metodi di analisi tramite canali laterali ai dati nelle strutture microarchitetturali. CROSSTalk è simile alla vulnerabilità , ma si differenzia per la fonte della perdita.
La nuova vulnerabilità manipola la perdita da un buffer intermedio precedentemente non documentato, che è condiviso tra tutti i core CPU.
in quanto alcune istruzioni del microprocessore, comprese RDRAND, RDSEED e SGX EGETKEY, sono implementate utilizzando un'operazione microarchitetturale interna chiamata SRR (Special Register Reads). Su processori vulnerabili, i dati restituiti per SRR si accumulano in un buffer intermedio condiviso da tutti i core CPU, per poi essere trasferiti in un buffer di riempimento legato a un particolare core fisico CPU sul quale è stata avviata l'operazione di lettura. Successivamente, dal buffer di riempimento, il valore viene copiato nei registri visibili alle applicazioni.
La dimensione del buffer intermedio condiviso corrisponde alla linea di cache, che è generalmente più grande della dimensione dei dati letti e diverse operazioni di lettura coinvolgono diversi offset nel buffer. Poiché il buffer condiviso viene copiato interamente nel buffer di riempimento, non viene spostata solo la porzione necessaria per l'operazione corrente, ma anche i dati residui dall'esecuzione di altre operazioni, incluse quelle eseguite su altri core CPU.
In caso di organizzazione di un attacco riuscito, un utente locale autenticato nel sistema può determinare i risultati delle istruzioni RDRAND, RDSEED e EGETKEY in un processo altrui o all'interno di un enclave Intel SGX, indipendentemente dal core CPU su cui viene eseguito il codice.
I ricercatori che hanno identificato il problema un prototipo di exploit, che dimostra la possibilità di fuga di informazioni sui valori casuali ottenuti tramite le istruzioni RDRAND e RDSEED, per ripristinare una chiave privata ECDSA, gestita in un enclave Intel SGX, dopo aver effettuato nel sistema un'unica operazione di firma digitale.

Il problema un ampio ventaglio di processori Intel per desktop, mobile e server, inclusi Core i3, i5, i7, i9, m3, Celeron (serie J, G e N), Atom (serie C, E e X), Xeon (famiglie E3, E5, E7, W e D), Xeon Scalable, ecc. È notevole che Intel sia stata avvisata della vulnerabilità nel settembre 2018 e che nel luglio 2019 sia stato fornito un prototipo di exploit, che dimostrava la fuga di dati tra i core CPU, ma lo sviluppo della patch è slittato a causa della complessità della sua implementazione. Nell'aggiornamento del microcodice proposto oggi, il problema è bloccato modificando il comportamento delle istruzioni RDRAND, RDSEED e EGETKEY per una sovrascrittura eccessiva dei dati nel buffer condiviso, per evitare l'accumulo di informazioni residue. Inoltre, è stata applicata una sospensione dell'accesso al buffer fino al completamento delle operazioni di lettura e sovrascrittura del contenuto.
L'effetto collaterale di tale protezione è l'aumento dei ritardi nell'esecuzione di RDRAND, RDSEED e EGETKEY, e la riduzione della larghezza di banda nel tentativo di eseguire simultaneamente queste istruzioni su diversi processori logici. L'esecuzione di RDRAND, RDSEED e EGETKEY sospende inoltre l'accesso alla memoria da parte di altri processori logici. Queste caratteristiche possono influire negativamente sulle prestazioni di alcune applicazioni server, pertanto nel firmware è previsto un meccanismo (RNGDS_MITG_DIS) per disabilitare la protezione delle istruzioni RDRAND e RDSEED, eseguite al di fuori dell'enclave Intel SGX.
Fonte: opennet.ru
