Un gruppo di ricercatori dell'Università Libera di Amsterdam ha identificato diverse nuove vulnerabilità di tipo Spectre-v2, pubblicate con il nome in codice Training Solo, che consentono di eludere i meccanismi di isolamento della memoria. Nel contesto dei sistemi di virtualizzazione, queste vulnerabilità permettono di determinare il contenuto della memoria dell'ambiente host dalle macchine virtuali, e nel contesto dei server, di accedere alla memoria del kernel durante l'esecuzione di un exploit nello spazio utente. Esempi di exploit per tali attacchi sono stati pubblicati su GitHub. Gli exploit presentati consentono di estrarre dati arbitrari dalla memoria del kernel a una velocità di 17 KB/sec e dalla memoria dell'ipervisore a 8.5 KB/sec.
Negli attacchi di tipo Spectre-v2, per organizzare la fuoriuscita di dati si utilizza la sostituzione di valori nel buffer degli indirizzi di diramazione (Branch Target Buffer) o nel buffer della storia delle diramazioni (Branch History Buffer), utilizzati per prevedere la prossima operazione di diramazione. Attraverso manipolazioni della storia delle diramazioni, si creano le condizioni per una previsione errata della diramazione durante l'esecuzione speculativa delle istruzioni. L'obiettivo dell'attaccante è che, durante l'esecuzione di un'operazione speculativa di diramazione, l'indirizzo per la diramazione venga preso dall'area di memoria desiderata. Dopo l'esecuzione della diramazione speculativa, nella cache del processore rimane l'indirizzo letto dalla memoria (sotto forma di indirizzo vengono letti i dati necessari all'attaccante dalla memoria). Per estrarre informazioni dalla cache si può utilizzare uno dei metodi di determinazione del contenuto della cache basato sull'analisi della variazione del tempo di accesso ai dati memorizzati e non memorizzati nella cache.
I metodi di attacco Training Solo sono mirati all'elusione dei meccanismi di isolamento delle aree di esecuzione (domain isolation), come IBPB, eIBRS e BHI_NO, utilizzati per bloccare gli attacchi di tipo Spectre-v2. Ad esempio, l'istruzione IBPB (Indirect Branch Prediction Barriers) assicura il reset dello stato del blocco di previsione delle diramazioni ad ogni cambio di contesto — durante il passaggio di controllo tra lo spazio utente e il kernel o tra una macchina virtuale e l'ambiente host. Il reset dello stato blocca la possibilità di utilizzare codice proprio per influenzare il comportamento del blocco di previsione delle diramazioni indirette.
Le differenze nei metodi Training Solo consistono nel fatto che per influenzare il blocco di previsione delle diramazioni non viene suggerito di avviare codice controllato dall'attaccante, ma di utilizzare codice già presente nell'area di esecuzione privilegiata (kernel o ipervisore) da cui l'attaccante cerca di ottenere fughe di dati. Per il resto, i metodi ricordano l'attacco classico di tipo Spectre-v2. Inoltre, i ricercatori hanno identificato due problemi hardware (CVE-2024-28956 e CVE-2025-24495) che permettono di eludere completamente l'isolamento delle aree di esecuzione e realizzare fughe da processi di altri utenti, altre macchine virtuali o dall'ambiente host.

Sono stati proposti tre tipi di attacchi Training Solo:
- Distorsione della logica di previsione delle diramazioni attraverso il richiamo di sequenze di comandi già esistenti nel kernel (gadgets) che influenzano il contenuto del buffer della storia delle diramazioni. Tra i gadgets proposti c'è il meccanismo di limitazione dell'accesso alle chiamate di sistema SECCOMP, che permette, tramite la sostituzione dei propri filtri BPF, di ottenere una falsa diramazione indiretta in modalità speculativa (i filtri in SECCOMP sono impostati utilizzando il classico cBPF, abilitato per impostazione predefinita a differenza dell'eBPF). Durante i test su CPU Intel Tiger Lake e Lion Cove, la velocità di fuga usando questo metodo è stata di 1.7KB/sec.
- Utilizzo delle collisioni dell'Instruction Pointer (IP) nel blocco di previsione delle diramazioni. L'attaccante può creare condizioni in cui l'indirizzo per una diramazione speculativa venga scelto solo sulla base dell'indirizzo già presente nel buffer, senza considerare la storia delle diramazioni. L'idea è che un'operazione di diramazione indiretta può influenzare un'altra se si verifica una collisione durante la memorizzazione degli hash dei loro indirizzi nel BTB (Branch Target Buffer).
- Utilizzo dell'influenza delle diramazioni dirette sulla previsione delle diramazioni indirette. Questo comportamento è causato da due vulnerabilità hardware: CVE-2024-28956 — ITS (Indirect Target Selection) e CVE-2025-24495 — un problema nei CPU Intel con core Lion Cove. La velocità di fuga di dati dalla memoria utilizzando questo metodo è stata di 17 KB/sec. Nell'exploit dimostrativo per determinare l'hash della password dell'utente root, memorizzato in memoria dopo l'esecuzione del comando "passwd -s", sono stati necessari 60 secondi.

Tutti i CPU Intel che supportano il meccanismo eIBRS, inclusi i CPU Intel Coffee Lake e Lion Cove, sono vulnerabili ad un attacco che distorce il buffer della cronologia delle transizioni. Per bloccare la vulnerabilità, Intel ha rilasciato un aggiornamento del microcodice che implementa una nuova istruzione IBHF (Indirect Branch History Fence), da utilizzare dopo il codice che influisce sul buffer della cronologia delle transizioni. Per i vecchi CPU Intel, si suggerisce di utilizzare un metodo software per ripulire la cronologia delle transizioni. È stata apportata una modifica al kernel Linux che aggiunge operazioni software e hardware la protezione contro gli attacchi, eseguite utilizzando cBPF. AMD ha dichiarato che il metodo d'attacco non è efficace sui suoi CPU. ARM ha comunicato che la problematica riguarda solo i vecchi processori ARM vulnerabili agli attacchi Spectre-v2 e non in grado di supportare le estensioni FEAT_CSV2_3 e FEAT_CLRBHB.
La vulnerabilità Indirect Target Selection (ITS, CVE-2024-28956) colpisce i CPU Intel Core di 9-11 generazione (Cascade Lake, Cooper Lake, Whiskey Lake V, Coffee Lake R, Comet Lake, Ice Lake, Tiger Lake e Rocket Lake) e Intel Xeon di 2-3 generazione. La vulnerabilità CVE-2025-24495 si manifesta nei CPU basati sulle microarchitetture Lunar Lake e Arrow Lake. I problemi sono stati risolti nell'aggiornamento del microcodice di ieri. È stata apportata una modifica al kernel Linux che blocca il problema trasferendo le transizioni indirette nella parte superiore della riga di cache.
Fonte: opennet.ru
