Heartbleed

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Logo Heartbleed

Heartbleed - błąd bezpieczeństwa w popularnej bibliotece kryptograficznej OpenSSL, zaliczany do grupy błędów implementacyjnych, pozwalający na odczyt przez atakującego danych, chronionych przez szyfrowanie SSL i TLS.

Luka ta pozwala na nieautoryzowany odczyt pamięci systemów zabezpieczonych podatnymi wersjami biblioteki. Wyciek danych może nastąpić ze strony serwera do klienta i vice versa. Narażone są w ten sposób m.in. prywatne klucze kryptograficzne. Klucze takie niezbędne są do utworzenia szyfrowanego połączenia, a poznanie ich umożliwia rozszyfrowanie całej komunikacji[1]. Narażone także są dane dostępowe użytkowników oraz inne dane znajdujące się po stronie serwera. Atakujący ma możliwość podsłuchiwania komunikacji, podszywania się pod usługi i użytkowników oraz kradzieży danych[1].

Nazewnictwo[edytuj | edytuj kod]

Błąd pojawił się w rozszerzeniu Heartbeat (pol. bicie serca) protokołu TLS/DTLS, stąd też jego nazwa Heartbleed (pol. krwawienie z serca). Nadanie luce wyróżniającej nazwy, logo oraz utworzenie dedykowanej strony WWW znacznie przyśpieszyło proces jej naprawy oraz uczyniło ją rozpoznawalną.

Luka została zarejestrowana w systemie CVE jako CVE-2014-0160 i jest to też oficjalna nazwa błędu.[2]

Historia[edytuj | edytuj kod]

Rozszerzenie Heartbeat dla protokołów TLS (Transport Layer Security) i Datagram Transport Layer Security (DTLS) zaproponowano jako standard w lutym 2012 w dokumencie RFC 6520 ↓. Zapewnia ono sposób testowania i podtrzymywania bezpiecznych łączy komunikacyjnych bez konieczności renegocjowania połączenia za każdym razem. W 2011 jeden z autorów RFC, Robin Seggelmann, wówczas doktorant w Fachhochschule Münster (Uniwersytet Nauk Stosowanych w Münsterze), zaimplementował rozszerzenie Heartbeat dla OpenSSL. Po złożeniu przez Seggelmanna wniosku o dodanie wyniku jego pracy do OpenSSL, jego zmiana została sprawdzona przez Stephena N. Hensona, jednego z czterech głównych programistów OpenSSL. Henson nie zauważył błędu w implementacji Seggelmanna i wprowadził błędny kod do repozytorium kodu źródłowego OpenSSL 31 grudnia 2011. Wada rozprzestrzeniła się wraz z wydaniem wersji 1.0.1 OpenSSL 14 marca 2012. Obsługa pulsu była domyślnie włączona, otwierając zagrożenie w wersjach dotkniętych zmianą.

Eksploatacja[edytuj | edytuj kod]

Kanadyjski urząd skarbowy zgłosił kradzież numerów ubezpieczenia społecznego należących do 900 podatników i poinformował, że dostęp do nich był możliwy dzięki wykorzystaniu błędu w okresie 6 godzin 8 kwietnia 2014 r. Po odkryciu ataku agencja zamknęła swoją stronę internetową i przedłużyła termin złożenia zeznania podatnika od 30 kwietnia do 5 maja. Agencja stwierdziła, że ​​świadczyłaby usługi ochrony kredytowej bez ponoszenia kosztów przez nikogo dotkniętego. 16 kwietnia RCMP ogłosiła, że ​​oskarżyła studenta informatyki o kradzież z powodu nieuprawnionego użycia komputera w stosunku do danych.

Brytyjska witryna dla rodziców Mumsnet przejęła kilka kont użytkowników, a jej prezes został podrobiony. Strona opublikowała później wyjaśnienie incydentu mówiącego, że było to spowodowane Heartbleed i personel techniczny załatał to szybko.

Badacze wykorzystujący szkodliwe oprogramowanie wykorzystali także Heartbleed na własną korzyść, aby uzyskać dostęp do tajnych forów używanych przez cyberprzestępców. Przeprowadzono również badania, celowo przygotowując wrażliwe maszyny. Na przykład w dniu 12 kwietnia 2014 r. Co najmniej dwóch niezależnych badaczy było w stanie wykraść prywatne klucze z eksperymentalnego serwera celowo skonfigurowanego w tym celu przez CloudFlare. Również 15 kwietnia 2014 r. J. Alex Halderman, profesor University of Michigan, poinformował, że jego serwer honeypot, (celowo narażony serwer zaprojektowany w celu przyciągnięcia ataków w celu ich zbadania) otrzymał liczne ataki pochodzące z Chin. Halderman doszedł do wniosku, że ponieważ był to dość mało znany serwer, ataki te były prawdopodobnie zamiarem ataków na duże obszary Internetu.

W sierpniu 2014 r. Upubliczniono, że luka Heartbleed umożliwiła hakerom ukradzenie kluczy bezpieczeństwa z Community Health Systems, drugiej co do wielkości sieci szpitali amerykańskich typu non-profit, naruszającej poufność 4,5 miliona zapisów pacjentów. Przełom nastąpił tydzień po opublikowaniu Heartbleed.

Postępowanie[edytuj | edytuj kod]

Rozszerzenie RFC 6520 ↓ Heartbeat testuje bezpieczne połączenia komunikacyjne TLS / DTLS, umożliwiając komputerowi na jednym końcu połączenia wysłanie komunikatu żądanego pulsu, składającego się z ładunku, zazwyczaj ciągu tekstowego, wraz z długością ładunku jako 16-bitową liczbę całkowitą. Komputer odbiorczy musi następnie wysłać dokładnie takie samo ładowanie z powrotem do nadawcy.

Zainfekowane wersje OpenSSL przydzielają bufor pamięci dla komunikatu, który ma zostać zwrócony w oparciu o pole długości w wiadomości żądającej, bez względu na faktyczny rozmiar ładunku komunikatu. Ze względu na to niepowodzenie w przeprowadzaniu prawidłowego sprawdzania ograniczeń, wiadomość powracająca składa się z ładunku, ewentualnie z ewentualnego innego zdarzenia znajdującego się w przydzielonym buforze pamięci.

Heartbleed jest więc wykorzystywany przez wysyłanie źle sformułowanego żądania bicia serca z małym polem danych i obszarem o dużej długości do strony narażonej na atak (zazwyczaj serwera) w celu wywołania reakcji ofiary, umożliwiając atakującym odczytanie do 64 kilobajtów pamięci ofiary, która była prawdopodobnie do wcześniejszego użycia przez OpenSSL. Jeżeli żądanie Heartbeat poprosi stronę o "odesłanie czteroliterowego słowa "bird"", w wyniku czego otrzyma odpowiedź "bird", "Heartbleed Request" (żądanie złośliwego rytmu serca) "odesłać 500-literę słowo "ptak" spowoduje, że ofiara zwróci "ptaka", a następnie 496 znaków, które ofiara miała w aktywnej pamięci. Atakujący w ten sposób mogą otrzymywać poufne dane, zagrażając poufności komunikacji ofiary. Chociaż atakujący ma pewną kontrolę nad rozmiarem bloku pamięci, nie ma kontroli nad swoją lokalizacją i dlatego nie może wybrać treści, które zostały ujawnione.

Bibliografia[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]