Una delle vulnerabilità più note della metà del 2010 si chiamava "Heartbleed". Heartbleed è stato particolarmente grave perché ha interessato il software “OpenSSL”, la principale libreria crittografica per le connessioni HTTPS, molto utilizzata. A peggiorare le cose, la vulnerabilità era presente in OpenSSL da più di due anni prima di essere scoperta, pubblicizzata e corretta, il che significava che molte persone utilizzavano una versione vulnerabile.
Heartbleed era una vulnerabilità di perdita di dati nell'estensione heartbeat che quando veniva sfruttata faceva trapelare dati dalla RAM dal server al client. L'estensione heartbeat viene utilizzata per mantenere una connessione tra il server Web e il client senza effettuare una normale richiesta di pagina.
Nel caso di OpenSSL, il client invia un messaggio al server e informa il server della durata del messaggio, fino a 64 KB. Il server dovrebbe quindi restituire lo stesso messaggio. Fondamentalmente, tuttavia, il server in realtà non ha verificato che il messaggio fosse lungo quanto affermato dal client. Ciò significava che un client poteva inviare un messaggio di 10 KB, affermare che era 64 KB e ottenere una risposta di 64 KB, con i 54 KB aggiuntivi costituiti dai successivi 54 KB di RAM, indipendentemente dai dati archiviati lì. Questo processo è ben visualizzato dal fumetto XKCD #1354 .
Immagine per gentile concessione di xkcd.com .
Effettuando molte piccole richieste di heartbeat e affermando che erano di grandi dimensioni, un utente malintenzionato potrebbe creare un'immagine della maggior parte della RAM del server mettendo insieme le risposte. I dati archiviati nella RAM che potrebbero essere trapelati includono chiavi di crittografia, certificati HTTPS e dati POST non crittografati come nomi utente e password.
Nota: è meno noto, ma il protocollo heartbeat e l'exploit hanno funzionato anche nella direzione opposta. Un server dannoso potrebbe essere stato configurato per leggere fino a 64 KB di memoria utente per richiesta di heartbeat.
Il problema è stato scoperto da più ricercatori di sicurezza in modo indipendente il primo aprile 2014 ed è stato divulgato privatamente a OpenSSL in modo da poter creare una patch. Il bug è stato pubblicizzato quando la patch è stata rilasciata il 7 aprile 2014. La soluzione migliore per risolvere il problema era applicare la patch, ma era anche possibile rimediare al problema disabilitando l'estensione del battito cardiaco se la patch immediata non opzione.
Sfortunatamente, nonostante l'exploit sia pubblico e generalmente ben noto, molti siti Web non si sono ancora aggiornati immediatamente, con la vulnerabilità che viene rilevata occasionalmente anche anni dopo. Ciò ha portato a una serie di casi in cui l'exploit è stato utilizzato per ottenere l'accesso agli account o per la perdita di dati.