GNU/Linux >> Linux Esercitazione >  >> Linux

Test di vulnerabilità della CPU Spectre e Meltdown e aggiornamento del microcodice su Linux



Introduzione alle vulnerabilità della CPU Spectre e Meltdown

Un modo per bloccare questi attacchi è svuotare le cache di memoria in determinati momenti, eliminando le informazioni esfiltrate prima che l'attaccante possa accedervi. Scaricare la cache dopo ogni chiamata di sistema bloccherebbe probabilmente un'ampia gamma di attacchi speculativi, ma rallenterebbe anche il sistema al punto che gli utenti cercherebbero modi per disattivare il meccanismo. La sicurezza delle informazioni è molto importante, ma i costi sono troppo alti quando svuotando le cache di memoria si riducono i preziosi tempi di produzione.

Gli attacchi che utilizzano l'esecuzione speculativa implicano il convincere il processore a speculare su una strada che l'esecuzione non speculativa non seguirà. Ad esempio, una funzione del kernel può contenere un controllo del limite che impedirà al codice di accedere oltre la fine di un array, causando la restituzione di un errore. Un attacco che utilizza la vulnerabilità Spectre salterà quel controllo in modo speculativo, accedendo ai dati a cui il codice è stato scritto appositamente per non accedere. L'errore restituito è un indizio che forse sta accadendo qualcosa di inappropriato, ma a quel punto il danno sarà fatto.

Come verificare se il tuo server Linux è vulnerabile ai bug della CPU Spectre

Controllo spettro e fusione è uno script di shell che verifica la presenza di bug nei seguenti processori Intel/AMD/ARM e altre CPU:

  • CVE-2017-5753:bypass del controllo dei limiti (variante spettro 1). È necessario ricompilare il software e il kernel con un compilatore modificato che introduca il codice operativo LFENCE nelle posizioni appropriate nel codice risultante. L'impatto sulle prestazioni della mitigazione è trascurabile.
  • CVE-2017-5715:iniezione di target branch (variante spettro 2). L'impatto sulle prestazioni della mitigazione a seconda della CPU.
  • CVE-2017-5754:caricamento della cache di dati canaglia (Meltdown). È necessario installare la versione aggiornata del kernel con le patch PTI/KPTI. È sufficiente aggiornare il kernel. L'impatto sulle prestazioni della mitigazione è medio-basso.

spectre-meltdown-checker.sh è un semplice script di shell per scoprire se il tuo kernel Linux (installazione) è vulnerabile contro i 3 CVE di "esecuzione speculativa".

Installazione

Lo script deve essere eseguito come root utente. È possibile visualizzare il codice sorgente di seguito. Usa il comando wget o curl per acquisire il codice sorgente sulla tua macchina Linux:

$ cd /tmp/
$ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

O

$ git clone https://github.com/speed47/spectre-meltdown-checker.git

Esempi di output:

Clonazione in 'spectre-meltdown-checker'...

remote:Conteggio oggetti:155, fatto.

remote:compressione degli oggetti:100% (20/20), fatto.

telecomando:totale 155 (delta 18), riutilizzato 21 (delta 10), pack riutilizzato 125

Ricezione di oggetti:100% (155/155), 49,78 KiB | 145,00 KiB/s, fatto.

Risoluzione dei delta:100% (88/88), fatto.

Come controllare Linux per la vulnerabilità di Spectre e Meltdown

Esegui lo script come utente root usando il comando sudo o il comando su:

$ sudo sh spectre-meltdown-checker.sh

Esempi di output dal desktop Ubuntu Linux:

Un altro output dal mio server CentOS 7.x in cui Meltdown/Spectre v1 è stato patchato con il kernel:

$ sudo sh spectre-meltdown-checker.sh

Come installare/aggiornare il firmware del microcodice Intel su Linux?

Un microcodice non è altro che il firmware della CPU fornito da Intel o AMD. Il kernel Linux può aggiornare il firmware della CPU senza l'aggiornamento del BIOS all'avvio. Il microcodice del processore è memorizzato nella RAM e il kernel aggiorna il microcodice ad ogni avvio. Questi aggiornamenti del microcodice da Intel/AMD erano necessari per correggere bug o applicare errata per evitare bug della CPU. Questa pagina mostra come installare l'aggiornamento del microcodice AMD o Intel utilizzando il gestore pacchetti o gli aggiornamenti del microcodice del processore forniti da Intel su Linux.

Come scoprire lo stato attuale del microcodice

Esegui il seguente comando come root utente:

# dmesg | grep microcode

Esempi di output:


