05/06/2017

Cloak and Dagger: dziura w Androidzie

Informacje Zagrożenia

To nie jest post ćwiczeniowy. Sprawa dotyczy wszystkich wersji Androida, a na chwilę publikacji tej informacji Google jeszcze nie rozwiązał problemu. Korzystając z pewnej luki, atakujący mogą kraść takie dane jak hasła, instalować aplikacje z pełnym zestawem uprawnień, a także monitorować, co użytkownik robi lub pisze na klawiaturze — a to wszystko na dowolnym smartfonie lub tablecie z Androidem.

Atak, nazwany Cloak and Dagger (pol. „płaszcz i szpada”), został zademonstrowany przez pracowników amerykańskiej uczelni Georgia Institute of Technology oraz Uniwersytetu Kalifornijskiego, Santa Barbara. Trzykrotnie zwracali oni uwagę firmie Google na ten problem, lecz za każdym razem dostawali odpowiedź, że tak ma być. Badacze postanowili zatem opublikować swoje odkrycia. W tym celu utworzyli nawet specjalną stronę: cloak-and-dagger.org.

Istota ataku Cloak and Dagger

Mówiąc w skrócie, atak wykorzystuje aplikacje ze sklepu Google Play. Chociaż aplikacja ta nie wymaga nadania jej jakichś nadzwyczajnych uprawnień, atakujący uzyskują możliwość nakładania jej interfejsu na inne aplikacje, wizualnie je blokując. Mogą również klikać przyciski w imieniu użytkowników w sposób, który nie wzbudza żadnych podejrzeń.

Atak jest możliwy do przeprowadzenia dlatego, że podczas instalowania aplikacji ze sklepu Google Play użytkownicy nie muszą wyraźnie udzielić im zezwolenia na dostęp do funkcji SYSTEM_ALERT_WINDOW, a z kolei zdobycie uprawnienia dostępu do ACCESSIBILITY_SERVICE (A11Y) nie stanowi szczególnie dużego wyzwania.

Co to są za uprawnienia? Pierwsze umożliwia aplikacji nakładanie jej interfejsu na wierzch każdej innej aplikacji, a drugie daje jej dostęp do zestawu funkcji występujących w menu Dostępność, które są przeznaczone dla osób z zaburzeniami wzroku lub słuchu. Ten drugi przypadek może pozwolić na wykonanie na urządzeniu wielu różnych — w tym niebezpiecznych — rzeczy, np. umożliwia aplikacji monitorowanie tego, co się dzieje w innych aplikacjach, a także na interakcję z nimi w imieniu użytkownika.

Co w tym złego?

Niewidoczna warstwa

Ataki, które wykorzystują pierwsze uprawnienie — SYSTEM_ALERT_WINDOW — nakładają na pozostałe aplikacje własny interfejs bez pytania użytkownika. Co więcej, wyświetlane okna mogą mieć dowolny kształt. Mogą również rejestrować naciśnięcia klawiszy lub pozwalać na rejestrowanie ich przez okno znajdujące się poniżej.

Na przykład programista o nieczystych zamiarach może przygotować niewidoczną warstwę, która będzie nakładać się na klawiaturę wirtualną w urządzeniu Android i przechwytywać każdy dotyk ekranu. Łącząc współrzędne miejsca, w którym użytkownik dotyka ekranu, z umiejscowieniem znaków na klawiaturze, atakujący może dowiedzieć się, co użytkownik pisze. Takie szkodliwe programy nazywamy keyloggerami. To jeden z przykładów, który badacze zaprezentowali podczas omawiania ataku.

Ogólnie mówiąc, SYSTEM_ALERT_WINDOW to stosunkowo niebezpieczne uprawnienie, a sama firma Google zakłada, że powinno ono być ograniczone do niewielkiej liczby aplikacji. Jednak ponieważ uprawnienia tego wymagają tak popularne aplikacje jak Facebook Messenger (te głowy Chat Heads które zakrywają wszystko inne), Skype czy Twitter, firma Google nieoczekiwanie zdecydowała, że łatwiej by było, aby Google Play nadawał to uprawnienie bez wyraźnego informowania o tym użytkownika. Niestety prostota i bezpieczeństwo nie zawsze idą w parze.

Zagrożenia związane z funkcjami opcji Dostępność

Drugie uprawnienie, Dostępność, powstało w zamiarze dobrych intencji: miało ułatwić ludziom posiadającym problemy ze wzrokiem lub słuchem korzystanie z urządzeń z systemem Android. Jednak funkcja ta daje aplikacjom tak wiele uprawnień, że znacznie częściej jest używana do różnych innych celów — zazwyczaj przez programy, które muszą wykonać działania nie zawsze dozwolone na Androidzie.

