Ciężka podatność w OpenSSL w TLS Heartbeat Extension (CVE-2014-0160)

Jest ciężka podatność w implementacji OpenSSL w TLS/DTLS (warstwa transportowa protokołów bezpieczeństwa) heartbeat extension (RFC6520). Jest to poważna podatność, której został przydzielony identyfikator CVE-2014-0160.

Eksploatacja może doprowadzić do ujawnienia zawartości pamięci z serwera do klienta i od klienta do serwera. Atakujący może zdalnie pobrać poufne dane z pamięci, w tym tajne klucze stosowane do szyfrowania SSL i tokeny uwierzytelniania.

Po więcej informacji odnośnie ataku zobacz heartbleed.com.

Jaki ma to wpływ na Rubiego?

Ruby jest podatny kiedy został skompilowany statycznie z podatną wersją OpenSSL poprzez rozszerzenie w C OpenSSL dla standardowej biblioteki.

Wersje OpenSSL od 1.0.1 do 1.0.1f (włącznie) są podatne na ten atak. By zweryfikować jaka wersja biblioteki OpenSSL jest podłączona do Rubiego, użyj poniższego:

ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'

By zweryfikować wersję OpenSSL obecnie zainstalowaną z Rubim, użyj poniższego:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

Możesz zweryfikować czy twoje kliencie oprogramowanie lub działająca usługa są podatne używając skryptu embossa.

Rozwiązanie

By zaktualizować OpenSSL do ostatniej wersji 1.0.1g lub nowszej, powinieneś sprawdzić czy w bieżącym menedżerze pakietów systemu operacyjnego jest udostępniony aktualny pakiet OpenSSL. Możesz potrzebować skonsultować się z dystrybutorem twojego systemu operacyjnego by zweryfikować czy ich wersja OpenSSL jest załatana, nie zważając na dostępny numer wersji.

Jeśli aktualizacja nie wchodzi w grę, zbuduj załatany OpenSSL z opcją -DOPENSSL_NO_HEARTBEATS.

Ze zaktualizowanym OpenSSL, zalecana jest rekompilacja Rubiego by mieć pewność, że nie ma żadnych linków do podatnej wersji OpenSSL.

Oznacza to aktualizację narzędzi używanych do budowania Ruby takich jak RVM lub ruby-build. Jeśli budujesz Rubiego osobiście, użyj opcji --with-openssl-dir podczas kompilacji by wskazać katalog zaktualizowanego OpenSSL.

$ ./configure --with-openssl-dir=/path/to/openssl
$ make
$ make install

Po aktualizacji OpenSSL i Rubiego ważne jest by uruchomić ponownie wszystkie programy używające podatnej wersji.

Wiele dystrybucji systemów operacyjnych już dostarcza (lub będzie wkrótce dostarczać) załataną wersję i przebudowane pakiety dla bibliotek podatnych na ten atak. Ważne jest by monitorować poczynania dystrybutora systemu operacyjnego by mieć pewność pozostawania bezpiecznym.