Come installare il firmware del microcodice Intel su Linux utilizzando un gestore di pacchetti

Lo strumento per trasformare e distribuire l'aggiornamento del microcodice della CPU per x86/amd64 viene fornito con Linux. La procedura per installare il firmware del microcodice AMD o Intel su Linux è la seguente:

  1. Apri l'app del terminale
  1. Tipo utente Debian/Ubuntu Linux:sudo apt install intel-microcode
  1. Tipo utente CentOS/RHEL Linux:sudo yum install microcode_ctl

I nomi dei pacchetti sono i seguenti per le distribuzioni Linux più diffuse:

  • microcode_ctl e linux-firmware – Pacchetto di aggiornamento del microcodice CentOS/RHEL
  • intel-microcode – Debian/Ubuntu e clona il pacchetto di aggiornamento del microcodice per le CPU Intel
  • amd64-microcode – Debian/Ubuntu e clona il firmware del microcodice per le CPU AMD
  • firmware linux – Firmware del microcodice Arch Linux per CPU AMD (installato per impostazione predefinita e non è necessaria alcuna azione da parte tua)
  • intel-ucode – Firmware del microcodice Arch Linux per CPU Intel
  • microcode_ctl, linux-firmware e ucode-intel – Pacchetto di aggiornamento del microcodice Linux Suse/OpenSUSE

Avvertenza:in alcuni casi, l'aggiornamento del microcodice può causare problemi di avvio come il blocco del server o il ripristino automatico al momento dell'avvio. Fallo a tuo rischio.

Esempi

Digita il seguente comando apt/comando apt-get su una CPU Debian/Ubuntu Linux per Intel:

$ sudo apt-get install intel-microcode

Esempi di output:



È necessario riavviare la casella per attivare l'aggiornamento del microcodice:

$ sudo reboot

Verificalo dopo il riavvio:

# dmesg | grep 'microcode'

Se stai usando RHEL/CentOS, prova a installare o aggiornare i seguenti due pacchetti usando il comando yum:

$ sudo yum install linux-firmware microcode_ctl
$ sudo reboot
$ sudo dmesg | grep 'microcode'

Come aggiornare/installare il microcodice scaricato dal sito Intel?

Utilizzare il metodo seguente solo quando consigliato dal fornitore, altrimenti attenersi ai pacchetti Linux come descritto sopra. La maggior parte del microcodice di aggiornamento del manutentore della distribuzione Linux tramite il gestore pacchetti. Il metodo di gestione dei pacchetti è sicuro in quanto testato da molti utenti.

Come installare il blob di microcodice del processore Intel per Linux (versione 20180108)?

Visita il sito AMD o Intel per prendere l'ultimo firmware del microcodice. Per prima cosa estrailo usando il comando tar:

$ mkdir firmware
$ cd firmware
$ tar xvf ~/path/to/file/microcode-20180108.tgz
$ ls –l

Esempi di output:

Assicurati che /sys/devices/system/cpu/microcode/reload esca:

$ ls -l /sys/devices/system/cpu/microcode/reload

Devi copiare tutti i file da intel-ucode a /lib/firmware/intel-ucode/ usando il comando cp:

$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

Hai appena copiato la directory intel-ucode in /lib/firmware/. Scrivi l'interfaccia di ricarica su 1 per ricaricare i file del microcodice:

# echo 1 > /sys/devices/system/cpu/microcode/reload

Aggiorna un initramfs esistente in modo che la prossima volta che venga caricato tramite kernel:

$ sudo update-initramfs -u
$ sudo reboot

Verifica che il microcodice sia stato aggiornato all'avvio o ricaricato dal comando echo:

# dmesg | grep microcode

Questo è tutto. Hai appena aggiornato il firmware per la tua CPU Intel.


Linux
  1. Come installare e testare Ansible su Linux

  2. Linux:configurazione, compilazione e installazione di un kernel Linux personalizzato?

  3. Linux:differenza tra spazio utente e spazio kernel?

  4. Il kernel Linux non si aggiorna alla 2.35.25?

  5. Introduzione agli interrupt di Linux e all'affinità SMP della CPU

CPU Power Manager:controlla e gestisci la frequenza della CPU in Linux

Installa Linux Kernel 4.15 in sistemi basati su RPM e DEB

Come utilizziamo Linux Test Project per testare e migliorare Linux

Come aggiornare Manjaro e altre distribuzioni Linux basate su Arch

Come applicare le patch di sicurezza del kernel Linux? Manualmente e Automaticamente senza riavvio?

Introduzione al monitoraggio e all'ottimizzazione delle prestazioni di Linux