L’MD5 (Message Digest algorithm 5) è un algoritmo crittografico di hashing che riceve in input una stringa di lunghezza arbitraria e ne produce in output un’altra a 128 bit (ovvero con lunghezza fissa di 32 valori esadecimali, indipendentemente dalla stringa di input) che può essere usata per calcolare la firma digitale dell’input. La codifica prevede che l’output restituito (detto “MD5 Checksum” o “MD5 Hash“) sia univoco (ovvero si ritiene che sia impossibile, o meglio, che sia altamente improbabile ottenere con due diverse stringhe in input una stessa firma digitale in output).
- Wikipedia. MD5 (consultato il 9 aprile 2009). -
Al 25° Chaos Communication Congress di Berlino, un gruppo internazionale di ricercatori, capitanato da Alexander Sotirov, ha identificato una vulnerabilità che interessa l’emissione di certificati digitali usati dai siti Web per instaurare connessioni di tipo SSL. Il PoC (Proof-of-Concept) ha portato alla generazione di un root certificate falso ma formalmente valido e di conseguenza accettato dalla maggior parte dei browser.
Il rischio che ne scaturisce è assai elevato, dal momento che tale certificato a sua volta potrebbe “validarne” altri da utilizzare in siti Web fraudolenti. Con questo stratagemma il browser si “fiderebbe” ciecamente del sito internet, poiché quest’ultimo utilizza un certificato digitale firmato con il root certificate di una Certificate Authority affidabile. Le conseguenze di quanto descritto potrebbe facilitare l’esecuzione di truffe o attacchi di phishing.
Nel PoC, Sotirov e soci, hanno dimostrato praticamente come creare un certificato fittizio che sia accettato da i browser più comuni. L’attacco sfrutta alcune debolezze presenti nella funzione di hashing dell’MD5 che permettono la costruzione di messaggi diversi aventi lo stesso hash. Questo fenomeno prende il nome di “collisione” e il PoC aveva lo scopo di capire quanto fosse fattibile creare un attacco che sfruttasse le collisioni nell’algoritmo MD5. Infatti, precedenti analisi condotte tra il 2004 e il 2007, hanno evidenziato il rischio collisioni solo a livello teorico, senza mai portare alla realizzazione di exploit sfruttabili nella realtà.
Il PoC mostra come il meccanismo di validazione dei certificati effettuato dai browser possa essere messo a repentaglio da persone in grado di manomettere informazioni inviate a siti sicuri. I siti appartenenti a banche, così come i siti di e-commerce, risultano particolarmente esposte a questo tipo di vulnerabilità a causa delle informazioni sensibili che trattano.
Quando viene instaurata una connessione sicura ad un sito Web tramite HTTPS, un certificato è inviato dal server al computer client. Tale certificato contiene una firma digitale usata dal computer per verificare l’identità del sito a cui si è connessi. I certificati sono a loro volta “firmati” da un’entita super-partes che fa da garante (Certificate Authority – CA). Ritenendo affidabile la CA, automaticamente si considerano “fidati” i certicati da essa firmati. Di default i browser includono una lista di CA note e attendibili (ad esempio Verisign). Quando il computer riceve un certificato dal server, il browser controlla quale CA ha emesso il certificato al fine di verificarne l’attendibilità. Se la CA è valida, automaticamente diviene valido il certificato.
Sfortunatamente, sono ancora molte le Certificate Authority che fanno uso dell’algoritmo MD5 per firmare digitalmente i propri certificati, rendendo la vulnerabilità scoperta dal team di Sotirov molto attuale e diffusa.
I ricercatori hanno creato un certificato CA che risulti affidabile ai browser e per farlo hanno utilizzato un cluster di 200 Playstation 3. Il rischio che si corre è quello di generare un certificato CA con cui ci firma un ulteriore certificato da utilizzare su un sito appositamente creato, e questo sito sarà ritenuto benigno perchè tutta la catena di certificazione è ritenuta valida.

Schema dell'attacco
Se il PoC fosse replicato da gente intenzionate ad attività fraudolente, potremmo avere un enorme numero di certificati falsi ritenuti validi dai browser. Se questo attacco fosse inoltre unito ad un sofisticato attacco DNS, il suo impatto sarebbe sicuramente amplificato; infatti il browser visualizzerebbe l’URL corretto della vostra banca online, vi comunicherebbe che state utilizzando una connessione protetta (HTTPS) e attesterebbe, inoltre, l’identità del sito. L’utente non avrebbe dunque nessun dubbio circa l’attendibilità del sito che sta visitando. Certo, va considerata la difficoltà implementativa di questo attacco, ma va comunque considerato che il rischio c’è ed è di enormi proporzioni. Va inoltre considerato che lentamente si sta passando da MD5 a SHA (meglio se versione 2 o 3) come algoritmo si hashing.
Il testo completa della ricerca effettuata dal team di Sotirov è disponibile nella sezione “Risorse Utili“.
Note Bibliografiche ¬
Alexander Sotirov. “Creating a rogue certificate“, Phreedom.org (consultato il 18 febbraio 2009) ![]()
Wikipedia. MD5 (consultato il 9 aprile 2009)
Corrado Giustozzi.”Caro lucchetto dorato addio?!”, Internet Magazine – Marzo 2009, pp. 24-25
Risorse Utili ¬
Steve Friedl’s Unixwiz.net.“An Illustrated Guide to Cryptographic Hashes“, 09-05-2005 (consultato il 18 febbraio 2009) ![]()
Wikipedia. MD5 (consultato il 9 aprile 2009)
Scott Merrill. “MD5 collision creates rogue Certificate Authority“, CrunchGear.com, 30-12-2008 (consultato il 18 febbraio 2009) ![]()
Alexander Sotirov, Marc Stevens et al. “MD5 considered harmful today – creating a rogue CA certificate“, win.tue.nl, 30-12-2008 (consultato il 18 febbraio 2009) ![]()
Peter Selinger. “MD5 Collision Demo“, .mscs.dal.ca/~selinger, 30-12-2008 (consultato il 17 gennaio 2009) ![]()