Mitigazione software per Spectre v2

4

Eseguo Debian come mio sistema operativo e Guix come gestore dei pacchetti. Ho anche eseguito (approssimativamente) l'ultimo kernel creato usando Guix. Secondo spettrometro-disgregatore-controllo , il mio kernel ha la mitigazione per v1, v2 e v3.

Tuttavia, l'ultimo GCC stabile (7.3) ha implementato tre nuove bandiere , ovvero -mindirect-branch= scelta , -mfunction-return= scelta e -mindirect-branch-register . È una buona idea ricostruire il mondo con tutti questi flag abilitati? Se sì, quale scelta dovrei scegliere? Ci sono quattro opzioni tra cui scegliere, keep e thunk-extern non sono chiaramente applicabili poiché il primo è un no-op e il successivo richiede un thunk fornito dall'utente. Qualcuno può spiegare la differenza tra thunk e thunk-inline ?

Infine, sembra che gold da Binutils abbia anche introdotto un nuovo flag -z retpolineplt . Dovrebbe essere abilitato anche?

    
posta Alex Vong 14.02.2018 - 19:13
fonte

1 risposta

4

Dovresti ricompilare il tuo software con questi flag abilitati? In generale, no.

La maggior parte dei software utilizzati dalla persona media non è seriamente minacciata da Spectre. È un attacco molto difficile da eseguire e richiede che l'autore dell'attacco sia già in grado di eseguire codice arbitrario sul tuo computer. Inoltre, il benchmarking di Phoronix mostra che ci può essere un sostanziale colpo di prestazioni (a volte fino al 40%), e quel successo spesso si presenta in cose come i videogiochi che sono sensibili alle prestazioni, ma non gestiscono informazioni segrete. Se ti senti paranoico, potresti prendere in considerazione la ricompilazione del kernel, del browser web e del gestore di password con questi flag, ma a parte questo, il guadagno di sicurezza non vale gli svantaggi.

Se, d'altra parte, stai eseguendo un servizio di hosting condiviso o stai eseguendo un sito di valore moderato (ad esempio e-commerce) su un servizio di hosting condiviso, dovresti prendere in considerazione la ricompilazione del software con Spectre mitigations abilitato. In questa situazione, il codice arbitrario di utenti sconosciuti è in esecuzione sul tuo computer in ogni momento. Inoltre, potresti gestire informazioni sufficientemente valide da giustificare il tempo necessario per eseguire un attacco Spectre.

La differenza tra "thunk", "thunk-external" e "thunk-inline" è fondamentalmente un compromesso tra prestazioni e dimensioni: "thunk" crea una sezione thunk per file di input, "thunk-inline" crea uno per ramo indiretto o funzione restituita, e "thunk-external" utilizza una sezione thunk per un intero programma. Thunk-inline è di solito il più veloce, ma se fa sì che il codice cresca abbastanza da sovraccaricare lo spazio disponibile della cache, può causare rallentamenti significativi.

    
risposta data 15.02.2018 - 00:27
fonte

Leggi altre domande sui tag