Un rootkit hypervisor può abilitare la virtualizzazione assistita dall'hardware quando è stato disabilitato dal BIOS?

12

Recentemente ho letto Un'introduzione all'hardware- Rootkit per HVM (Assisted Virtual Machine) (PDF) e non era del tutto chiaro sulle condizioni in cui il rootkit dell'hypervisor può avviare la virtualizzazione. Se la virtualizzazione è abilitata, tutto va bene, ma cosa succede se la virtualizzazione è disabilitata?

In particolare, Intel VT-x o AMD-v (VMX e SVM) supportano lo sblocco e l'attivazione di HAV dopo il BIOS (o un successivo hypervisor) disabilitato e bloccato? Non sono interessato a modificare il BIOS o a modificare le sue impostazioni, semplicemente se un hypervisor può modificare queste impostazioni.

(Se qualcuno si chiede: No, non sto pensando di creare un rootkit dannoso: P)

    
posta Matthew Read 01.06.2012 - 22:49
fonte

3 risposte

8

Per citare Manuale del software Intel, Volume 3c :

VMXON is also controlled by the IA32_FEATURE_CONTROL MSR (MSR address 3AH). This MSR is cleared to zero when a logical processor is reset. The relevant bits of the MSR are:

  • Bit 0 is the lock bit. If this bit is clear, VMXON causes a general-protection exception. If the lock bit is set, WRMSR to this MSR causes a general-protection exception; the MSR cannot be modified until a power-up reset condition. System BIOS can use this bit to provide a setup option for BIOS to disable support for VMX. To enable VMX support in a platform, BIOS must set bit 1, bit 2, or both(see below), as well as the lock bit.
  • Bit 1 enables VMXON in SMX operation. If this bit is clear, execution of VMXON in SMX operation causes a general-protection exception. Attempts to set this bit on logical processors that do not support both VMX operation (see Section 23.6) and SMX operation (see Chapter 6, “Safer Mode Extensions Reference,” in Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B) cause general-protection exceptions.
  • Bit 2 enables VMXON outside SMX operation. If this bit is clear, execution of VMXON outside SMX operation causes a general-protection exception. Attempts to set this bit on logical processors that do not support VMX operation (see Section 23.6) cause general-protection exceptions.

Interpretazione, per coloro che non sono fedeli a quello che sta succedendo qui:

  • MSR è l'acronimo di registro specifico per macchina e fa riferimento a registri / impostazioni di configurazione che alterano tra le implementazioni dell'architettura x86.
  • Alcuni di questi sono usati per configurare le funzionalità per quella famiglia di processori.
  • VMXON è l'istruzione (Intel) x86 per entrare nella modalità di gestione dell'hypervisor - il punto in cui si ottiene l'accesso alle funzioni di virtualizzazione assistita hardware comprese le tabelle di pagine estese, ecc. Qui, si creano macchine virtuali e si esegue vmenter e vmexit e così via.
  • Un'eccezione di protezione generale è un gestore di eccezioni incorporato nel processore che si verifica quando fai qualcosa che non ti è permesso fare. Gli esempi includono l'esecuzione di istruzioni privilegiate al di fuori di un livello privilegiato, ad es. l'istruzione sidt come applicazione in modalità utente (ring 3).

Come potete vedere dalla documentazione, i BIOS hanno la possibilità di abilitare o disabilitare VMX e possono anche usare il bit di blocco; se il bit di blocco è impostato, qualsiasi tentativo di scrittura di alterare la configurazione causerà un'eccezione GP.

Quindi in realtà dipende da come questi bit sono impostati dal BIOS, in risposta alla tua domanda. Se il BIOS imposta tutti i bit su 000, il software dovrebbe essere in grado di abilitare l'hypervisor tramite WRMSR - consultare la discussione qui . Penso che WRMSR sia un'istruzione privilegiata, il che significa che dovresti farlo dal kernel. Tuttavia, una volta impostato il bit di blocco, è necessario riavviare - in sostanza il circuito controllerà lo stato del flag di ripristino, quindi genererà un'eccezione sul sistema operativo - che può continuare normalmente o in crash, a seconda che comprende l'eccezione (molto probabilmente no).

    
risposta data 06.06.2012 - 19:53
fonte
1

Dipende completamente se la virtualizzazione può essere abilitata o meno dal sistema operativo. Mentre potrei sbagliarmi, posso immaginare che usando un certo syscall, puoi rifare un BIOS da un sistema operativo in esecuzione. C'è una scheda madre che lo consente su Windows, c'è lo strumento flashrom che lo consente su Linux.

Quindi qualcuno potrebbe rispecchiare il firmware per fare in modo che la virtualizzazione sia abilitata per impostazione predefinita e attendere il riavvio.

Per quanto riguarda ciò che può essere fatto senza riavvio, non lo so. Vorrei raccomandare di prendere la documentazione del processore e provare a vedere se ci sono informazioni su questo.

Naturalmente, se riesci a ripristinare il firmware / BIOS, puoi inserire direttamente un rootkit e questo punto è indirizzato da UEFI se non sbaglio (ma non in un modo che soddisfi tutti, specialmente nel lato software libero).

    
risposta data 02.06.2012 - 00:44
fonte
-1

No, poiché la CPU fornisce l'accesso dell'hypervisor alla modalità root sotto l'anello 0. Vedere pagina 6 di questo VMware whitepaper.

Vedi anche questo articolo KVM di Linux :

If your hardware doesn't have an IOMMU ("Intel VT-d" support in case of Intel - "AMD I/O Virtualization Technology" support in case of AMD), you'll not be able to assign devices in KVM. Some work towards allowing this were done, but the code never made it into KVM, due to various issues with the code. At the moment it doesn't seem like device assignment without hardware support, will ever be integrated into KVM.

    
risposta data 06.06.2012 - 19:48
fonte

Leggi altre domande sui tag