Chrome, Firefox i VP8: multimedia też mogą być złośliwe

Kilkanaście dni po odnalezieniu luki w obsłudze formatu WEBP, w bibliotekach graficznych VP8 odkryto kolejną dziurę (CVE-2023-5217). Z bibliotek tych korzystają przeglądarki internetowe, co czyni je podatnymi. Multimedia stanowią ostatnio zagrożenie.

Multimedia też mogą być złośliwe
Multimedia też mogą być złośliwe
Źródło zdjęć: © Pixabay | Lutz Dieckmann
Kamil J. Dudek

30.09.2023 07:24

"Bezpieczeństwo" plików graficznych wynika (teoretycznie) z tego, że nie zawierają one sekcji wykonywalnej. Zatem podczas wyświetlania ich "nie ma okazji" do załadowania i wykonania kodu. Sprawa ma się inaczej np. z dokumentami Office mogącymi zawierać makra oraz z plikami czcionek, które mogą być przechowywane w kontenerze PE, zdecydowanie wykonywalnym (FON, nie TTF).

Bez kodu

Wyjątki od tej prawidłowości są rzadkie i dość spektakularne: najważniejszym przykładem będzie tu MS06-001, czyli podatność w obsłudze WMF. Grafiki WMF mogły być zaopatrzone w sekcję dyrektyw dla drukarek, co de facto pozwalało umieszczać tam dowolny kod. Po błyskawicznym zalewie trojanów Microsoft, z pewnym opóźnieniem, opracował poprawkę.

Problemy z grafiką trwają od dziesięcioleci. Innym sławnym przykładem grafiki z wirusami były pliki kursorów. W ich przypadku chodziło o pliki bez grafiki, za to z kodem. Mechanizm GDI ładował pliki kursorów bezkrytycznie, bez walidacji - a więc także wtedy gdy w ogóle nie były kursorami. Wada projektowa obsługi kursorów była tak poważna, że Microsoft nie był w stanie jej wszędzie naprawić: poprawką dla systemu Windows 98 była ukryta usługa sprawdzająca przez cały czas, czy nie nastąpiło właśnie załadowanie nieprawidłowego pliku.

Dalsza część artykułu pod materiałem wideo

Nic nowego: bufor

Nie są to jednak jedyne sposoby. Najważniejszym rodzajem nadużycia w multimediach jest przepełnienie bufora. Błędna obsługa nagłówków, metadanych i kontenerów może doprowadzić do uszkodzenia danych i nadpisania ich kodem. Problem ten jest do pewnego stopnia mitygowany przez mechanizm DEP (i nowsze), ale nie jest on w stanie zaradzić im wszystkim. Podobnie rozwiązaniem nie jest całkowita rezygnacja z języków C/C++ i przejście na "nowoczesne" języki stosujące wyższą dyscyplinę w obsłudze pamięci.

Dlatego multimedia mogą być zawirusowane. Poważne problemy z uszkadzaniem pamięci przez JPEG zostały rozwiązane bez poprawek przez DEP i przekompilowanie Windowsa nowym Visual C++, ale ponad 10 lat później , mimo zabezpieczeń, zidentyfikowano dziurę w obsłudze JPEG XRPNG (mniej poważną). Ryzyko zdalnego wykonania kodu poprzez samo załadowanie plików spadło, ale nie zniknęło. Więcej problemów sprawiały strumienie, pełne zaawansowanych metadanych. Nieprawidłowa ich obsługa często prowadziła do przepełnień bufora.

Kodeki

Obecnie złośliwy kod w multimediach to domena zaawansowanego wykorzystania kodeków. Choć o najnowszej dziurze w VP8 nie wiadomo jeszcze zbyt wiele (szczegóły CVE-2023-5217 oficjalnie są niejawne), pojawiły się informacje że problem dotyczy tylko enkodowania. Twierdzi tak Will Dorman. Przeglądarki internetowe są jednak dziś zdolne do samodzielnego (choć oczywiście bibliotecznego) tworzenia strumieni multimedialnych, toteż zajście niebezpiecznych okoliczności jest możliwe, a konieczna do tego interakcja użytkownika może być minimalna.

Dziura jest już załatana. Nie istnieje metoda ochrony przez taką kategorią podatności, która nie zmniejszałaby znacząco funkcjonalności aplikacji. Rozbudowane mechanizmy bezpieczeństwa zarówno po stronie systemów operacyjnych jak i kompilatorów nie są wystarczające. Przepisanie wszystkiego na teoretycznie bezpieczniejsze języki także nie jest rozwiązaniem - a każda rewolucja w kodzie to ryzyko wprowadzenia nowych błędów, o innej specyfice. Podczas gdy klasyczne problemy z buforem wciąż są aktualne, złożoność oprogramowania rośnie.

Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (16)