Poważny błąd w Androidzie pozwala na bezproblemowe modyfikowanie aplikacji

mm Michał Derej Artykuły 2017-12-11

Eksperci z Guard Square zajmujący się cyberbezpieczeństwem odkryli kolejną poważną lukę w systemie Android, która pozwala dowolnej osobie na zmodyfikowanie każdej aplikacji bez zmiany jej cyfrowego podpisu, co stanowi olbrzymie zagrożenie dla bezpieczeństwa. Błąd CVE-2017-13156 otrzymał nazwę Janus, która wywodzi się od rzymskiego boga o dwóch obliczach. Dlaczego? Tego dowiecie się w dalszej części tego artykułu.

Na czym polega błąd Janus?

Aplikacja na Androidzie oprócz pliku .apk składa się również z pliku .dex, który inicjalizuje oraz uruchamia stworzony program. To właśnie z tej zależności mogą skorzystać cyberprzestępcy – podczas uruchamiania danej aplikacji, sprawdzany jest wyłącznie jej podpis cyfrowy, który kontroluje archiwum .zip, czyli plik .apk (aplikacje na Androidzie to po prostu archiwa z plikami). Dodatkowe bajty nie są jednak sprawdzane, co oznacza, że idealną metodą ataku wydaje się skorzystanie z pliku .dex, ponieważ program może składać się jednocześnie z poprawnego pliku .apk oraz .dex. Na poniższej grafice możecie zobaczyć z jakich części składa się aplikacja tworzona dla systemu Google’a.

Kolejnym ważnym elementem nowego typu ataku jest fakt, że maszyna wirtualna Dalvik lub ART może źle interpretować podwójne pliki, składające się z pliku .apk oraz dołączonego pliku .dex tak jak na powyższej grafice. W teorii powinna ona wczytać plik .apk, wyekstraktować z niego plik .dex i rozpocząć wczytywanie kodu. W praktyce możliwe jest jednak, by maszyna wirtualna uruchomiła pliki nie tak, jak trzeba. Jest to spowodowane tym, że sprawdza ona nagłówek w poszukiwaniu informacji na temat typu pliku. Jeśli znajdzie tam wzmiankę o pliku .dex, to zostanie on załadowany jako plik .dex. Jeśli jednak maszynie wirtualnej nie uda się odnaleźć odpowiedniej informacji, to plik ładowany jest jako plik .apk zawierający wpis .zip z plikiem .dex. Podczas próby instalacji tak zmodyfikowanej aplikacji, system jest w stanie uznać ją za prawidłową aktualizację wcześniej zainstalowanego programu, jednak kod uruchamiany jest nie z prawidłowego pliku .apk, lecz ze zmodyfikowanego pliku .dex.

Dlaczego jest to poważne zagrożenie?

Podpisywanie aplikacji jest sprawdzonym sposobem na zapewnienie użytkownika o bezpieczeństwie swojego produktu, ponieważ żaden cyberprzestępca nie jest w stanie podpisać zmodyfikowanej wersji oryginalnego programu tym samym kluczem. Okazuje się jednak, że przez błąd Janus użytkownicy Androida nie mogą już czuć się do końca pewnie podczas instalacji potencjalnie prawidłowej aktualizacji, która jednak być potajemnie złośliwie zmieniona. Warto pamiętać, że po sprawdzeniu podpisu system Android zezwala na instalację aktualizacji programu, a nowa wersja uzyskuje wszystkie uprawnienia przyznane starszej wersji aplikacji. Oznacza to, że cyberprzestępcy mogą wykorzystać lukę Janus, by tworzyć malware o potężnych uprawnieniach, których nikt nie musi im przyznawać.

Zobacz też: Czy korzystacie z tego systemu mobilnego?

Dla przykładu cyberprzestępca jest w stanie podesłać użytkownikowi „aktualizację” dla ważnej aplikacji systemowej, która posiada wszystkie najważniejsze uprawnienia. Po instalacji przez nieświadomego właściciela smartfona osoba stojąca za atakiem może bezproblemowo przejąć kontrolę nad telefonem, wysyłając wszystkie prywatne informacje na swoje serwery i narażając użytkownika na dodatkowe koszty oraz kradzież danych.

Podsumowanie informacji

Warto pamiętać, że proces ataku wymaga od użytkownika zainstalowania aplikacji spoza sklepu Google Play, co może odstraszyć sporo mniej zaznajomionych z systemem osób ze względu na wiele wyświetlanych ostrzeżeń. Okazuje się, że niestety nawet eksperci nie mogą czuć się bezpiecznie – najpopularniejsze narzędzia do inżynierii odwrotnej nie potrafiły odnaleźć ukrytego złośliwego kodu.

Janus stanowi zagrożenie dla nowszych smartfonów i tabletów, które działają pod kontrolą Androida 5.0 lub nowszej wersji. Na całe szczęście, aplikacje korzystające z nowego schematu cyfrowego podpisu, a także urządzenia wspierające tę technologię (działają one pod kontrolą Androida 7.0 lub nowszej wersji) są chronione, ponieważ podpis cyfrowy sprawdza wtedy wszystkie bajty pliku .apk, a nie samo archiwum.

Błąd VE-2017-13156 został zgłoszony przez ekipę z Guard Square do Google’a 31 lipca 2017 roku. Poprawka dla telefonów została udostępniona w listopadowej łatce bezpieczeństwa.

Źródło: Guard Square

 

 

 






Przewiń stronę, by przeczytać kolejny wpis
x