reklama

Luka Janus: modyfikacja aplikacji na Androida bez naruszenia podpisu

Strona główna Aktualności

O autorze

Kobieta o wielu talentach, użytkowniczka OS X kochająca fotografię, kuchnię wschodnią, ciężką muzykę i poprawną polszczyznę.

Od pierwszego wydania Androida deweloperzy musieli podpisywać swoje aplikacje. Podczas aktualizacji zabezpieczenia systemowe porównują sygnaturę nowej wersji z już znaną, dzięki czemu nie jest możliwe zainstalowanie zmodyfikowanej aktualizacji. Zabezpieczenie to jednak nie było całkowicie skuteczne.

Ujawnione zostały szczegóły luki Janus (CVE-2017-13156) w Androidzie, która pozwalała atakującym wprowadzenie złośliwego kodu do aplikacji bez naruszania jej podpisu. Atak można przeprowadzić z wykorzystaniem aplikacji dla Androida, podpisanych według starszego schematu. W skrócie można powiedzieć, że winę ponosi konstrukcja plików APK i DEX – ten sam plik może być jednocześnie jednym i drugim. Specjaliści z GuardSquare poinformowali Google o luce 31 lipca tego roku i jeszcze tego samego dnia otrzymali informację zwrotną. Na szczęście nie zauważono żadnych wykorzystujących tę lukę aplikacji, ponadto użytkownicy pobierający aplikacje tylko z Google Play są bezpieczni.

Janus działa dzięki temu, że dodatkowe bajty w plikach APK i DEX są pomijane. APK to technicznie rzecz biorąc ZIP i może zawierać dowolne dane na początku i pomiędzy zapisami ZIP. Schemat podpisywania plików JAR z kolei bierze pod uwagę tylko ciągi bajtów należące do archiwum i przy obliczaniu sygnatury oraz weryfikacji pliku APK pomija te dodatkowe informacje. Pliki DEX z kolei mogą zawierać dowolne dane na końcu. W uproszczeniu wystarczy więc „skleić” bajty pliku DEX na początku i APK na końcu, by otrzymać nie budzącą podejrzeń hybrydę.

GuardSquare dodaje, że wykorzystanie ataku tego typu jest możliwe dzięki sposobowi działania maszyny wirtualnej Dalvik/ART. Według założeń ładuje ona plik APK, wypakowuje z niego DEX i następnie uruchamia jego kod. W praktyce jednak maszyna może załadować i wykonać oba typy plików. W związku z tym, jeśli dostanie spreparowany plik APK, na początku którego znajdzie nagłówki pliku DEX, załaduje go w ten właśnie sposób i wykona zawarte w nim instrukcje.

Sygnatura APK wciąż będzie poprawna i atakujący spokojnie mogą podszywać się pod aktualizacje popularnych aplikacji. Co więcej, złośliwy kod na początku pliku może mieć dostęp do szerokich uprawnień, jeśli aktualizowana aplikacja wcześniej je miała. Gdyby udało się podszyć pod którąś z aplikacji systemowych, można teoretycznie wydobyć dane osobiste użytkownika i przejąć kontrolę nad urządzeniem.

Janus jest obecny na Androidzie 5.0 i nowszych, wymaga by aplikacja była podpisana według schematu v1. Pliki APK z podpisem v2 (Android 7.0 i nowsze) są bezpieczne, gdyż biorą pod uwagę wszystkie bajty pliku.

Platformy F-Droid i APKMirror potwierdziły, że ich aplikacje zostały już zabezpieczone przed atakiem.

© dobreprogramy
reklama

Komentarze

reklama