Czym jest podatność na Heartbleed?

Jedna z najbardziej znanych luk w zabezpieczeniach połowy 2010 roku nosiła nazwę „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 wcześniej został odkryty, opublikowany i załatany, co oznaczało, że wiele osób korzystało z podatnych na ataki wersja.

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 powtórzyć 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 jest to 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. Proces ten jest dobrze zobrazowany przez

Komiks XKCD #1354.

Zdjęcie dzięki uprzejmości xkcd.com.

Wysyłając wiele małych żądań bicia serca i twierdząc, że były to duże, atakujący mógł 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 łatka została wydana 7 kwietnia 2014 roku. Najlepszym rozwiązaniem problemu było zastosowanie poprawki, ale możliwe było również rozwiązanie problemu poprzez wyłączenie rozszerzenia pulsu, jeśli natychmiastowa poprawka nie była możliwa.

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.