Come mitigare le vulnerabilità di Spectre e Meltdown su sistemi Linux?


34

I ricercatori della sicurezza hanno pubblicato sul Progetto Zero una nuova vulnerabilità chiamata Spectre e Meltdown che consente a un programma di rubare informazioni dalla memoria di altri programmi. Colpisce le architetture Intel, AMD e ARM.

Questo difetto può essere sfruttato da remoto visitando un sito Web JavaScript. I dettagli tecnici sono disponibili sul sito Web di Redhat , il team di sicurezza di Ubuntu .

Perdita di informazioni tramite attacchi di canale laterale di esecuzione speculativa (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre e Meltdown)

È stato scoperto che una nuova classe di attacchi del canale laterale ha un impatto sulla maggior parte dei processori, inclusi i processori Intel, AMD e ARM. L'attacco consente ai processi dannosi di spazio utente di leggere la memoria del kernel e il codice dannoso nei guest per leggere la memoria dell'hypervisor. Per risolvere il problema, saranno necessari aggiornamenti al kernel Ubuntu e al microcodice del processore. Questi aggiornamenti saranno annunciati nelle future comunicazioni sulla sicurezza di Ubuntu non appena saranno disponibili.

Esempio di implementazione in JavaScript

Come prova di concetto, è stato scritto un codice JavaScript che, quando eseguito nel browser Google Chrome, consente a JavaScript di leggere la memoria privata dal processo in cui viene eseguita.

Il mio sistema sembra essere interessato dalla vulnerabilità dello spettro. Ho compilato ed eseguito questo proof-of-concept ( spectre.c).

Informazioni di sistema:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

Come mitigare le vulnerabilità di Spectre e Meldown su sistemi Linux?

Ulteriori letture: utilizzo di Meltdown per rubare le password in tempo reale .

Aggiornare

Utilizzando il Spectre & Meltdown Checkerdopo il passaggio alla 4.9.0-5versione del kernel seguendo @Carlos Pasqualini risponde perché è disponibile un aggiornamento di sicurezza per mitigare il cve-2017-5754 su debian Stretch:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Aggiornamento del 25 gennaio 2018

Lo spectre-meltdown-checkerscript è ufficialmente impacchettato da debian, è disponibile per Debian Stretch attraverso il repository di backport, Buster e Sid.

Aggiornamento 22/05/2018

Speculative Store Bypass (SSB), noto anche come variante 4

I sistemi con microprocessori che utilizzano l'esecuzione speculativa e l'esecuzione speculativa delle letture di memoria prima che siano noti gli indirizzi di tutte le precedenti scritture di memoria possono consentire la divulgazione non autorizzata di informazioni a un utente malintenzionato con accesso dell'utente locale tramite un'analisi del canale laterale.

Rogue System Register Read (RSRE) - noto anche come Variante 3a

I sistemi con microprocessori che utilizzano l'esecuzione speculativa e che eseguono letture speculative dei registri di sistema possono consentire la divulgazione non autorizzata dei parametri di sistema a un utente malintenzionato con accesso dell'utente locale tramite un'analisi del canale laterale.

Modifica il 27 luglio 2018

NetSpectre: lettura della memoria arbitraria sulla rete

In questo documento, presentiamo NetSpectre, un nuovo attacco basato sulla variante Spectre 1, che non richiede alcun codice controllato dall'aggressore sul dispositivo di destinazione, interessando così miliardi di dispositivi. Simile a un attacco Spettro locale, il nostro attacco remoto richiede la presenza di un gadget Spettro nel codice del bersaglio. Mostriamo che i sistemi contenenti i gadget Spettro richiesti in un'interfaccia di rete esposta o API possono essere attaccati con il nostro attacco generico Spettro remoto, che consente di leggere la memoria arbitraria sulla rete. L'attaccante invia solo una serie di richieste elaborate alla vittima e misura il tempo di risposta per perdere un valore segreto dalla memoria della vittima.



1
Ho rimosso il tag Debian per consentire a questa Q di applicarsi a tutto Linux (come da titolo); ripristina se è tua intenzione concentrare questo solo su Debian.
Jeff Schaller

Risposte:


12

Alan Cox ha condiviso un link dal blog di AMD: https://www.amd.com/en/corporate/speculative-execution

Variante 1: bypass Verifica limiti

Risolto da aggiornamenti software / SO che devono essere resi disponibili da venditori e produttori di sistemi. Impatto sulle prestazioni trascurabile previsto.

Variante due: Iniezione di Target Branch

Le differenze nell'architettura AMD comportano un rischio quasi zero di sfruttamento di questa variante. Finora la vulnerabilità alla variante 2 non è stata dimostrata sui processori AMD.

Variante tre: caricamento cache dei dati non autorizzati

