Grupa IBM X-Force, zajmująca się wyszukiwaniem informacji oraz badaniami na temat bezpieczeństwa aplikacji, odnalazła poważną lukę w systemie Android. Szacuje się, że problem dotyczy ponad 55% telefonów z tym środowiskiem. Dzięki tej luce napastnik może uruchomić złośliwą aplikację bez dodatkowych uprawnień i następnie dzięki podatności Androida znajdującej się w mechanizmie wykonywania kodu przez system, podnieść uprawnienia swojemu exploitowi do poziomu administratorskiego. W dodatku, należący do grupy znaleźli również oprogramowanie SDK third-party, które poprzez podatność w serializacji systemu może posłużyć atakującym do przejęcia kontroli nad aplikacjami.
Podobny atak zauważono również w przypadku sławnego shackowania Teamu Hacking. Atakujący umieścili w sklepie Play fałszywą aplikację do przeglądania najnowszych artykułów z serwisów informacyjnych, BeNews, która wymagała małej ilości przyznanych przywiejów, dzięki czemu obeszła mechanizmy obronne sklepu. Gdy tylko użytkownik uruchomił aplikację, exploit natychmiast pobierał dodatkowy kod i uzyskiwał dodatkowe uprawnienia. Było to możliwe za sprawą podatności Futex (CVE-2014-3153).
Luka opisywana w artykule została nazwana przez zespół IBM - One Class To Rule Them All. Wynika to z faktu, że problem tkwi w klasie OpenSSLX509Certificate systemu Android. Pozwala ona przejąć kontrolę nad całym urządzeniem. Klasy są powszechnie wykorzystywane przez programistów, którzy robią z nich użytek w swoich aplikacjach. Poprzez nie mogą uzyskać dostęp do takich rzeczy, jak usługi sieciowe czy aparat urządzenia i zaimplementować ich obsługę. Niestety, mogą być również wykorzystane do złych celów, tak jak w tym przypadku - tu wykorzystano klasę odpowiedzialną za stworzenie kanału komunikacji pomiędzy programami lub usługami. W trakcie procesu rozkładu i ponownego składania informacji wstrzykiwany jest złośliwy kod, który następnie infekuje urządzenie lub aplikację końcową, która otrzyma dane. Dokładne informacje na temat tej podatności zostały zaprezentowane na konferencji USENIX WOOT'15.
Pierwszy problem z serializacją w Androidzie leży w kodzie samej platformy, a nie jak często się zdarza, w jednej z aplikacji zewnętrznych. Dotyczy on wszystkich urządzeń z systemem w wersji od 4.3 do 5.1, lub wersji Jelly Bean, Kitkat i Lollipop, również najnowszego M previev 1. Obecny udział tych urządzeń na rynku jest szacowany na 55% wszystkich z zainstalowanym systemem Android.
W dokumentach przygotowanych przez grupę X-Force znaleźć można informacje o weryfikacji koncepcji (proof of concept - PoC) wraz z prawdopodobieństwem wystąpienia ataku. Grupa stworzyła własną wersję exploita PoC, która atakuje proces systemowy o nazwie system_server. Udany atak pozwala na podniesienie poziomu uprawnień do systemowego, co może poskutkować rozległymi szkodami. Przykładowo, atakujący jest w stanie podmienić dowolny plik .apk, wykonywać komendy z wiersza powłoki, modyfikować zasady SELinux oraz na niektórych urządzeniach ładować zainfekowane moduły kernela. Film poniżej prezentuje podmianę oficjalnej aplikacji Facebook na fałszywą:
Grupa również rozszerzyła wyniki badań wykonanych w roku 2014 przez Janna Horna. Wykazywały one, że Android zezwalał na deserializację dowolnych klas, nawet tych, które nie były napisane w języku Java, a które dawały się serializować w kontekście przejmowania aplikacji i usług, które pozwalały na wykonanie kodu. Okazuje się, że nawet w pełni zaktualizowany system nie jest bezpieczny (tu w rozumieniu taki, który nie zezwala na ładowanie clas nieserializowanych), jeśli istnieje w kodzie podatna klasa, która pozwala na serializację.
By zapobiec atakom na klasę OpenSSLX509Certificate, Google wypuściło już łatki dla Androidów 5.1, 5.0, 4.4 oraz M. Część z aplikacji przetestowanych i zaklasyfikowanych przez X-Force jako dziurawe również została już załatana, m.in. Jumio, esri, MyScript, GraceNote, PJSIP oraz MetalO. Grupa zaznacza, że poprawki obejmują jedynie poszczególne przypadki, które zostały przez nich zaraportowane twórcom oprogramowania. Całkowite załatanie systemu Android na chwilę obecną nie jest możliwe - wymagałoby to przebudowania systemu serializacji.
X-Force w zakończeniu informuje, że zwykle z produktami końcowymi, takimi jak systemy operacyjne czy aplikacje nie ma problemu. Są one dość szybko aktualizowane i łatane. Przykładowo, patch dla tego problemu został wydany przez Google w ciągu trzech dni od zgłoszenia. Gorzej sprawa ma się z pakietami SDK. Nieświadomy programista może zarazić wiele aplikacji poprzez korzystanie z takiego pakietu, zupełnie o tym nie wiedząc. Czas aktualizacji wynosi tu średnio kilka miesięcy. Jako przykład grupa podaje podatność znalezioną w Apache Cordova, poprzez którą zainfekowano mnóstwo aplikacji, pomimo że jej łatanie zostało zakończone już dobrych kilka miesięcy wcześniej. Najgorzej sprawa ma się z porzuconymi SDK, które nie otrzymują już poprawek od wydawcy. X-Force rekomenduje rozsądne wybieranie narzędzi programistycznych i szukanie dobrych alternatyw, które na bieżąco powstają. Zwraca również uwagę, że korzystanie z SDK third-party niesie za sobą znaczne ryzyko.
Całość artykułu wraz z zaawansowanymi technikami użytymi przez IBM X-Force do identyfikacji problemu oraz dokument zaprezentowany na USENIX WOOT'15 znajdują się poniżej:
https://securityintelligence.com/one-class-to...derprivileged-apps-super-status/#.Vcpnfvmc4dU
https://www.usenix.org/system/files/conference/woot15/woot15-paper-peles.pdf
Fajne? Ranking DIY