Jedna z najbardziej znanych luk w zabezpieczeniach połowy 2010 roku została nazwana „Heartbleed”. Heartbleed był szczególnie poważny, ponieważ dotyczył oprogramowania „OpenSSL”, głównej biblioteki kryptograficznej dla połączeń HTTPS, które są bardzo szeroko stosowane. Co gorsza, luka ta była obecna w OpenSSL przez ponad dwa lata, zanim została odkryta, opublikowana i załatana, co oznaczało, że wiele osób korzystało z tej wersji.
Heartbleed to luka w zabezpieczeniach umożliwiająca wyciek danych w rozszerzeniu heartbeat, która po wykorzystaniu powodowała wyciek danych z pamięci RAM z serwera do klienta. Rozszerzenie heartbeat służy do utrzymywania połączenia między serwerem WWW a klientem bez wysyłania zwykłego żądania strony.
W przypadku OpenSSL klient wysyła wiadomość do serwera i informuje serwer o długości wiadomości, maksymalnie 64 KB. Serwer powinien następnie odesłać tę samą wiadomość. Co jednak najważniejsze, serwer faktycznie nie sprawdził, czy wiadomość jest tak długa, jak twierdził klient. Oznaczało to, że klient mógł wysłać wiadomość o wielkości 10 KB, twierdząc, że ma 64 KB i otrzymać odpowiedź 64 KB, przy czym dodatkowe 54 KB składa się z kolejnych 54 KB pamięci RAM, bez względu na to, jakie dane były tam przechowywane. Ten proces dobrze obrazuje komiks XKCD #1354 .
Zdjęcie dzięki uprzejmości xkcd.com .
Wysyłając wiele małych żądań pulsu i twierdząc, że są to duże żądania, atakujący może zbudować obraz większości pamięci RAM serwera, łącząc odpowiedzi. Dane przechowywane w pamięci RAM, które mogą zostać ujawnione, obejmują klucze szyfrowania, certyfikaty HTTPS, a także niezaszyfrowane dane POST, takie jak nazwy użytkowników i hasła.
Uwaga: jest mniej znany, ale protokół bicia serca i exploit działał również w innym kierunku. Złośliwy serwer mógł zostać skonfigurowany do odczytu do 64 KB pamięci użytkownika na żądanie pulsu.
Problem został odkryty przez wielu badaczy bezpieczeństwa niezależnie od pierwszego kwietnia 2014 roku i został ujawniony prywatnie OpenSSL, aby można było stworzyć łatkę. Błąd został opublikowany, gdy poprawka została wydana 7 kwietnia 2014 r. Najlepszym rozwiązaniem problemu było zainstalowanie poprawki, ale można było również naprawić problem, wyłączając rozszerzenie pulsu, jeśli natychmiastowa poprawka nie była opcja.
Niestety, pomimo tego, że exploit był publiczny i ogólnie dobrze znany, wiele stron internetowych nadal nie aktualizowało się od razu, a luka w zabezpieczeniach wciąż jest od czasu do czasu wykrywana nawet wiele lat później. Doprowadziło to do wielu przypadków wykorzystania exploita do uzyskania dostępu do kont lub wycieku danych.