lunedì 15 dicembre 2014

Le peggiori falle di sicurezza del 2014

L'anno 2014 ormai volge al termine, nel bene o nel male. Nel caso non lo sapeste quest'anno sono state scoperte alcune gravi vulenrabilità che hanno fatto correre ai ripari tutto il web, comprese le grandi aziende. Lasciate che ve ne parli in questo post, sperando che chi non ne fosse a conoscenza possa porvi rimedio e chiudere, oltre che l'anno in corso, anche le eventuali falle.







HEARTBLEED

Si tratta di un bug scoperto in Aprile nella libreria OpenSSL, che si occupa di cifrare e rendere sicura la comunicazione tra dispositivi sul web. Viene appunto usata per implementare il protocollo TLS.
Questo tipo di vulnerabilità consente ad un attaccante di rubare dati sensibili come password, account, numeri di carta di credito, ecc. da un qualunque sito o dispositivo che non abbia ancora ricevuto una patch.

Come funziona

Si tratta di un errore più implementativo che di programmazione vera e propria, infatti risiede nella concezione di come il metodo Heartbleed è stato concepito.
Heartbleed serve sostanzialmente a verificare, durante una comunicazione tra due entità, che dall'altra parte ci sia ancora qualcuno. Il nome deriva da Heartbeat (battito del cuore), da cui appunto l'analogia che l'entità con cui si sta dialogando sia ancora in vita, abbia ancora battito.

In parole povere il mittente, che vuole sapere se all'estremità della comunicazione c'è ancora qualcuno, invia un messaggio strutturato nel modo seguente: "CIAO", 4 lettere. Manda cioè una parola casuale seguita dal numero di lettere di cui è composta. Dall'altra parte, chi riceve il messaggio risponderà con esattamente 4 lettere, che saranno appunto CIAO. Ora, supponiamo però che il mittente invii un messaggio di questo tipo "GATTO", 500 lettere. L'entità dall'altra parte, risponderà con gatto, ma aggiungerà anche tutte le 495 lettere che mancano! Dove andrà a prendere le lettere mancanti? Dalla sua memoria. Ebbene, si da il caso che questa memoria possa contenere qualunque cosa e, nel caso di siti internet in cui vi sono registrati utenti, invierà una porzione di memoria contenente le credenziali degli utenti registrati! Nel caso non vi fosse chiaro magari quest'immagine potrà aiutarvi visivamente.
Capite quindi la gravità della cosa. Fintanto che il bug è rimasto sconosciuto milioni di account possono essere stati trafugati senza che nessuno se ne rendesse conto.
Cosa ancor più grave, ancora adesso ci possono essere siti o dispositivi non patchati che permettano ad un attaccante di sfruttare questa vulnerabilità.

Chi ha colpito e come risolvere

Il bug ha colpito praticamente tutto ciò che supporta il protocollo SSL, quindi un'enormità di dispositivi: smartphone, server web, tv, dispositivi ARM...
La prima cosa da fare è ipotizzare che uno dei vostri account sia stato trafugato. Quindi cambiare subito tutte le password e non riutilizzarle. Poi, purtroppo come dicevo non tutti hanno ancora ricevuto una patch. Vuoi anche perchè molti dispositivi non sono sempre connessi ad internet o disponibili per un aggiornamento. Quindi potete testare se un sito è ancora vulnerabile (anche il vostro stesso sito se ne avete uno) mettendo l'url qui.

SHELLSHOCK

Se vi siete allarmati con Heartbleed, prendetevi una sedia, perchè questo forse è peggio.
Si tratta di una vulnerabilità scoperta a Settembre che riguarda la shell Bash dei sistemi operativi Unix. Quindi appunto Unix, poi Linux e infine MacOSX (che si basa su Unix). Beh, per una volta Windows non c'entra nulla e posso stare tranquillo, direte voi possessori del SO di casa Microsoft. Non tanto mi sa! Perchè si da il caso che l'80%, se non il 90% dei server web siano basati su sistemi Unix/Linux ed è proprio su quest'ultimi che di solito si effettua un attacco di questo tipo.

