CVE-2021-47277 in Linuxinformazioni

Riassunto

di VulDB • 21/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

kvm: evitare attacchi basati sulla speculazione derivanti da accessi a memslot fuori dai limiti

Il meccanismo di KVM per l'accesso alla memoria dell'ospite traduce un indirizzo fisico guest (gpa) in un indirizzo virtuale host utilizzando il gpa spostato a destra (noto anche come gfn) e una struct kvm_memory_slot. La traduzione viene eseguita in __gfn_to_hva_memslot utilizzando la seguente formula:

hva = slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE

Si prevede che il gfn rientri nei confini della memoria fisica dell'ospite. Tuttavia, un ospite può accedere ad indirizzi fisici non validi in modo tale che il gfn risulti non valido.

__gfn_to_hva_memslot viene chiamato da kvm_vcpu_gfn_to_hva_prot, che prima recupera un memslot tramite __gfn_to_memslot. Sebbene __gfn_to_memslot verifichi che il gfn rientri o meno nei confini della memoria fisica dell'ospite, una CPU può speculare il risultato del controllo e continuare l'esecuzione in modo speculativo utilizzando un gfn illegale. La speculazione può portare al calcolo di un hva fuori dai limiti. Se l'indirizzo virtuale host risultante viene utilizzato per caricare un altro indirizzo fisico guest, ciò costituisce effettivamente un gadget Spectre composto da due letture consecutive, la seconda delle quali dipende dai dati della prima.

Al momento non è chiaro se esistano casi in cui ciò sia sfruttabile. Un caso interessante è stato segnalato dall'autore originale di questa patch e riguarda la visita delle tabelle delle pagine guest su x86. Attualmente queste non sono vulnerabili perché la lettura dell'hva passa attraverso get_user(), che contiene una barriera di speculazione LFENCE. Tuttavia, sono in corso patch per x86 uaccess.h per mascherare gli indirizzi kernel invece di utilizzare LFENCE; una volta applicate, un ospite potrebbe utilizzare la speculazione per leggere dallo spazio degli indirizzi ring 3 del VMM. Altre architetture come ARM utilizzano già il metodo di mascheramento degli indirizzi e sarebbero suscettibili a questo stesso tipo di gadget di accesso dipendenti dai dati. Pertanto, questa patch protegge in modo proattivo da questi attacchi mascherando i gfn fuori dai limiti in __gfn_to_hva_memslot, bloccando così la speculazione di hva non validi.

Sean Christopherson ha notato che questa patch non copre kvm_read_guest_offset_cached. Tuttavia, questo è limitato a pochi byte oltre la fine della cache e, pertanto, è improbabile che sia utile nel contesto della costruzione di una catena di accessi dipendenti dai dati.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Prenotare

21/05/2024

Divulgazione

21/05/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00259

KEV

no

Attività

molto basso

Fonti

Want to stay up to date on a daily basis?

Enable the mail alert feature now!