Kaj je ranljivost Heartbleed?

Ena najbolj znanih ranljivosti iz sredine leta 2010 se je imenovala "Heartbleed". Heartbleed je bil še posebej resen, ker je programska oprema vplivala na »OpenSSL«, glavno kriptografsko knjižnico za povezave HTTPS, ki se zelo pogosto uporabljajo. Da bi bile stvari še hujše, je bila ranljivost v OpenSSL prisotna že več kot dve leti pred tem je bil odkrit, objavljen in popravljen, kar je pomenilo, da je veliko ljudi uporabljalo ranljivo različica.

Heartbleed je bila ranljivost zaradi puščanja podatkov v razširitvi srčnega utripa, ki je ob izkoriščanju uhajala podatke iz RAM-a iz strežnika v odjemalca. Razširitev srčnega utripa se uporablja za vzdrževanje povezave med spletnim strežnikom in odjemalcem brez običajne zahteve strani.

V primeru OpenSSL odjemalec pošlje sporočilo strežniku in obvesti strežnik, kako dolgo je sporočilo, do 64KB. Strežnik naj bi nato odzval isto sporočilo nazaj. Bistveno pa je, da strežnik dejansko ni preveril, ali je sporočilo tako dolgo, kot je odjemalec trdil, da je. To je pomenilo, da je odjemalec lahko poslal sporočilo velikosti 10 KB, trdil, da je bilo 64 KB, in dobil 64 KB odgovor, pri čemer je dodatnih 54 KB sestavljenih iz naslednjih 54 KB RAM-a, ne glede na to, kateri podatki so bili tam shranjeni. Ta proces dobro vizualizira

XKCD strip #1354.

Slika z dovoljenjem xkcd.com.

Z veliko majhnimi zahtevami za srčni utrip in trditvijo, da so velike, bi lahko napadalec ustvaril sliko večine RAM-a strežnika, tako da bi združil odgovore. Podatki, ki so shranjeni v RAM-u, ki bi lahko uhajali, vključujejo šifrirne ključe, potrdila HTTPS, pa tudi nešifrirane podatke POST, kot so uporabniška imena in gesla.

Opomba: manj znano je, vendar sta protokol srčnega utripa in izkoriščanje delovala tudi v drugi smeri. Zlonamerni strežnik bi lahko bil konfiguriran za branje do 64 KB uporabniškega pomnilnika na zahtevo srčnega utripa.

Težavo je odkrilo več varnostnih raziskovalcev neodvisno 1. aprila 2014 in jo je zasebno razkrilo OpenSSL, da je bilo mogoče ustvariti popravek. Napaka je bila objavljena, ko je bil popravek izdan 7. aprila 2014. Najboljša rešitev za rešitev težave je bila uporaba popravka, vendar je bilo mogoče težavo odpraviti tudi z onemogočanjem razširitve srčnega utripa, če takojšnje popravek ni bilo možno.

Na žalost, kljub temu, da je izkoriščanje javno in splošno dobro znano, se veliko spletnih mest še vedno ni posodobilo takoj, ranljivost pa je bila občasno najdena tudi leta pozneje. To je privedlo do številnih primerov uporabe izkoriščanja za dostop do računov ali uhajanja podatkov.