Na przykład aplikacja z uprawnieniem Dostępność może odczytywać ludziom posiadającym problemy ze wzrokiem na głos to, co się dzieje na ekranie, np. jaka aplikacja została otwarta, co klika użytkownik, a także informować o wyświetleniu okna z powiadomieniem. Oznacza to, że aplikacja zna kontekst tego, co się dzieje z urządzeniem. Jakby tego było mało, oprócz monitorowania aktywności aplikacja może także wykonywać różne działania w imieniu użytkownika.

Należy przy tym napisać, że Google ma świadomość tego, że uprawnienie Dostępność daje aplikacjom możliwość wykonywania praktycznie wszystkiego, czego tylko dusza zapragnie. Z tego powodu wymagane jest włączenie tej opcji dla każdej jednej aplikacji w specjalnym menu w ustawieniach smartfona.

Problem stwarza sytuacja, w której przy użyciu pierwszego pozwolenia SYSTEM_ALERT_WINDOW i umiejętnego wyświetlania okien, które zakrywają większość ekranu (poza przyciskiem OK), atakujący mogą nakłonić użytkowników do włączenia opcji Dostępności (którzy ogólnie będą uważać, że zgadzają się na coś nieszkodliwego).

Ponieważ opcja Dostępność może mieć wgląd w cały kontekst działania użytkownika i podejmować akcje w jego imieniu, w tym dokonywać zakupów w sklepie Google Play, atakujący bez problemu mogliby użyć pobrać z niego specjalną aplikację szpiegującą i nadać jej dowolne uprawnienia. Co więcej, mogliby to zrobić nawet po wyłączeniu ekranu lub podczas odtwarzania filmu, blokując wszystko, co się dzieje poniżej.

Phishing

Po uzyskaniu dostępu SYSTEM_ALERT_WINDOW i ACCESSIBILITY_SERVICE oszuści mogliby przeprowadzać ataki phishingwe bez wzbudzania podejrzeń.

Na przykład gdy użytkownik otwiera aplikację Facebook i wprowadza swój login i hasło, inna aplikacja posiadająca uprawnienia Dostępność może uzyskać ogląd sytuacji i podjąć odpowiednie działania. Następnie może użyć funkcji SYSTEM_ALERT_WINDOW, nałożyć się na inne aplikacje i wyświetlić użytkownikowi okno phishingowe zawierające pytanie o hasło do Facebooka, w którym niczego niepodejrzewający użytkownik wprowadzałby dane uwierzytelniające do swojego konta.

W tym przypadku wiedza odnośnie bieżącej sytuacji umożliwia programistom wyświetlanie ekranów phishingowych we właściwym miejscu tylko wtedy, gdy użytkownik zamierza wprowadzić hasło. Z kolei z punktu widzenia użytkownika działanie polegające na wprowadzeniu danych autoryzacyjnych do Facebooka nie wzbudza żadnych podejrzeń.

Dla badaczy zajmujących się bezpieczeństwem takie ataki nie są niczym nowym. Mają one nawet swoją nazwę — tapjacking. Programistom aplikacji na Androida firma Google dała możliwość obrony: opcję sprawdzania, czy na aplikację jest nałożona inna — w takim przypadku użytkownicy nie mogą wykonać niektórych działań. Większość aplikacji bankowości jest chroniona przed atakami wykorzystującymi nakładki takie jak Cloak and Dagger. Jednak jedynym sposobem, aby mieć 100% pewność, że aplikacja nie jest podatna na taki atak, jest skontaktowanie się z programistą.

Jak zabezpieczyć swoje urządzenie przed atakiem typu Cloak and Dagger

Autorzy badania Cloak and Dagger przetestowali atak na trzech najpopularniejszych wersjach Androida: Android 5, Android 6 i Android 7, które razem stanowią 70% wszystkich urządzeń z tą platformą. Okazało się, że wersje te są podatne na atak — prawdopodobnie jak wszystkie poprzednie wersje. Innymi słowy, jeśli masz urządzenie z systemem Android, prawdopodobnie także Cię to dotyczy.

Zobacz, co możesz zrobić w tej sytuacji:

  1. Staraj się nie instalować nieznanych aplikacji z Google Play oraz z innych sklepów, zwłaszcza darmowych. Legalne aplikacje nie atakują przy użyciu Cloak and Dagger. Niemniej jednak pozostaje pytanie, jak odróżnić podejrzaną aplikację od nieszkodliwej.
  2. Regularnie sprawdzaj, które uprawnienia ma aplikacja na Twoim urządzeniu, i cofnij te, które nie są jej potrzebne. Jak to zrobić, dowiesz się z naszego posta.

Nie mniej ważne jest to, aby nie zapominać o zainstalowaniu na Androidzie rozwiązania zabezpieczającego. Możesz wypróbować darmowa wersję Kaspersky Internet Security for Android, a jeśli nie masz jeszcze takiego produktu na swoim smartfonie lub tablecie, zainstaluj go — na dobry początek.