Okazuje się, że mimo comiesięcznych aktualizacji zabezpieczeń system Android wciąż posiada bardzo poważne dziury ułatwiające dostęp hakerom.

Opisywana w tym artykule dziura, odkryta została przez pracowników Palo Alto Networks Unit 4, czyli jednej z grup zajmujących się tworzeniem aplikacji na Androida, a nie bezpieczeństwem! Pokazuje to, że praktycznie każdy programista potrafiący stworzyć aplikacje, mógłby przeprowadzić próbę ataku na nasze urządzenie.

W tym wypadku do ataku sama aplikacja to nie wszystko. Wymagana jest jeszcze „pomoc” użytkownika.

Także powiadomienie, samo w sobie, nie jest zagrożeniem. Hakerzy jednak wykorzystują je do wyświetlenia ponad nim pseudo-nakładki z przyciskami, które przypominają te wyświetlane przez sam system. Ich wciśnięcie powoduje nadanie wielu, niebezpiecznych dla naszej prywatności, pozwoleń.

Jak to działa?

Przykładowe powiadomienie typu toast.

Przy wykorzystaniu komunikatu typu toast możliwe jest obejście wymagania zezwolenia na wyświetlanie ponad aplikacjami (overlay). Na podobnej zasadzie działał exploit Cloak and Dagger.

Pracownicy Palo wykorzystali nowo odkryty exploit do zmuszenia użytkownika na wciśnięcie komunikatu, co pozwoliło na nadanie usłudze aplikacji dostępu do urządzenia. To zezwolenie pozwala na dostęp plików, odczytywanie ekranu (a w tym wciskanych klawiszy).

Następnie wykorzystali dokładnie ten sam sposób, aby otrzymać prawo administratora urządzenia. Pozwala to na zdalną instalację aplikacji, monitorowanie urządzenia, czy zablokowanie go wykorzystując ransomware.

A dokładniej?

Autorzy udostępnili pełny kod źródłowy wszystkich aplikacji i skryptów, które wykorzystali do przeprowadzenia ataku. Pozwala to an poznanie technicznej strony tej dziury w systemie.

Exploit tworzy nakładkę ponad komunikatem toast bez potrzeby otrzymania zezwolenia SYSTEM_ALERT_WINDOW, które w teorii jest wymogiem, aby aplikacje mogły korzystać z nakładek. Jednakże, exploit, tworzy nakładkę poprzez komunikat, który jednak jest fragmentem systemu i tego zezwolenia nie wymaga. Nakładka wygląda jak zwyczajny komunikat z prośbą o nadanie (lub odrzucenie) zezwolenia na cokolwiek, jednak w praktyce zarówno zgoda, jak i je brak, przynajmniej dla systemu, jest zezwoleniem na nadanie praw administratora lub praw dostępu dla aplikacji hackera.

Wykorzystanie komunikatów jako pośrednika umożliwia uzyskanie wymaganych zezwoleń,  mimo  teoretycznego ich braku.

Okazuje się, że systemy starsze niż Oreo lub Nougat z wrześniowymi zabezpieczeniami nie sprawdzają obecności i stanu zezwoleń wysyłanych poprzez komunikaty toast. Jednocześnie system automatycznie te prawa nadaje (choć tymczasowo).

Poprawki?

Te już są dostępne od 2 tygodni.

Pojawiły się wraz z aktualizacją zabezpieczeń z obecnego miesiąca.

Niestety wiele urządzeń nie otrzymało jeszcze wrześniowej aktualizacji. Tak na prawdę zabezpieczone są jedynie Google Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6, Nexus 6P oraz Nexus 9 oraz część najnowszych modeli firmy Sony.

Wszystkie pozostałe urządzenia z systemem w wersji 4.4 (KitKat) i nowszych (wliczając w to przedwrześniowe wersje 7.1 i 8.0), są w dalszym stopniu zagrożone!

Android 7.1

Wraz z androidem 7.1, Google wprowadziło zmiany, które mogły już przeszkodzić w tego typu atakach.

Komunikaty toast mogą działać jedynie przez określony czas (maksymalnie od 3,5 sekundy) oraz dany proces może wyświetlić maksymalnie jeden na raz.

Niestety możliwe było tego obejście poprzez stworzenie ciągłej pętli wyświetlającej ten sam komunikat z tą samą nakładką – ludzkie oko nawet nie zauważyłoby tych zmian.

Brak ciągle działającej pętli pozwoliłby na bezproblemowe zauważenie jaka aplikacja i o co tak na prawdę prosi.

Konsekwencje

Prawa do dostępu i administratora to zezwolenia, które pozwalają na wykonanie prawie każdego typu ataku – ransomware, keyloggerów, czy po prostu przeprowadzić proces Ustawień Fabrycznych.

Mając te zezwolenia, aplikacja nie potrzebuje specjalnych pozwoleń, aby wyświetlić kolejne komunikaty toast.

Aplikacje można poznać po tym, że wśród wymaganych przez nie zezwoleń znaleźć można BIND_ACCESSIBILITY_SERVICE oraz BIND_DEVICE_ADMIN. Oczywiście nie każda aplikacja korzystająca z tego typu zezwoleń jest niebezpieczna.

Niestety zazwyczaj system nie podaje tych zezwoleń. Dlatego też instalując aplikację z poza Sklepu (nie w 100%, ale instalacja poprzez niego jest jednak bezpieczniejsza), możemy zajrzeć do pliku AndroidManifest.xml aplikacji, w którym wypisane są wszelkie wymagane przez nią pozwolenia.

Jeśli nie masz pewności dlaczego aplikacja wymaga tego typu zezwoleń, najlepiej jest ją usunąć i skontaktować się z jej twórcą. Twórca bezpiecznej aplikacji powinien odpowiedzieć i wytłumaczyć. Jeśli aplikacja jest stworzona do ataku, najprawdopodobniej nie otrzymamy odpowiedzi na nasze zapytanie.

Jeżeli znalazłeś/aś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij Zgłoś pomyłkę.