1. A breve aggiorneremo la piattaforma di Reboot per risolvere alcuni problemi con i plug-in, quindi chiediamo ancora un po' di pazienza, Lo staff di Reboot

News - Nuove falle nelle CPU: Meltdown e Spectre

Discussione in 'Sicurezza informatica' iniziata da iostream, 8 Gen 2018.

  1. iostream

    iostream Phoenix Wright

    Iscritto:
    13 Ago 2016
    Messaggi:
    4.900
    Like ricevuti:
    1.625
    [​IMG]

    Da qualche giorno si sente di parlare molto di queste due falle, ma cerchiamo di capire: cosa sono? A cosa servono? Come agiscono? Come è possibile "difendersi"?

    A cosa potrebbero servire?

    Queste due falle potrebbero essere utilizzate per dumpare il contenuto della memoria.
    La differenza tra i due è che Meltdown "rompe" (o come definito dagli scopritori, scioglie [melts]) le protezioni riguardanti l'isolamento tra applicazioni e kernel, mentre Spectre rompe l'isolamento tra le varie applicazioni.

    In pratica Meltdown accede ad indirizzi non accessibili da un normale programma, e Spectre legge dati da altre applicazioni (in realtà non sarebbe possibile perché la memoria virtuale non permette questo, vedremo noi dopo come è stata "superata" questa limitazione)

    Qual'è la loro causa e quali processori ne sono afflitti?

    Il processore stesso è la causa delle due, la prima falla, Meltdown, affligge solo i processori Intel e ARM (quelli AMD hanno una microarchitettura differente perciò ne sono immuni) mentre la seconda affligge praticamente quasi tutti i sistemi (testati solo Intel, AMD e ARM).

    Entrambe le falle si basano su "bug" nell'esecuzione speculativa, che è una funzione del processore, adottata da circa gli anni 90, che cerca di prevedere le istruzioni richieste da un programma, preparandosi il risultato. Se non serve questo risultato viene "scartato", questa funzione permette di aumentare la velocità d'esecuzione del programma, e ottimizzare questo stesso anche a livello di esecuzione.

    Ora parliamo del loro modo di agire, Meltdown è molto più "semplice" di Spectre.
    Infatti Meltdown cerca di ottenere il contenuto dell'indirizzo di memoria, ma il processore lo nega (anche se, grazie all'esecuzione speculativa, prepara già il contenuto in cache). Poi esegue un istruzione transitoria che permette di selezionare la linea di cache (ovvero parte della velocissima memoria integrata nel processore), che viene cancellata e ricaricata. Così basta mettere il valore nel registro et voilà! Abbiamo ottenuto il valore di un byte non accessibile.

    Codice:
    ; Questo è il core di un programma sfruttante meltdown
    ; rcx = L'indirizzo del kernel
    ; rbx = L'indice nell'array
    retry:
    mov al, byte [rcx]        ; Cerca di ottenere il kernel (dà eccezione)
    shl rax, 0xc            ; Istruzione transitoria di cui parlavamo (rax << 0xc)
    jz retry
    mov rbx, qword [rbx + rax]
    Passiamo al serio di tutto ciò, Spectre. Qua semplificherò molto la spiegazione, per renderla adatta a tutti. Spectre è un exploit molto complicato, che cerca di manipolare lo stato del processore ed accedere a dati inacessibili in condizioni normali. Tutto ciò viene fatto attraverso del codice, personalizzato "ad hoc" per il programma da colpire, in cui il timing e il codice sono fatti in modo che l'esecuzione speculativa porti il processore a pensare che i dati "intoccabili" di cui parlavamo prima (inacessibili li abbiamo definiti) vengano messi in cache e vengano sfruttati dal programma malevolo.
    Se non ci avete capito nulla, anche se a me la spiegazione sembra molto ma molto semplice (quella sul whitepaper di Spectre è molto più complessa di questa), sappiate che questo programma che andrà a leggere di dati di un altro è fatto in modo che il processore sia nelle condizioni che l'esecuzione speculativa metta il valore "proibito" in cache.

    Codice:
    if (x < array1_size) y = array2[array1[x] * 256];
    Codice di esempio di Spectre
    In questo codice il processore, o meglio la sua speculative execution, prevederà che l'if sia vero e otterrà il valore del byte 'k' in cache. Quindi basta solo un flush+reload della cache e si ha il byte 'k' di cui parlavamo prima, ovvero il nostro valore.

    Come è possibile difendersi?

    Attualmente l'unico modo per farlo è scaricare ed installare la patch dei vari sistemi operativi, anche se per ora fixa solo su Meltdown. La patch in questione è molto semplice, come l'exploit (mi vien da chiamarlo così per abitudine anche se è una semplice falla) stesso non fa altro che "isolare" le regioni protette, anche se questo porta ad un notevole calo di prestazioni che verrà risolto con un fix hardware nei prossimi processori.

    Mentre per Spectre la soluzione è ancora da scovare, non esistono patch software ed è molto difficile che ci siano. L'unica possibile soluzione è una nuova serie di processori..


    Inserisco le fonti perché in questo articolo ho semplificato molto, e se volete fare un approfondimento eccolo:
    Carta "ufficiale" di Meltdown
    Carta "ufficiale" di Spectre
    Sito ufficiale di Meltdown e Spectre, un alternativa è qui (è anche questo ufficiale)


    Se avete precisazioni o volete un articolo più tecnico e meno semplificato, scrivete consigli et similia per migliorare. Sono ben accetti! STAY TUNED!
     
    #1
    Ultima modifica: 10 Gen 2018
    A zoomx, lokiu.ox, Aseptik e 13 altri utenti piace questo elemento.
  2. numerone

    numerone Livello 14

    Iscritto:
    6 Giu 2015
    Messaggi:
    544
    Like ricevuti:
    190
    Windows 10 già ha la patch per meltdown, è il nuovo kernel che va installato tramite windows update.

    Debian ha integrato nel kernel 4.0.9-5 una propria patch, mentre si aspetta quella ufficiale di Intel.
     
    #2
    A Filippo Bellei piace questo elemento.
  3. iostream

    iostream Phoenix Wright

    Iscritto:
    13 Ago 2016
    Messaggi:
    4.900
    Like ricevuti:
    1.625
    Nella news è già scritto "Installare la patch per il proprio os" (abbrevio un po' ma quello è il senso).

    Windows 10 ha il kernel, per Windows 8 e 7 l'update è uscito giovedì
    Linux è già aggiornato
    BSD pure
    Apple da High Sierra 10.13.2
     
    #3
    A Filippo Bellei piace questo elemento.
  4. AlessioM88

    AlessioM88 Livello 17

    Iscritto:
    17 Gen 2016
    Messaggi:
    747
    Like ricevuti:
    100
    L'utilità di questi 2 "exploit" ? :smile:
     
    #4
  5. numerone

    numerone Livello 14

    Iscritto:
    6 Giu 2015
    Messaggi:
    544
    Like ricevuti:
    190
    Attualmente qualsiasi "cosa" monti un processore di nuova generazione (al massimo di 20 anni fa) rischia furto di dati, cancellazione di files dall'hard disk e chi più ne ha più ne metta.
     
    #5
    A Filippo Bellei piace questo elemento.
  6. lionx

    lionx Livello 7

    Iscritto:
    28 Dic 2015
    Messaggi:
    173
    Like ricevuti:
    50
    Non si potrebbe usare questa falla per modificare la switch, ps4 e compagnia bella? O sogno troppo?
     
    #6
    A Filippo Bellei piace questo elemento.
  7. iostream

    iostream Phoenix Wright

    Iscritto:
    13 Ago 2016
    Messaggi:
    4.900
    Like ricevuti:
    1.625
    Dumpare la memoria

    Solo la prima

    Fa solo leggere la memoria, non scrive nulla
     
    #7
    A Filippo Bellei e lionx piace questo messaggio.
  8. lokiu.ox

    lokiu.ox Livello 10

    Iscritto:
    14 Feb 2015
    Messaggi:
    299
    Like ricevuti:
    132
    Ottimo articolo!
    Comunque ho trovato alcune cose "strane" nei due pezzi di codice, nel primo nel commento c'è scritto "rbx = L'indice nell'array", ma poi rbx non viene mai usato, compare solo rax nel codice; nel secondo invece la variabile 'k' non compare da nessuna parte ma subito sotto si parla del byte 'k'. Ho inteso io male qualcosa o sono effettivamente errori?
     
    #8
  9. lionx

    lionx Livello 7

    Iscritto:
    28 Dic 2015
    Messaggi:
    173
    Like ricevuti:
    50
    Ah ok siccome avevo letto il post di numerone speravo in qualcosa di diverso =) sei comunque stato chiarissimo grazie =)
     
    #9
    A iostream piace questo elemento.
  10. jtagger73

    jtagger73 Livello 9

    Iscritto:
    18 Apr 2015
    Messaggi:
    220
    Like ricevuti:
    112
    scioglie [melts]

    io direi meglio :"squaglia" o rimanendo ad un italiano meno contaminanto, "fonde".
     
    #10
    A iostream piace questo elemento.
  11. alsacchi

    alsacchi Livello 7

    Iscritto:
    25 Gen 2017
    Messaggi:
    171
    Like ricevuti:
    83
    Spectre da quello che so non è così dannoso, è difficile da utilizzare e massimo puoi disattivare l' ASLR.
     
    #11
  12. iostream

    iostream Phoenix Wright

    Iscritto:
    13 Ago 2016
    Messaggi:
    4.900
    Like ricevuti:
    1.625
    Fa gli stessi effetti, ovvero legge i dati in RAM senza il permesso di Gesù kernel

    Per rbx è un errore di bbcode, ho nascosto l'ultima parte per sbaglio.
    Per k si intende il byte risultante, che è quello in cache (che si ottiene con flush+reload). K non è visibile nel codice, se leggi bene. Devo specificare meglio?

    Appena torno a casa sistemo
     
    #12
  13. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    900
    Like ricevuti:
    345
    #13
    A Filippo Bellei e iostream piace questo messaggio.
  14. lokiu.ox

    lokiu.ox Livello 10

    Iscritto:
    14 Feb 2015
    Messaggi:
    299
    Like ricevuti:
    132
    Ah perfetto, avevo inteso fosse uno specifico byte chiamato 'k' da qualche altra parte e non un ipotetico byte 'k' qualsiasi (che poi in realtà è scelto appositamente, dico "qualsiasi" nel senso che non è specificato altrove nel testo); sinceramente non so se si "intende male" o se sono stato solo io a fraintendere, quindi non saprei dirti se sia necessario modificare il testo o meno, scrivi come ritieni sia più giusto. :peace:
     
    #14
  15. zoomx

    zoomx Livello 19

    Iscritto:
    12 Set 2015
    Messaggi:
    900
    Like ricevuti:
    345
    Su HackaDay si specula sull'impatto delle correzioni
    https://hackaday.com/2018/01/09/getting-a-handle-on-meltdown-update-impact-stay-tuned-for-spectre/
    Sembrerebbe che gli Antivirus, che già hanno problemi loro di rallentamento, saranno ulteriormente rallentati.
    Poi fra i commenti c'è un semplice esempio di misura su Ubuntu dove sembra che le chiamate al kernel si allunghino di 3 volte.

    Il bello è che nei vari siti di tecnologia campeggino le presentazioni di nuovi PC, nuovi portatili e nuovi telefoni quando a questo punto il consiglio sarebbe di non comnprare nulla e aspettare che escano i processori nuovi.
     
    #15
    A Filippo Bellei e iostream piace questo messaggio.
Sto caricando...

Condividi questa Pagina