Come funziona

Il bug permette di effettuare quello che in gergo viene definito un “code injection attack”. Cioè si fa eseguire alla shell del codice arbitrario che non era previsto.
Tutto si basa sul fatto che quando do un comando di questo tipo: "echo ciao; rm files" la shell interpreta il punto e virgola come un separatore di comandi e vede appunto echo e rm come due istruzioni separate da eseguire. Adesso, prendiamo in esame le variabili d'ambiente. Cosa sono? Si tratta di variabili che possiede ogni processo (nel nostro caso las hell bash) in esecuzione e possono essere modificate e aggiunte a piacere. Esse sono usate ad esempio per specificare le impostazioni di localizzazione, o per indicare ad un programma le directory ove reperire le proprie risorse. Al loro interno si possono anche specificare intere funzioni. Definendo quindi una variabile d'ambiente X in questo modo:

env X="() { :;} ; echo comando inaspettato"
 
Ecco che dopo il ; troviamo un comando arbitrario che viene eseguito dalla shell subito dopo aver eseguito la funzione contenuta nella variabile d'ambiente (la parte contenuta tra le graffe).
Capite ora la gravità del problema? Supponendo di sfruttare, per esempio, il protocollo http in questo modo:

http-header = Cookie:() { :; }; ping -c 3 209.126.230.74
 
Non solo avremo sfruttato il comune protoccollo http ma si andrà anche ad eseguire il comando ping in maniera arbitraria. Pensate ai possibili danni se usato ad esempio con SSH.


Come risolvere

Scaricate subito gli aggiornamenti più recenti per il vostro Sistema Operativo. Ad oggi, dovrebbe appunto essere disponibile una patch che risolve il problema.
Per verificare se siete vulnerabili, aprite la shell Bash ed eseguite il seguente comando:

env X = “() {:;}; echo Shellshock” / bin / sh-c “echo completato”

Nel caso vi stampasse "Shellshok", allora siete vulnerabili!

POODLE

Si tratta di una vulnerabilità scoperta a Settembre che  riguarda il protocollo SSLv3, ossia la versione 3.0 (vecchia di 15 anni) del Secure sockets layer (Ssl), utilizzato per cifrare il traffico tra un browser e un sito web oppure tra client e server di posta elettronica. Anche se la vulnerabilità non sembra pericolosa quanto Heartbleed e Shellshock, perché è rivolta al lato client e non a quello server, Poodle potrebbe consentire a un utente malintenzionato di decifrare i cookie che corrispondono a servizi come Twitter o Google, e quindi entrare negli account degli utenti senza bisogno di conoscere la password di accesso.
Tuttavia l'8 Dicembre è stata annunciata la vulnerabilità anche nel protocollo TLS 1.0 - 1.2.

 

Come funziona

Quando navighiamo, solitamente si contatta un server per richiedere le pagine internet che si vogliono visitare. Durante questo processo, client e server si devono accordare sul tipo di standard di sicurezza da utilizzare. Se il server non è aggiornato agli ultimi standard di sicurezza, molti browser decidono di retrocedere allo standard precedente, quello supportato dal server. Un attaccante può inserirsi durante questo processo di retrocessione nel momento chiave.
In particolare, una volta che le due entità decidono di comunicare attraverso SSL 3.0, l'attaccante può decifrare la comunicazione criptata usando un attacco già noto chiamato Beast.
L'attaccante avrà quindi accesso ai vostri cookie di sessione e accedere ai siti a cui vi siete loggati.

Come risolvere

Innanzitutto andate qui per testare se siete vulnerabili. Se lo siete, vedrete un barboncino che vi dirà "vulnerable". Andate quindi a disabilitare SSL v3 sul vostro browser predefinito. Su goggle trovate tantissime guide, è davvero banale.


Con questo concludo l'articolo. Siete preoccupati? Io un po' si. Queste falle sono in giro da parecchio tempo, chissà quanti le hanno sfruttate e ancore le sfrutteranno. Voi, prendete le dovute precauzioni, mi raccomando! E non dite che non ve l'avevo detto :)

Nessun commento:

Posta un commento