Falle di sicurezza su qualsiasi processore: guida base a Meltdown e Spectre

Tutti i principali sistemi operativi Windows, Linux e macOS hanno recentemente imposto degli aggiornamenti di sicurezza relativi ad una patch sul processore: il rischio era legato all’uso improprio, da parte di software malevoli o virus, delle aree adibite alla memoria virtuale che potevano essere utilizzate in modo illecito per fare danni sul dispositivo.

Il problema è stato in parte sottovalutato ma poi è uscito fuori nella sua interezza: questo perchè riguarda una falla potenzialmente non riparabile su qualsiasi processore, come confermato da diverse analisi successive. Entrambe le vulnerabilità in esame, nomi in codice Meltdown e Spectre, si basano su un aspetto comune:

  • Tecnicamente Meltdown sfrutta le caratteristiche di qualsiasi processore ARM, Intel o AMD in termini di accesso alla RAM, dato che il controllo sulla validità della richiesta (che potrebbe provenire da un programma lecito o da un virus) viene effettuato in un secondo momento dall’esecuzione. Questo è un aspetto chiave che molti malware poi finiscono per sfruttare a proprio vantaggio.
  • Spectre, invece, si basa su un ampio range di istruzioni eseguibili su processori AMD e ARM (e qualche modello Intel), e può essere sfruttato per rubare dati a livello kernel sui programmi dell’utente, ad esempio quelli relativi ad informazioni riservate su carte di credito per acquisti online, anagrafiche personali e password.

Nessuna delle due falle presenta una soluzione universale che possa fermarle, purtroppo: motivo per cui molti malware di preparano a farne uso indiscriminato. In particolare non sono note, ad oggi, patch correttive che possano difendere la CPU dal furto potenziare dei dati che vi transitano, proprio per motivi architetturali ed ingegneristici. In sostanza questo avviene per via del check delle condizioni sul processore: se ad esempio un’istruzione è vincolata al soddisfacimento di una condizione, il processore potrebbe assumere che sia soddisfatta a prescindere, ed eseguire la stessa per motivi di efficenza. Se poi quella condizione non si rivelasse soddisfatta, ovviamente, la CPU potrebbe annullare l’esecuzione del comando. Questo pero’ non è sufficente per impedire il leak o furto di informazioni usate da quel processore, ad esempio nel comunicare con la RAM -visto che nel frattempo i dati potrebbero comunque essere stati rubati ugualmente. Un recente paper a cura di ricercatori informatici di Google conferma questo problema, che ha implicazioni importanti in termini di linguaggi di programmazione e rimane una sfida entusiasmante per la ricerca di un’effettiva soluzione, nei prossimi anni.

0 voti