r   e   k   l   a   m   a
r   e   k   l   a   m   a

Piękny atak 0-day stawia pod znakiem zapytania bezpieczeństwo desktopowego Linuksa

Strona główna AktualnościBEZPIECZEŃSTWO

Wiele osób próbuje przedstawić Linuksa jako panaceum na bezpieczeństwo – zainstalujesz i już jest dobrze, niestraszne żadne znane z Windowsa zagrożenia. Czy aby na pewno? Odkryta ostatnio luka we frameworku mediów Gstreamer pokazuje, że typowy desktopowy system linuksowy też może być pełen luk, których po prostu nikt nie zauważył, mimo otwartości kodu.

Chris Evans, badacz który odkrył lukę, pokazał zarazem, jak ją w spektakularny sposób wyexploitować, i to w warunkach wydawałoby się skrajnie niesprzyjających. Jego atak działa na najnowszych dystrybucjach Linuksa, w tym Ubuntu 16.04 i Fedorze 24 (a także dopiero co wydanej Fedorze 25). Wykorzystana została podatność uszkodzenia stosu, tkwiąca w dekoderze formatu FLIC, znajdującym się z jakiegoś powodu w domyślnym pakiecie kodeków Gstreamera.

Po co komu FLIC? Większość użytkowników od dawna pewnie nie miała do czynienia z plikami w tym antycznym formacie animacji, stworzonym niegdyś przez Autodesk. A mimo tego, że dekoder jest fatalnie napisany i w praktyce całkowicie zbyteczny, znalazł się w zestawie „dobrych” kodeków Gstreamera, domyślnie instalowanych w niemal każdej dystrybucji Linuksa (Gstreamer ma jeszcze zestawy „zły” i „brzydki”, które zainstalować można z repozytoriów).

r   e   k   l   a   m   a

Nowoczesne systemy linuksowe zapewniają zabezpieczenia takie jak ASLR czy DEP, które powinny chronić przed takimi atakami – i oczywiście chronią. Napastnicy obchodzą je za pomocą przeróżnych sztuczek programistycznych, manipulując środowiskiem systemowym tak, by można było posunąć atak do przodu. Jak jednak manipulować systemem przez dekoder formatu animacji? Sytuacja wydaje się tragiczna. Jak napastnik wyexploituje przeglądarkę, to ma zwykle do dyspozycji silnik JavaScriptu. We Flashu mamy ActionScript. Przy ataku na kernel do dyspozycji jest program działający już w przestrzeni użytkownika. Wystarczy mieć jakiś turing-kompletny (zdolny do uruchamiania oprogramowania) system w oprogramowaniu.

Niesamowity przykład takiego ataku został zaprezentowany ostatnio przez Chrisa Evansa w odniesieniu do plików muzycznych NSF, z gier na stare Nintendo. Tam exploit przeprowadzany jest za pomocą kodu assemblerowego dla 8-bitowego procesora 6502 – i to wystarczy, by przejąć nowoczesny linuksowy desktop. No cóż, bardzo fajnie, ale co zrobić z takim prostym formatem animacji, w którym nie ma miejsca na żadne skryptowanie? Tutaj można jedynie wstrzelić w dekoder ciąg bajtów i liczyć, że uda się coś zrobić bez jakichkolwiek dalszych interakcji z systemem.

I najwyraźniej się udaje. Badacz pokazał, że można ręcznie zestawiając kod ataku bajt po bajcie, stworzyć zbiór danych, który całkowicie obezwładni systemowe zabezpieczenia. Jasne, nie jest to łatwe, ale zrobiona przez niego praca ma zarówno akademickie jak i praktyczne znaczenie dla bezpieczeństwa Linuksa, stanowiąc dowód, że nieskryptowe exploity są możliwe, nawet pomimo tych wszystkich zabezpieczeń. Napastnik wprowadzając do pętli dekodera odpowiednie dane może zarządzać operacjami na pamięci równie dobrze, jak robiłby to za pomocą np. JavaScriptu, modyfikując zmienne środowiskowe.

Przykładowy atak z ominięciem zabezpieczeń został wymierzony w odtwarzacz rhythmbox, domyślnie instalowany w Fedorze. Złośliwy plik .flac (popularny format muzyczny) otwierany jest poprzez xdg-open z terminala, ale równie dobrze mógłby być otworzony kliknięciem w link w przeglądarce. Analiza kodu dekodera pokazała, że nie ma tam żadnych ograniczeń co do rozmiarów danych pisanych do bufora. Hulaj dusza, piekła nie ma – zainteresowanych tym, co Evans robił krok po kroku (a właściwie ramka po ramce animacji), zapraszamy na jego bloga. Odtworzenie 20 ramek wystarczyło, by uruchomić za pomocą tego exploita kalkulator środowiska GNOME.

Przeprowadzenie takiego ataku jest jak widać trudne, ale nie niemożliwe. Co szczególnie istotne, wybór Fedory, a nie np. znacznie popularniejszego Ubuntu, był nieprzypadkowy – Fedora jest znacznie trudniejsza do wyexploitowania niż Ubuntu, w którym to systemie w większości binarek brakuje zabezpieczeń takich jak ASLR czy RELRO.

W świetle swoich odkryć Evans twierdzi, że to kolejny dowód na to, że istnieją subtelne sposoby na wyexploitowanie niemal każdej podatności. To jednak nie wszystko: musimy w ogóle zastanowić się nad stanem bezpieczeństwa Linuksa: czy cokolwiek proaktywnego się robi, by go wzmocnić, czy też deweloperzy Linuksa jedynie reagują na nowo odkryte luki?

Jak się zabezpieczyć?

Canonical już wydał łatki do Gstreamera w Ubuntu, niebawem poprawki powinny pojawić się w repozytoriach innych dystrybucji, zalecamy więc jak najszybszą aktualizację.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.