Le moderne CPU incorporano alcune caratteristiche hardware in grado di elevare il livello di sicurezza del vostro sistema, insieme ad una corretta impostazione del BIOS ed al sistema operativo. SecurAble (https://www.grc.com/securable.htm) è una piccola utility che, seppur datata, è in grado di mostrarvi al volo lo stato delle 3 più importanti caratteristiche di sicurezza relative al microprocessore: possibilità di eseguire istruzioni a 64 bit, stato di abilitazione del D.E.P. (Data Execution Prevention) e supporto alla virtualizzazione hardware.
Scaricate ed eseguite (meglio se con privilegi di amministratore) SecurAble; il vostro obiettivo DEVE ESSERE (per quanto consentito dal vostro hardware) quello dell'immagine seguente:
Nella finestra viene mostrato marca e modello della CPU e sotto, da sinistra verso destra, le 3 caratteristiche controllate. Potete fare click su ciascuna di esse per avere una spiegazione più dettagliata (in inglese):
- CPU a 32 o a 64 bit: l'ideale è ovviamente una CPU a 64 bit (sebbene non sia sufficiente a garantire il livello di sicurezza aggiuntivo, è il requisito minimo per far girare sistemi operativi a 64 bit ed eventualmente virtualizzarli). Una CPU a 32 bit non può far girare né virtualizzare sistemi a 64 bit.
- Supporto sia hardware che software al D.E.P., la più importante dal punto di vista della sicurezza. Il risultato DEVE essere Yes (cioè SI), altrimenti siete nei guai: se vedete un No, significa che avete una CPU obsoleta, oppure il BIOS/UEFI è mal configurato (bisogna accedervi ed abilitare l'opzione, può essere necessario aggiornare il BIOS/UEFI), oppure il sistema operativo è obsoleto (o una combinazione di queste cose). Se il problema è nella CPU, può essere impossibile installare le versioni più recenti di Windows (da Windows 8 in poi) e, in ogni caso, il sistema sarà esposto a tutte le tecniche di attacco che sfruttano l'assenza del DEP.
- Supporto alla virtualizzazione hardware: è necessario per la virtualizzazione di sistemi guest a 64 bit su sistemi host sia a 32 che a 64 bit. Inoltre, quando presente, consente di usare le tecniche di protezione basate sulla virtualizzazione, sfruttate dai moderni prodotti di sicurezza (antivirus, firewall ecc.). NOTA BENE: affinché la virtualizzazione hardware sia possibile, il supporto hardware/software DEP deve essere funzionante.
I risultati possibili sono 4:
- Yes: funzionalità completamente supportata (sia dalla CPU che dal BIOS/UEFI).
- Locked On: funzione supportata dalla CPU ed abilitata, ma non può essere disabilitata (va bene così: la tecnologia di virtualizzazione hardware è presente e funzionante). Probabilmente esiste una voce del BIOS/UEFI non modificabile o non presente per scelta del produttore (BIOS/UEFI bloccato o tecnologia attiva e non modificabile per motivi di sicurezza).
- Locked Off: funzionalità supportata dalla CPU (a patto che sia presente il DEP), ma è disabilitata e non può essere modificata, probabilmente a causa del BIOS/UEFI bloccato dal produttore della scheda madre: in tal caso l'unica possibilità di abilitarla è aggiornare il BIOS/UEFI e sperare che nell'ultima versione la voce relativa alla tecnologia di virtualizzazione della CPU sia stata sbloccata dal produttore del BIOS/UEFI e sia possibile abilitarla.
- No: funzionalità NON supportata. Questa situazione è molto frequente ed è risolvibile quasi sempre (a patto che sia presente il DEP) anche su sistemi non recentissimi. In genere la tecnologia di virtualizzazione della CPU è disabilitata per impostazione predefinita in tutti (o quasi) i BIOS/UEFI: basta accedervi ed abilitarla (talvolta ppotrebbe essere necessario aggiornare il BIOS/UEFI per far comparire l'opzione).
ATTENZIONE: Windows 10 April 2018 Update (v1803) può avere un comportamento bizzarro, nel senso che SecurAble potrebbe visualizzare l'assenza della virtualizzazione anche quando essa è pienamente supportata dalla CPU ed abilitata nel BIOS/UEFI. Tratterò questo caso in un altro articolo.
Architettura a 64 bit
Il termini "32 bit" o "64 bit" all'interno di un microprocessore (CPU) indicano la dimensione di componenti della CPU chiamate "registri ad indirizzo generale" e l'ampiezza del canale di comunicazione chiamato "bus dati" (NOTA: è una semplificazione, molte CPU Intel a 32 bit avevano un bus dati a 36 bit). Senza entrare nel dettaglio tecnico, l'utente ha la possibilità di usare computer e sistemi operativi a 64 bit in grado di gestire enormi quantità di memoria RAM, al contrario dei sistemi a 32 bit che sono limitati a soli 4 GiB di RAM. Inoltre, il kernel (nucleo) dei sistemi operativi a 64 bit è più protetto dai malware rispetto ad un kernel a 32 bit.
Cosa fare per avere un sistema a 64 bit?
Per avere un sistema a 64 bit dovete avere sia una CPU a 64 bit che un sistema operativo a 64 bit (driver di periferica compresi). Per controllare se la CPU è a 32 o 64 bit vi basta guardare il primo risultato di SecurAble; in alternativa visitate il sito web del produttore della CPU:
- per Intel: https://ark.intel.com (se la vostra CPU non compare nella lista di opzioni, vi basta fare una ricerca con Google);
- per AMD: https://www.amd.com/en/products/specifications/cpu/ (anche in questo caso, se la vostra CPU non compare nella lista di opzioni, basta cercare con Google).
Hardware con supporto D.E.P.
Le moderne CPU implementano in hardware una tecnologia chiamata NX-bit (No eXecute) o EVP (Enhanced Virus Protection), termini coniati da AMD, sebbene tali tecnologie non siano state originariamente sviluppate da tale azienda. Intel indica la propria tecnologia equivalente con il termine XD (eXecute Disable) o Execute Disable Bit. L'uso di tali tecnologie permette di contrassegnare zone di memoria RAM come contenenti esclusivamente dati, ma non istruzioni eseguibili (questa tecnologia fu sviluppata per difendere il sistema da un tipo di attacco chiamato buffer-overrun). La presenza di NX-bit/XD è necessaria per abilitare il D.E.P. (Data Execution Prevention), un insieme di tecnologie hardware e software che eseguono controlli aggiuntivi sulla memoria, capaci di prevenire l'esecuzione di software malevolo sul sistema. Per usufruire del DEP è necessario che la CPU sia dotata di NX-bit/XD (e che sia abilitato nel BIOS/UEFI) e che il sistema operativo sia capace di rilevarla ed usarla per la protezione.
Come abilitare il DEP se risulta non rilevato?
Per controllare che il DEP sia abilitato, guardate il secondo risultato di SecurAble; se il DEP risulta assente, occorre eseguire dei controlli:
- per verificare che il microprocessore supporti il DEP in hardware, controllate le specifiche della CPU sul sito del produttore (o con una ricerca su Google):
- per CPU Intel: verificare che il processore includa la tecnologia Execute Disable Bit (o XD). Tutte le CPU Intel almeno di classe Core (prodotte dal 2006 in poi) includono tale tecnologia, mentre per CPU precedenti (sia a 32 che a 64 bit) il controllo è necessario.
- per CPU AMD: verificare che il processore includa la tecnologia NX-bit (o EVP). Tutte le CPU a 64 bit di AMD a partire dall'Athlon 64 (prodotto a partire dal 1999) sono dotate di tale tecnologia, mentre per CPU precedenti il controllo è necessario.
- Se la CPU non ha NX-bit/XD non è possibile abilitare il DEP perché manca il supporto hardware della CPU (dovete cambiare computer). In tal caso non è supportata neanche la virtualizzazione hardware.
- Se, nonostante le vostre ricerche, non siete riusciti a capire se la CPU supporta il DEP, dovete controllare le impostazioni del BIOS/UEFI (passate al punto successivo).
- Controllare le impostazioni del BIOS/UEFI: accedere al BIOS/UEFI, entrare nelle impostazioni relative alla CPU e/o in quelle avanzate, abilitare la relativa voce, salvare le impostazioni ed uscire.
- per CPU Intel: abilitare la voce Execute Disable Bit oppure XD o simili;
- per CPU AMD: abilitare la voce No-Execute-bit o NX-bit o EVP o simili;
- se non trovate l'impostazione provate ad aggiornare il BIOS/UEFI all'ultima versione disponibile e rifate il controllo. Tenete anche conto che, se avete un computer moderno, il supporto hardware al DEP potrebbe essere abilitato (e non disabilitabile) per motivi di sicurezza, anche se non trovate la relativa voce (in tal caso SecurAble mostrerà Yes nel secondo risultato, ossia DEP abilitato, a meno che il sistema operativo sia incapace di gestirlo).
- Controllate la versione del sistema operativo: se la CPU supporta NX-bit/XD e la relativa voce nel BIOS/UEFI è abilitata, ma SecurAble segnala che il DEP è assente, allora dovete aggiornare il sistema operativo. Sui sistemi Windows la tecnologia DEP è attiva in modo predefinito a partire da Windows XP con Service Pack 2 e quindi sui successivi Windows Vista/7/8/8.1/10.
Virtualizzazione hardware
Per virtualizzazione hardware si intende un insieme di tecnologie e di istruzioni speciali incluse nella CPU, in grado di velocizzare la creazione ed esecuzione di macchine virtuali da parte di software speciali chiamati hypervisor (come VirtualBox o VMware). Una macchina virtuale è un computer software (è "virtuale" in quanto non concreta, tangibile come un computer reale). La tecnologia base di virtualizzazione Intel si chiama Intel VT-x (Intel Virtualization Technology), la controparte AMD si chiama AMD-V. Le tecnologie AMD-V e Intel VT-x possono migliorare notevolmente le prestazioni nell’uso dei software di virtualizzazione. Oltre alla "versione base", a seconda di marca e modello della CPU, possono essere opzionalmente presenti altre funzionalità legate alla virtualizzazione. Come anticipato, queste tecnologie in genere sono disabilitate nei BIOS/UEFI per impostazione predefinita: per abilitarle, basta accedere al BIOS/UEFI, entrare nelle impostazioni relative alla CPU e/o in quelle avanzate, abilitare tutte le voci legate alla virtualizzazione, salvare le impostazioni ed uscire dal BIOS/UEFI (se non trovate le impostazioni base Intel VT-x o AMD-V, vi suggerisco di aggiornare il BIOS/UEFI all'ultima versione disponibile). La opzioni da abilitare sono:
- per CPU Intel: abilitare l'impostazione base Intel Virtualization Tecnology o semplicemente Virtualization Tecnology, oppure Intel VT-x (meno frequentemente Intel VMX).
- Se presente (in genere non lo è), abilitate la voce Intel VT-x with EPT oppure Extended Page Tables (EPT), noto anche come Second Level Address Translation (SLAT), che fornisce l'accelerazione per applicazioni virtualizzate che richiedono un uso intensivo di memoria. In genere questa opzione è automaticamente abilitata dall'impostazione base Intel VT-x (lo SLAT è una caratteristica opzionale delle CPU con virtualizzazione), quindi se non la trovate non dovete preoccuparvi.
- Se presente (anche questa è una caratteristica opzionale della CPU), abilitare l'opzione Intel Virtualization Technology for Directed I/O o Intel VT-d o Direct I/O o voci simili, che aggiunge il supporto per la virtualizzazione dei dispositivi di I/O (come i dischi) e ne migliora sicurezza ed affidabilità negli ambienti virtualizzati. Anche in questo caso, se non trovate questa opzione non preoccupatevi, non tutte le CPU (anche se moderne) la includono.
- per CPU AMD: l'impostazione base è abilitare AMD-V o voci simili che richiamino alla virtualizzazione come SVM Mode (Secure Virtual Machine).
- Se presente (in genere non lo è), abilitate la voce Rapid Virtualization Indexing (o RVI) oppure Nested Page Tables (o NPT), la denominazione che AMD usa per il Second Level Address Translation (SLAT). In genere questa opzione è automaticamente abilitata dall'impostazione base AMD-V (lo SLAT è una caratteristica opzionale delle CPU con virtualizzazione), quindi se non la trovate non dovete preoccuparvi.
- Se presente (anche questa è una caratteristica opzionale della CPU), abilitare l'opzione AMD I/O Virtualization Technology o IOMMU o voci simili, la controparte AMD di Intel-VT-d. Anche in questo caso, se non trovate questa opzione non preoccupatevi, non tutte le CPU (anche se moderne) la includono.