Android 4.4 KitKat – zmiany w bezpieczeństwie

Data publikacji: 08/11/2013, Łukasz Siewierski

malware-icon

Ostatniego dnia października, Google ogłosiło wydanie nowej wersji mobilnego systemu operacyjnego Android. Wersja ta jest oznaczona numerem 4.4 i, zgodnie z konwencją nazywania kolejnych wersji, nazwana KitKat. Wprowadza ona wiele udogodnień dla użytkowników, ale również kilka dodatkowych funkcji odpowiedzialnych za bezpieczeństwo. Pojawiła się również dodatkowa funkcja, związana z obsługą wiadomości SMS, która ułatwia użytkownikom zaobserwowanie infekcji telefonu złośliwym oprogramowaniem. Osiągnięte zostało to niejako przypadkiem, gdyż ta dodatkowa funkcjonalność nie jest ogłoszona jako usprawnienie bezpieczeństwa.

Jedna aplikacja, by rządzić wszystkimi SMSami

Razem z wersją 4.4 systemu Android, Google wprowadziło nowy rodzaj akcji: SMS_DELIVER_ACTION. Musi ona zostać zgłoszona jeśli aplikacja chce otrzymywać wiadomości SMS bezpośrednio po ich odebraniu. Oznacza to, że jeśli jakakolwiek złośliwa aplikacja chce ukryć wiadomość SMS przed użytkownikiem, musi ona zadeklarować chęć otrzymywania akcji SMS_DELIVER_ACTION. Jednak w danym momencie może istnieć tylko jedna aplikacja, która otrzymuje takie akcje – jest to odpowiednik systemowej aplikacji do obsługi wiadomości tekstowych.

Wciąż aktualna pozostaje akcja SMS_RECEIVED_ACTION, ale zostaje ona ograniczona tylko do aplikacji, które czytają wiadomości SMS – takie aplikacje nie mogą ingerować w wiadomość oraz w to jak ona zostanie rozpropagowana. Różnica pomiędzy nowym i starym podejściem jest zilustrowana na diagramie poniżej – po lewej stronie przedstawiony jest schemat dla Androida przed wersją 4.4, a po prawej dla Androida w wersji 4.4.

Podobne zachowanie zostało zaimplementowane dla wiadomości MMS (za pomocą akcji WAP_PUSH_DELIVER_ACTION).

Wysyłane wiadomości SMS również są przekazywane do systemowej aplikacji obsługującej wiadomości SMS i zapisywane przez nią. Oznacza to, że jeśli na naszym telefonie znajduje się złośliwe oprogramowanie i nie jest wybrane jako główna aplikacja do obsługi wiadomości SMS to wszystkie wiadomości wysłane przez ten malware zostaną zapisane w wiadomościach wysłanych. Ułatwia to znalezienie śladów infekcji na własnym telefonie. Nie jest to jednak prawdą dla wiadomości MMS. Aplikacja, która nie jest wybrana jako główna aplikacja do obsługi wiadomości SMS, również nie jest w stanie zapisać kopii roboczej, oznaczyć wiadomości jako przeczytanej czy też ją usunąć.

Ze względu na te zmiany warto monitorować wysyłane wiadomości oraz zwracać uwagę na podejrzane przychodzące wiadomości – mogą one świadczyć o infekcji złośliwym oprogramowaniem. Na przykład, opisywana przez nas wielokrotnie aplikacja E-Security pozostawi w wysłanych wiadomościach np. następujące SMSy:

 

SELinux – tym razem na poważnie

W poprzednich wersjach systemu Android już był zaimplementowany moduł SELinux (z ang. Security-Enhanced Linux). Jednak, aby nie psuć kompatybilności, działał on w trybie permissive, czyli tylko logował naruszenia polityk, ale ich nie wymuszał. W Androidzie KitKat SELinux działa domyślnie w trybie enforcing powodując, że zachowania naruszające politykę będą blokowane. Można to bardzo łatwo sprawdzić włączając telefon w tryb debugowania USB i wydając następujące polecenia:

$ adb shell getenforce
Enforcing

We wcześniejszych wersjach było oczywiście możliwe przejście do tego trybu, ale wymagało to dostępu do konta administratora. Bardzo ciekawą serię artykułów na temat SELinux oraz jego wersji na telefony z systemem Android można znaleźć na blogu securityblog.org – zawarty tam jest także przykład exploita, który został zatrzymany przez użycie SELinux.

Dodatkowe CA SSL oraz Certificate Pinning dla Google

W zakresie połączeń SSL, Google wprowadziło dwie nowości. Użytkownicy zostaną powiadomieni o tym, że na ich telefonie zainstalowano dodatkowe, niestandardowe CA. Praktyka taka stosowana jest przy atakach man-in-the-middle, aby podglądać ruch szyfrowany. Jest to stosowane na przykład w filtrach korporacyjnych, aby zniechęcić użytkowników do oglądania nieodpowiedniej treści. Drugą nowością jest zapisanie certyfikatów CA do serwisów Google w systemie Android. Dzięki temu połączenia z usługami Google mogą być tylko chronione przez te certyfikaty i niemożliwe jest wykonanie na nich ataku man-in-the-middle.

Małe dodatki: ECDSA oraz FORTIFY_SOURCE

Najnowsza wersja systemu operacyjnego Android została skompilowana z opcją FORTIFY_SOURCE=2. Powoduje to, że kompilator może zapobiec niektórym przypadkom przepełnienia bufora (z ang. buffer overflow), które mogą zostać wykryte na etapie kompilacji.

Android zaczął też wspierać ECDSA, oznacza to, że można dodać klucze prywatne o publiczne służące do realizacji podpisu cyfrowego za pomocą algorytmu krzywych eliptycznych (z ang. Eliptic Curve). Jest to rozszerzenie obecnych możliwości podpisu o kolejny algorytm, który może w przyszłości spowodować spowolnienie wzrostu długości kluczy, które dziś obserwujemy np. przy kluczach RSA.

Podsumowanie

Pomimo, że nowe funkcje nie są rewolucją, a jedynie ewolucją to oczywiście są małymi krokami w dobrą stronę. Wybranie jednej aplikacji obsługującej wiadomości SMS/MMS psuje kompatybilność niektórych wersji złośliwego oprogramowania z najnowszą wersją systemu Android i ułatwia wykrycie infekcji, utrudniając jednocześnie pisanie nowego malware’u. Pozostałe funkcjonalności oczywiście wpływają na bezpieczeństwo, ale w dzisiejszych czasach, kiedy większość malware’u jest świadomie instalowana przez użytkowników, którzy zgadzają się na nadmierne uprawnienia aplikacji nie jest to ostateczne rozwiązanie.

Z drugiej strony, nawet pomimo wprowadzenia tych nowości, aktualizacja wersji systemu operacyjnego wciąż zależy od producentów telefonów. Do najnowszej wersji zapewne zostaną zaktualizowane tylko nowe modele telefonów lub modele z wyższej półki cenowej, co wykluczy na pewien czas część użytkowników, na przykład tych, którym się skończył tradycyjny 18-miesięczny okres wsparcia.