Pages

18 gru 2015

Hakowanie Linuxa poprzez... 28-krotne naciśnięcie klawisza Backspace [CVE-2015-8370]

Tak, dobrze przeczytaliście tytuł, to nie żart. Jedynym żartem w tytule jest słowo hakowanie, ponieważ błąd opisany w naszym artykule może z powodzeniem wykorzystać nawet dziecko. Odkryto nową podatność powiązaną z uwierzytelnianiem w GRUB, umożliwiającą uzyskanie dostępu do systemu Linux. W dniu 15.12.2015 r. para badaczy bezpieczeństwa z Uniwersytetu w Walencji: Ismael Ripoll i Hector Marco odkryła ten dziwny błąd w kilku dystrybucjach Linuxa i umożliwia on ominięcie uwierzytelniania podczas uruchamiania poprzez... 28-krotne naciśnięcie klawisza Backspace(!). Nie jest to sprawka jądra systemu ani samego systemu operacyjnego, ale programu rozruchowego GRUB, rozwijanego w ramach projektu GNU i który używany jest przez większą część systemów Linux do uruchamiania systemu operacyjnego. 

Źródłem luki [CVE-2015-8370] jest błąd niedopełnienia liczby całkowitej (integer underflow), wpływający na funkcje grub_password_get() i który został wprowadzony w GRUB już w wersji 1.98 z grudnia 2009 roku(!) - starsze systemy również mogą być podatne. 

Uruchomienie powłoki ratunkowej 28-krotnym naciśnięciem klawisza
Backspace i potwierdzenie czynności Enterem

(źródło: http://hmarco.org)
W pełni operacyjna powłoka ratunkowa
 (źródło: http://hmarco.org)
Jak sprawdzić czy nasza stacja z Linuxem jest podatna na ten błąd? Wystarczy, że podczas uruchamiania komputera, w programie GRUB w wierszu wprowadzania nazwy użytkownika wciśniemy 28 razy klawisz Backspace a następnie wciśniemy klawisz Enter co umożliwi... uruchomienie (trybu) powłoki ratunkowej GRUB (od wersji 1.98 do wersji 2.02). Powłoka ta (Grub rescue shell) umożliwia atakującemu m.in. nieautoryzowany dostęp do komputera, możliwość załadowania innego środowiska, dostęp do danych (jeśli dysk nie jest zaszyfrowany) oraz zainstalowanie złośliwego oprogramowania. Wciśnięcie mniejszej ilości klawisza Backspace i naciśnięcie klawisza Enter skutkuje restartem komputera:

Schemat przekierowania w funkcji grub_memset()
(źródło: http://hmarco.org)

Odkrywca udostępnił już patch usuwający ten błąd, który można pobrać stąd:

Aktualizacji GRUB 2.02 możemy dokonać poleceniami:
$ git clone git://git.savannah.gnu.org/grub.git grub.git
$ cd grub.git
$ wget http://hmarco.org/bugs/patches/0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch
$ git apply 0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch

Tymczasem większe dystrybucje Linuxa, w tym Ubuntu, Red Hat i Debian również udostępniły poprawki, aby rozwiązać ten problem. Jest to jeden z ciekawszych odkrytych błędów dotychczas. Można zadać sobie pytanie, czy błąd ten znalazł się w GRUB przez przypadek, czy może ktoś umieścił go... celowo ;)

Więcej informacji o tym błędzie znajdziecie tutaj:


Źródło:
http://hmarco.org/bugs/CVE-2015-8370-Grub2-authentication-bypass.html

5 komentarzy:

  1. Powiem tak, jak ma się fizyczny dostęp do komputera to można załadować cokolwiek z USB/DVD i ominąć zupełnie najbezpieczniejszy bootloader... Hasło na bios też wtedy można zresetować.

    OdpowiedzUsuń
  2. Podpisuję się pod komentarzem powyżej. "Hakowanie" poprzez posiadanie fizycznego dostępu do maszyny... przecież to śmieszne.
    W każdym najbardziej podstawowym szkoleniu na temat bezpieczeństwa komputerowego uczy się podstawowej zasady, którą należy przyjąć: jeśli ktoś ma fizyczny dostęp do komputera, to może zrobić wszystko. Oczywiście, są przypadki, kiedy ta zasada nie do końca się stosuje (np. szyfrowane dyski), ale generalnie należy ją przyjąć jako podstawowe założenie. Więc pisanie o podatności, która wymaga fizycznego dostępu do maszyny, jest mało poważne...

    OdpowiedzUsuń
  3. Ta podatność to bardziej ciekawostka, pokazująca nam, że "nie wszystko linux co się świeci" ;) Można sobie ponadto wyobrazić inną sytuację, np. logowanie do terminala, gdzie np. nie mamy fizycznego dostępu do maszyny ani do portów itd., ale dzięki tej podatności możemy łatwo i prosto ominąć autoryzację w GRUB.

    OdpowiedzUsuń
  4. nagłówek artykułu rodem z wir***j polski albo onetu

    OdpowiedzUsuń
  5. Moim zdaniem bardzo fajnie opisany problem. Pozdrawiam serdecznie.

    OdpowiedzUsuń