Vulnerabilità nel meccanismo MMIO dei processori Intel

Intel ha divulgato informazioni su una nuova classe di fughe di dati attraverso le strutture microarchitettoniche dei processori, che consentono, attraverso la manipolazione del meccanismo MMIO (Memory Mapped Input Output), di determinare le informazioni elaborate su altri core della CPU. Ad esempio, le vulnerabilità consentono l'estrazione dei dati da altri processi, enclavi Intel SGX o macchine virtuali. Le vulnerabilità sono specifiche solo per le CPU Intel; i processori di altri produttori non sono interessati dalle vulnerabilità.

Le vulnerabilità compaiono in varie CPU Intel, inclusi processori basati sulle microarchitetture Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake e Rocketlake, nonché Xeon EP/EX, Scalable e alcuni processori per server Atom. Per effettuare un attacco è necessario l'accesso a MMIO, che può essere ottenuto, ad esempio, nei sistemi di virtualizzazione che offrono la possibilità di accesso a MMIO per i sistemi ospiti controllati dall'aggressore. Potrebbe essere necessaria una correzione anche per i sistemi che utilizzano enclavi isolate Intel SGX (Software Guard Extensions).

Il blocco della vulnerabilità richiede sia un aggiornamento del microcodice che l'uso di metodi di protezione software aggiuntivi basati sull'uso dell'istruzione VERW per cancellare il contenuto dei buffer della microarchitettura quando si ritorna dal kernel allo spazio utente o quando si trasferisce il controllo al sistema ospite. Una protezione simile viene utilizzata anche per bloccare gli attacchi precedentemente identificati delle classi MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) e TAA (Transactional Asynchronous Abort).

Lato microcodice, le modifiche necessarie per implementare la protezione sono state proposte nell'aggiornamento del microcodice di maggio per le CPU Intel (IPU 2022.1). Nel kernel Linux, la protezione contro una nuova classe di attacchi è inclusa nelle versioni 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 e 4.9.319. Per verificare l'esposizione del sistema alle vulnerabilità in MMIO e valutare l'attività di alcuni meccanismi di protezione, il file "/sys/devices/system/cpu/vulnerabilities/mmio_stale_data" è stato aggiunto al kernel Linux. Per controllare l'inclusione della protezione è stato implementato il parametro di avvio del kernel “mmio_stale_data”, che può assumere i valori “full” (abilita la pulizia dei buffer durante lo spostamento nello spazio utente e nella VM), “full,nosmt” ( come “completo” + disabilita inoltre SMT/Hyper-Threads) e “off” (protezione disabilitata). Vengono offerte correzioni separate per l'hypervisor Xen e il sistema operativo Qubes.

L'essenza della classe di vulnerabilità identificata è che alcune operazioni portano alla copia o allo spostamento dei dati rimanenti dopo l'esecuzione su altri core della CPU da un buffer microarchitettonico a un altro. Le vulnerabilità in MMIO consentono a questi dati residui di essere trasferiti da buffer microarchitettonici isolati a registri visibili dall'applicazione o buffer della CPU. Sono stati identificati tre metodi per estrarre i dati residui tramite MMIO:

  • DRPW (Device Register Partial Write, CVE-2022-21166) è un problema relativo alla gestione errata delle scritture su alcuni registri MMIO. Se la dimensione dei dati da scrivere è inferiore alla dimensione del registro, nel registro vengono copiate anche le informazioni residue dai buffer di riempimento. Di conseguenza, un processo che avvia un'operazione di scrittura incompleta nel registro MMIO può ottenere i dati rimanenti nei buffer della microarchitettura dalle operazioni eseguite su altri core della CPU.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) è una perdita di dati residui da un buffer di riempimento associato al kernel risultante dallo spostamento dai buffer intermedi comuni a tutti i kernel.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123): il problema è simile a SBDS, ma differisce in quanto i dati residui possono finire nelle strutture della CPU visibili alle applicazioni. I problemi SBDS e SBDR si verificano solo sui processori per sistemi client e sulla famiglia di server Intel Xeon E3.

Vulnerabilità nel meccanismo MMIO dei processori Intel


Fonte: opennet.ru

Aggiungi un commento