Zero vulnerabilità AMD a causa delle differenze di architettura AMD.

Sarebbe comunque utile avere la conferma di queste dichiarazioni di AMD da parte di terzi.

La 'mitigazione' sui sistemi interessati, richiederebbe un nuovo kernel e un riavvio, ma su molte distribuzioni non sono ancora stati rilasciati pacchetti con le correzioni:

Debian:

Altre fonti di informazioni che ho trovato:


12
Un sacco di informazioni AMD non aiuterà un interrogante la cui CPU è un Intel Core.
JdeBP,

4
Per il kernel Linux, vedi il post di Greg Kroah-Hartman: kroah.com/log/blog/2018/01/06/meltdown-status
alanc,

Secondo le pagine debian collegate in precedenza (e le pagine in esse collegate) sembra che le patch del kernel verranno distribuite man mano che i fornitori responsabili pubblicheranno il loro microcodice. Tuttavia, da security-tracker.debian.org/tracker/CVE-2017-5754 (l'unico finora risolto) sembra che le correzioni siano state rese disponibili solo per versioni stabili e instabili. Qualcuno sa se possiamo aspettarci correzioni per oldstable ("jessie")? Non sono stato in grado di trovare alcuna dichiarazione di Debian o del team di sicurezza Debian su questo argomento ...
Shevek,

11

27 gennaio 2018 Intel Microcode rompe alcuni sistemi

L' aggiornamento Intel Microcode 2018-01-08 per risolvere i problemi di sicurezza delle ramificazioni dell'esecuzione speculativa ha rotto alcuni sistemi. Ciò ha interessato molti sistemi Ubuntu dall'8 al 21 gennaio. Il 22 gennaio 2018 Ubuntu ha rilasciato un aggiornamento che ripristina il vecchio microcodice dal 07-07-2017.

Se hai riscontrato problemi con gli aggiornamenti, reinstallato Ubuntu e disattivato gli aggiornamenti tra il 2018-01-08 e il 2018-01-22, ti consigliamo di provare nuovamente gli aggiornamenti automatici di Ubuntu.

16 gennaio 2018 aggiorna Spectre in 4.14.14 e 4.9.77

Se stai già eseguendo le versioni del kernel 4.14.13 o 4.9.76 come me, è un gioco da ragazzi installare 4.14.14e 4.9.77quando escono in un paio di giorni per mitigare la falla di sicurezza di Spectre. Il nome di questa correzione è Retpoline e non ha il grave impatto sulle prestazioni precedentemente ipotizzato:

Greg Kroah-Hartman ha inviato le ultime patch per le versioni di punti Linux 4.9 e 4.14, che ora includono il supporto Retpoline.

Questo X86_FEATURE_RETPOLINE è abilitato per tutte le CPU AMD / Intel. Per un supporto completo devi anche compilare il kernel con un compilatore GCC più recente contenente -mindirect-branch = supporto thunk-extern. I cambiamenti di GCC sono arrivati ​​ieri a GCC 8.0 ed è in procinto di essere trasferiti di nuovo a GCC 7.3.

Coloro che desiderano disabilitare il supporto Retpoline possono avviare i kernel con patch con noretpoline .

Senza entrare nei dettagli di JavaScript, ecco come evitare immediatamente il buco di fusione (e dal 10 gennaio 2018, Protezione dello spettro)

Aggiornamento del 12 gennaio 2018

La protezione iniziale da Spectre è qui e sarà migliorata nelle settimane e nei mesi a venire.

Linux Kernels 4.14.13, 4.9.76 LTS e 4.4.111 LTS

Da questo articolo di Softpedia :

I kernel Linux 4.14.13, 4.9.76 LTS e 4.4.111 LTS sono ora disponibili per il download da kernel.org e includono più correzioni contro la vulnerabilità della sicurezza dello spettro, nonché alcune regressioni da Linux 4.14.12, 4.9 .75 LTS e 4.4.110 kernel LTS rilasciati la scorsa settimana, poiché alcuni hanno riportato problemi minori.

Questi problemi sembrano essere stati risolti ora, quindi è sicuro aggiornare i sistemi operativi basati su Linux alle nuove versioni del kernel rilasciate oggi, che includono più aggiornamenti x86, alcune correzioni PA-RISC, s390 e PowerPC (PPC), vari miglioramenti a driver (Intel i915, crypto, IOMMU, MTD) e le solite modifiche al kernel mm e core.

Molti utenti hanno avuto problemi con gli aggiornamenti di Ubuntu LTS il 4 gennaio 2018 e il 10 gennaio 2018. Ho usato 4.14.13per un paio di giorni senza problemi, tuttavia YMMV .


Aggiornamento del 7 gennaio 2018

Greg Kroah-Hartman ha scritto ieri un aggiornamento sullo stato delle falle di sicurezza del kernel Meltdown e Spectre Linux. Alcuni potrebbero chiamarlo il secondo uomo più potente nel mondo Linux proprio accanto a Linus. L'articolo tratta dei kernel stabili (discussi di seguito) e dei kernel LTS che hanno la maggior parte degli utenti di Ubuntu.


Linux Kernels 4.14.11, 4.9.74, 4.4.109, 3.16.52 e 3.2.97 Patch Meltdown Flaw

Da questo articolo :

Gli utenti sono invitati ad aggiornare immediatamente i loro sistemi

4 gennaio 2018 01:42 GMT · Di Marius Nestor

I manutentori del kernel Linux Greg Kroah-Hartman e Ben Hutchings hanno rilasciato nuove versioni della serie kernel Linux 4.14, 4.9, 4.4, 3.16, 3.18 e 3.12 LTS (supporto a lungo termine) che apparentemente correggono uno dei due principali difetti di sicurezza che colpiscono i più moderni processori.

I kernel Linux 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 e 3.2.97 sono ora disponibili per il download dal sito Web kernel.org e gli utenti sono invitati ad aggiornare le loro distribuzioni GNU / Linux a queste nuove versioni se eseguono immediatamente una di quelle serie del kernel. Perché aggiornare Perché apparentemente correggono una vulnerabilità critica chiamata Meltdown.

Come riportato in precedenza, Meltdown e Spectre sono due exploit che colpiscono quasi tutti i dispositivi alimentati da moderni processori (CPU) rilasciati negli ultimi 25 anni. Sì, ciò significa quasi tutti i telefoni cellulari e i personal computer. La fusione può essere sfruttata da un utente malintenzionato senza privilegi per ottenere informazioni sensibili archiviate nella memoria del kernel.

Patch per vulnerabilità di Spectre ancora in lavorazione

Mentre Meltdown è una grave vulnerabilità che può esporre i tuoi dati segreti, incluse password e chiavi di crittografia, Spectre è anche peggio, e non è facile da risolvere. I ricercatori della sicurezza affermano che ci perseguiterà per un po 'di tempo. Lo spettro è noto per sfruttare la tecnica di esecuzione speculativa utilizzata dalle moderne CPU per ottimizzare le prestazioni.

Fino a quando non viene corretto anche il bug Spectre, si consiglia vivamente di aggiornare almeno le distribuzioni GNU / Linux a una delle versioni del kernel Linux appena rilasciate. Quindi cerca nei repository software della tua distro preferita il nuovo aggiornamento del kernel e installalo il prima possibile. Non aspettare che sia troppo tardi, fallo ora!


Ho usato il kernel 4.14.10 per una settimana, quindi il download e l'avvio di Ubuntu Mainline Kernel versione 4.14.11 non è stato un grosso problema per me.

Gli utenti di Ubuntu 16.04 potrebbero essere più a loro agio con le versioni del kernel 4.4.109 o 4.9.74 rilasciate contemporaneamente alla 4.14.11.

Se i tuoi aggiornamenti regolari non installano la versione del kernel che desideri, puoi farlo manualmente seguendo questa domanda Chiedi a Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879.920 # 879.920


4.14.12 - Che differenza fa un giorno

Meno di 24 ore dopo la mia risposta iniziale è stata rilasciata una patch per correggere la versione del kernel 4.14.11 che potrebbero essere precipitate fuori. L'aggiornamento alla 4.14.12 è consigliato a tutti gli utenti della 4.14.11. Greg-KH dice :

Sto annunciando il rilascio del kernel 4.14.12.

Tutti gli utenti della serie 4.14 del kernel devono eseguire l'aggiornamento.

Ci sono alcuni problemi minori ancora noti con questa versione che le persone hanno incontrato. Spero che saranno risolti questo fine settimana, poiché le patch non sono atterrate sull'albero di Linus.

Per ora, come sempre, prova il tuo ambiente.

Guardando questo aggiornamento non sono state cambiate molte righe di codice sorgente.


1
La soluzione esiste per Meltdown ora, disponibile tramite apt-get dist-upgrade.
luchonacho,

1
Sul mio telefono ora, ma l'aggiornamento su LTS provoca il panico del kernel il 10/01/2018. Vedi Chiedi a Ubuntu.
WinEunuuchs2Unix

1
Fortunatamente l'ho aggiornato con 109 (108 dà il panico al kernel). Quindi non ha avuto quel problema. Funziona bene
luchonacho,

1
@ WinEunuuchs2Unix ci sono aggiornamenti qui USN-3531-2: regressione Intel Microcode
GAD3R

1
@ GAD3R Grazie mille per il link. Mi aiuta a pubblicare una risposta in Ask Ubuntu che potrebbe aiutare molte persone: askubuntu.com/questions/998471/…
WinEunuuchs2Unix

6

Questo difetto può essere sfruttato da remoto visitando un sito Web JavaScript.

Infatti. Pertanto, un'attenuazione sensata è disabilitare JavaScript nei browser Web o utilizzare browser Web che non supportano JavaScript.

La maggior parte dei browser che supportano JavaScript ha un'impostazione per disabilitarlo. In alternativa, se desideri mantenere una lista bianca di siti o domini per i quali consentire JavaScript, ci sono vari componenti aggiuntivi che possono aiutarti, come uBlock Origin e NoScript .

NB Va da sé che disabilitare / limitare JavaScript non dovrebbe essere la tua unica mitigazione. Dovresti inoltre rivedere (e probabilmente applicare) eventuali correzioni del kernel rilevanti e altri aggiornamenti di sicurezza dopo che sono stati scritti, testati e pubblicati. Sulle distribuzioni derivate da Debian, utilizzare i comandi come sudo apt update , sudo apt list-upgradablee sudo apt upgrade.

Aggiornamento: non crederci sulla parola. Alan Cox dice più o meno la stessa cosa:

Ciò di cui hai bisogno di preoccuparti dei big time è javascript perché l'exploit può essere usato in remoto da javascript su pagine Web per rubare cose dalla memoria del tuo sistema. ... considera cose come Adblocker ed estensioni come noscript che possono fermare molta spazzatura in primo luogo. Fallo al più presto. Quando vengono visualizzati gli aggiornamenti del sistema operativo, applicarli. ( Fonte )


5
Mi scusi, anche se questo aiuta contro l'attac, senza JS, non avresti potuto lasciare la risposta qui. Questo consiglio è simile a "smetti di usare Internet" (nel 2018).
Moritz il

4
@MoritzBoth, per fortuna, molti siti funzionano bene senza JS. Purtroppo, StackExchange richiede JS per la pubblicazione, come fai notare. Questa è una (grave!) Carenza in SE :(
sampablokuper

3
Per FireFox un componente aggiuntivo come NoScript potrebbe aiutare a ridurre l'uso di JavaScript su siti dubbi - anche se le recenti modifiche apportate da FF Quantum (V57) hanno lanciato una pietra molto grande in tutto il pool di addon FF ...
SlySven

2
Dall'uscita di Quantum sono passato a Pale Moon, proprio per questo motivo. Funziona davvero bene per me, compresi NoScript e Cookie Masters (una volta Cookie Monster).
Murphy,

2
@MoritzBoth Non credo davvero che disabilitare JS equivale a "smettere di usare il web", tanto meno "smettere di usare internet". Tuttavia, questo è un ottimo momento per aumentare la consapevolezza sui problemi che derivano dalla dipendenza universale da JS da alcuni fornitori di contenuti web.
Tobia Tesan,

5

Il fatto che questo sia sfruttabile usando JavaScript non è il punto principale e non dovrebbe essere la preoccupazione principale (anche se è importante perché in questo modo il codice remoto può essere facilmente eseguito sul tuo sistema, ma questo non è l'unico in questo modo).

Il tuo focus non dovrebbe essere su Javascript e / o sul tuo browser. Idealmente, la tua CPU dovrebbe essere patchata. Sfortunatamente, per la maggior parte dell'attuale ondata di bug ciò non sembra essere possibile. Debian, insieme, tutte le altre parti che forniscono il sistema operativo, quindi, si limitano a raccomandare una CPU non difettosa: costringono il sistema a risolvere il bug nella CPU. Quelle patch non risolvono i problemi. Invece, il sistema operativo li nasconde il meglio che può da qualsiasi programma che un utente esegue sulla macchina (e quindi anche dal tuo browser).

Questo nascondiglio è un lavoro di calcolo extra e quindi le prestazioni complessive del sistema saranno inferiori rispetto a quelle esterne. Quanto in basso dipende probabilmente molto da cosa fanno esattamente quei programmi.

Con questo in mente alla tua domanda: cosa puoi fare per proteggere il tuo sistema Debian è installare aggiornamenti di sicurezza. Confido che Debian farà tutto il possibile alla luce di questi bug per eseguire Debian nel modo più sicuro possibile nonostante i difetti intrinseci della CPU.

Tutti i tipi di grandi aziende stanno già lavorando a questo problema, così come numerosi guru hardware e Linux. Non voglio assolutamente trattenerti dal provare qualcosa tu stesso o dal cercare di aiutare lo sforzo generale. Tuttavia, se la tua sicurezza e una soluzione tempestiva sono tutto ciò a cui sei interessato, molto probabilmente troveranno una soluzione migliore in tempi più brevi di quanto faresti tu, iniziando ora a esaminare tu stesso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.