Add new comment

Komentarz o Geimini, czy quo vadis Androidzie ? (2011, wersja 1.01)


Artykuł we wcześniejszej wersji został wpierw opublikowany w serwisie benchmark.pl, wersja 2.0 (ale po angielsku !) jest tutaj

Od kilku dni na różnych portalach można przeczytać utrzymane czasem w sensacyjnym tonie notki o złośliwym kodzie o nazwie Geimini, który stał się zagrożeniem dla danych użytkowników w różnych urządzeniach pracujących pod kontrolą Androida. Była o tym nawet wzmianka na Benchmarku...

Chciałbym choć trochę poruszyć tematykę bezpieczeństwa (i przy okazji prywatności) w sympatycznym robociku i zastanowić się, czy w 2011 podobne informacje będą na porządku dziennym...

Oprę się na własnych doświadczeniach z Androida 2.2.1 w Galaxy S (o pewnych faktach już pisałem wcześniej i teraz to rozwinę, przykłady również będą dotyczyć tego telefonu) oraz odkryciach ludzi trochę bardziej biegłych w tym temacie ode mnie (czytaj - m.in. na prezentacjach z DEFCONu :))

Domyślne ustawienia

Android (a konkretnie jego domyślne ustawienia) moim zdaniem nie do końca sprzyjają zachowaniu prywatności. I nie mówię tutaj o takich rzeczach jak połączenie z kontem w Google (i kopiowanie przy domyślnych ustawieniach takich danych "w chmurę" jak kontakty czy kalendarz ). To można stosunkowo łatwo wyłączyć:

  • "Kontakty -> Ustawienia -> Zapisuj nowe kontakty w" i wybieramy "Telefon"
  • "Kalendarz -> Ustaw. -> Kalendarze" i włączamy "Mój kalendarz"

i w końcu "Menu -> Ustawienia -> Konta i synchronizacja -> Autosynchronizacja"

Nie chodzi również o numer telefonu widoczny w "Menu -> Ustawienia -> O telefonie -> Aktualizacje systemu". On również jest do usunięcia - wchodzimy w "Kontakty -> Ustawienia -> Własne numery", kasujemy stamtąd wpisy i restartujemy telefon.

Chodzi mi bardziej o zbieranie tego gdzie się znajdujemy. W Androidze 2.2.1 (Froyo) możliwości ustawiania lokalizacji są trzy (menu "Menu -> Ustawienia -> Lokalizacja i zabezpieczenia"):

  • na podstawie wykrytych sieci Wifi lub danych z sieci komórkowej (numery identyfikacyjne BTSów, itp.)
  • sprzętowy GPS
  • informacje z czujników

Google dodał przycisk GPS na ekranie Powiadomienia. I co się okazuje ? Opcja pierwsza czyli "Użyj sieci bezprzew." nie jest przez niego wyłączana, po jej włączeniu zaś użytkownik może przeczytać:

Ilu użytkowników w końcu da sobie spokój z ręcznym jej wyłączaniem ?

Pójdźmy dalej - w Androidzie 2.1 w menu kamery miałem opcję wyłączania geolokalizacji, w 2.2.1 zniknęła (informacja o lokalizacji jest dodawana automatycznie w przypadku włączenia którejś z opcji w "Menu -> Ustawienia -> Lokalizacja i zabezpieczenia").

Kolejny przykład - w domyślnej przeglądarce zdarzyło mi się raz, że proponowane mi było włączenie opcji lokalizacji.

W stosunku do innych systemów można również wytykać fakt, iż aplikacje systemowe (tak można traktować programy Google) zazwyczaj też są tylko w wersji "online". Ot takie Mapy Google (wersja 5.0.0.0) - są tak wykonane aby jak najczęściej łączyć się z serwerem (lokalny cache jest niestety kasowany od czasu do czasu przynajmniej w Galaxy S, wyznaczanie trasy wymaga już tego obowiązkowo). Albo Wyszukiwanie głosowe...

A jakiś pozytyw ? Android 2.2 ma różne metody zabezpieczenia ekranu (hasłem, wzorem, itd.). Wbrew pozorom nie jest to dzisiaj tak oczywista opcja...

Mój komentarz: tworzenie Androida nie jest działalnością charytatywną, niewątpliwie przynosi firmie Google zyski np. z reklam (a te będą efektywne tylko wtedy gdy będą trafnie skierowane) i myślę, że podobnych "negatywnych" działań do opisanych będzie coraz więcej. W przyszłości z chęcią bym natomiast widział możliwość podłączania karty pamięci do komputera w trybie "tylko do odczytu".

Uaktualnienia

Android 2.2 Froyo został ogłoszony w dniach 19-20 maja 2010, pierwszy raz oficjalne wydanie tej wersji zostało udostępnione w Polsce dla modelu Samsunga Galaxy S ok. 9 listopada 2010 (ale tylko wariant brandowany dla sieci Era). Przypominam - mówimy o telefonie flagowym (z najwyższej półki) sprzedanym w różnych wariantach w ponad 10 milionach egzemplarzy.

Z urządzeniami innych producentów jest niestety podobnie - np. flagowy X10 Sony-Ericssona przez długi czas był sprzedawany z archaiczną wersją 1.6.

Wyliczać można długo, jedynym chlubnym wyjątkiem są telefony bezpośrednio od Google czyli Nexus One lub Nexus S. Ale one kosztują jakby "trochę" więcej...

Dlaczego o tym piszę ? Każda kolejna wersja to nie tylko zmiany w funkcjonalności, ale również poprawki na znane luki w zabezpieczeniach w modułach systemowych. Czy w przypadku systemów biurkowych dopuszczalne byłoby czekanie pół roku na wypuszczenie odpowiedniej poprawki ? A w systemie o nazwie Android tak się niestety dzieje...

Obawiam się, że w pewnym momencie skojarzenia użytkowników mogą iść prostą drogą - skoro Android używa jądra Linuxa i ma tyle "luk", to nie warto się interesować się Linuxem w ogóle. Trzeba sobie powiedzieć jasno, że nie jest to prawda i konflikt między osobami tworzącymi jądro i firmą dalej trwa (zmiany Google nie są wprowadzane do głównego kodu), każdy producent dodatkowo umieszcza swoje wersje u siebie (a właściwie powinien - według Matthew Garretta z firmy Red-Hat na 130 sprawdzonych urządzeń zrobiono to jedynie w przypadku 19). Mówiąc krótko - to co reprezentuje teraz Android i różne dystrybucje linuxowe to dwa różne światy (jeśli chodzi o wykorzystywanie, łatanie i pomoc w rozwoju jądra).

Pójdźmy dalej - takie np. nowe egzemplarze Samsung i5700 Galaxy są dostępne jeszcze w ofercie 7 sklepów (według Skąpca). Ten model nie otrzyma już oficjalnego Froyo...ale taka alternatywa pojawiła się (przy czym ROM nie jest od Samsunga) i jakimś czas temu mogliśmy przeczytać np. sensacyjny artykuł "Przyspiesz 4-krotnie Samsung i5700 Galaxy Spica!". Który użytkownik się nie skusi ? Myślę, że w przypadku podobnych produkcji prędzej czy później mogą się niestety pojawić "czarne owce" z ukrytymi "niespodziankami".

Jak producenci mogą się przed tym "bronić" ? Jednym z rozwiązań jest szyfrowanie tzw. bootloaderów - tak działa np. Motorola, ostatnio pewne kroki tego typu uczyniono w Galaxy Tab. Mam niestety dosyć mocne wrażenie, iż w miarę zdobywania popularności przez platformę może nastąpić intensyfikacja podobnych działań. Tylko, że wtedy być może dziecko zostanie wylane wraz z kąpielą...

W przypadku Androida dochodzi niestety kolejny problem - oficjalne buildy systemu nie zawsze informują o możliwych uaktualnieniach. Zauważyłem to np. na testowanym Galaxy S po zmianie ROMu na wersję 2.2.1 - zostały mi automatycznie zaproponowane uaktualnienia Map Google do wersji 5.0.0, YouTube do 2.1.6, pojawił się również Street View w mapach Google 1.6.0.6 oraz Market 2.2.7, ale... Gmail, Layar, Voice Search, Google Search, Flash Player 10.1 (5 aplikacji !) musiałem sobie sam znaleźć w Markecie i wyklikać (od tego momentu były już "normalnie" widoczne). Żeby nie było wątpliwości - bez wspomnianej operacji mój Flash byłby w wersji 10.1.92.8, a zgodnie z biuletynem bezpieczeństwa Adobe nr APSB10-26 narażałoby to telefon na niebezpieczeństwo...

Jak sobie z tym poradzić ? Można ewentualnie zainstalować sobię aplikację Appbrain z Marketu, wejść w opcję "Manage and Sync" (na obrazku), gdzie można po kolei klikać na nazwach programów i patrzeć, czy są one w Markecie.

Mało wygodne, ale lepsze niż nic...

We wspomnianym telefonie Galaxy S pewne zastrzeżenia miałem również co do kilku innych programów dołączonych jako "bonus". Przykładowo taki ThinkFree Office (w Markecie widoczny jako ThinkFree Office Mobile) - "moja" wersja to 2.0.1011.01 (po kliknięciu na opcję aktualizacji w niej nie wskazuje na istnienie żadnych poprawek), marketowa zaś 2.0.1110.01. Literówka to czy wprowadzanie użytkownika w błąd ?

Co ciekawiej - wraz ze wspomnianym pakietem Office w telefonie naliczyłem przynajmniej 4 miejsca, gdzie można zobaczyć informację o uaktualnieniach:

  1. menu OTA, które jest w nowością w Androidzie 2.2.1 od Samsunga
  2. ThinkFree Office
  3. Samsung Apps
  4. Market

Do dwóch pierwszych trzeba się dostać "ręcznie", w pozostałych również nie ma do końca jasnej informacji, kiedy sprawdzają coś "z automatu".

Mój komentarz: sprzedawanie "dziurawych" urządzeń jest naganne, z chęcią widziałbym jedno centralne miejsce z możliwością kliknięcia "sprawdź teraz" oraz możliwość otrzymywania aktualizacji zabezpieczeń do modułów systemowych (takich jak Wiadomości) przez kilka lat od pojawienia się konkretnej wersji Androida na rynku. I powinno to być dostarczane zapewne przez Google...

Uprawnienia aplikacji (bez roota)

Załóżmy, że chcemy pobrać aplikację np. z Marketu - po jej wybraniu otwiera się ekran, gdzie możliwe jest np. sprawdzenie, co ona będzie robić, a co nie:

Całość jest oczywiście dosyć dobrze rozpisana i zwyczajnie możemy się w tym momencie wycofać. W przedstawianym wypadku wybrałem aplikację antivirus free AVG i na wszystko mogę się zgodzić. Widoczny jest przycisk "Więcej". Klikam na nim i przechodzę do kolejnych ekranów:

Są to generalnie te same opisy, tylko inaczej przedstawione. Po co ?

Po przewinięciu do dołu można obejrzeć tekst "Pokaż wszystko". Po kliknięciu obok niego można zobaczyć:

Kolejne uprawnienia ! Ilu użytkowników dojdzie do tego momentu i dlaczego całość nie jest bardziej prosta ?

Według prezentacji z DEFCONu 18 (kolejnej konferencji "dobrych" hackerów, która odbyła się na przełomie lipca i sierpnia 2010) o nazwie "THESE AREN’T THE PERMISSIONS YOU’RE LOOKING FOR" obecnie w systemie Android możliwe jest wykonanie przez aplikację przynajmniej następujących operacji nawet pomimo braku wskazania jakichkolwiek uprawnień:

  • restart systemu
  • automatyczne uruchomienie przy starcie systemu lub od razu po zainstalowaniu
  • zablokowanie systemu (brak reakcji na naciskane klawisze)
  • pobieranie i wysyłanie danych poprzez standardową przeglądarkę (przy wyłączonym ekranie w sposób praktycznie niewidoczny dla użytkownika)

W tej samej przezentacji podano również, jak z użyciem uprawnienia "czytaj pliki dziennika systemu" (READ_LOGS) można uzyskać dostęp do przynajmniej części SMSów czy danych lokalizacyjnych. Podane zostały odpowiednie przykłady...

Z uruchamianiem aplikacji przy starcie można "walczyć" (różnymi metodami - np. "zabijać" procesy co robi przykładowo Startup Cleaner 2.0) ale co z pozostałymi uprawnieniami ?

Mój komentarz: najsłabszym ogniwem jest tutaj sam użytkownik (kto z nas czyta podobne listy ?), nie do końca jest on jednak "winien" i wypadałoby zmienić sposób informowania o tym co aplikacje robią (a może dodatkowo dać możliwość wyłączania niektórych uprawnień).

Uprawnienia aplikacji (z rootem)

Interesujący temat w przypadku Androida to uzyskiwanie tzw. roota czyli dostępu do konta administratora. Przyczyn robienia tego jest wiele - np. poprawianie błędów obecnych w oficjalnych wydaniach czy też pełne wykorzystanie możliwości sprzętu.

Żeby nie być gołosłownym - niedawno pisałem, że we Froyo "naciśnięcie klawisza Back + Home na dowolnym ekranie robi zrzut ekranu...". Udało mi się znaleźć dwa miejsca gdzie tak nie jest - Market (w momencie pokazania uprawnień aplikacji) oraz menu do uaktualnień OTA ("Menu -> Ustawienia -> O telefonie -> Aktualizacje systemu"). I co się wtedy okazuje ? Że w Markecie aplikacje są, ale wymagają właśnie roota.

Jak go uzyskać ? Kolejne wydania systemu opierają się na określonych wersjach jądra linuxowego, a te mają swoje błędy. Do tego wykorzystywanie określonych błędów w użytych wersjach bibliotek, itd.

W przeszłości gotowe programy (które to robiły dosłownie jednym kliknięciem) można było znaleźć nawet w Markecie, obecnie Google usuwa je jeden po drugim. Od strony technicznej - proponowane obecnie metody uzyskiwania roota w Galaxy S to wgrywanie zmodyfikowanego jądra (CF-Root) i wykorzystywanie rootkita (według Kasperskiego Exploit.Linux.Lotoor.g) na błąd w aplikacji adb (SuperOneClick). Moim zdaniem dziecko zostało znów wylane z kąpielą - wcześniej wystarczyło po prostu sobie skompilować niezbędne programy takie jak su i je zwyczajnie wgrać do tego telefonu (tzw. recovery w wersji 2e pozwalało na dodawanie niepodpisanych cyfrowo aplikacji).

Niezależnie od tego - większość obecnych rozwiązań pozwala wybrać, którym aplikacjom przydzielić "superuprawnienia". Tylko, że one same nie są niczym kontrolowane...a ponieważ programy "antywirusowe" na Androida podobnych uprawnień raczej nie mają (przynajmniej wszystko na to wskazuje), więc chyba i ich skuteczność nie może być pełna (jeśli jednak chcemy ich używać, to proszę bardzo - w Markecie jest np. produkcja znanej firmy AVG).

Żeby mieć jasność - na konferencji DEFCON 18 pokazana była prezentacja "This is not the droid you're looking for...". Według niej możliwe jest przygotowanie rootkitów (podany został odpowiedni przykład dla urządzeń HTC), które będą niewidoczne i pozwolą np. wysłać SMSy czy dane lokalizacyjne po zadzwonieniu na odpowiedni numer. Zagrożenie jest dosyć realne...

Mój komentarz: najsłabsze ogniwo to znów człowiek (użytkownik, który zgadza się na przekazanie telefonu w ręce niewiadomego oprogramowania). Z drugiej strony - czym różnią się obecne "smartphony" od komputerów biurkowych ? Dlaczego więc tak usilnie promowany jest inny model biznesowy, tj. sprzedawanie urządzeń blokowanych na wszelkie możliwe sposoby ? Może czas z tym skończyć ?

Zawsze online ?

Tego typu urządzenia są tworzone po to, aby były ciągle połączone z Internetem czy to przez sieć komórkową czy przez Wifi. Jest to wygoda, ale okazuje się, że warto od czasu do czasu wyłączać wszystkie połączenia - nie tylko ze względów bezpieczeństwa, ale też z uwagi na oszczędność baterii.

"Goły" Android w wersji 2.2.1 ma podstawowe opcje do tego - przycisk Wifi jest na ekranie powiadomienia, można też wyłączać Wifi przy wygaszaniu ekranu (wchodzimy w  "Menu -> Ustawienia -> Komunikacja -> Ustawienia Wifi", klikamy na "Zaawansowane" i przestawiamy "Zasady trybu uśpienia Wi-Fi na "Gdy ekran zgaśnie"), podobnie np. pod klawiszem wyłącznika dostępna jest opcja "Tryb sieci danych".

Ta ostatnia powiedziałbym jest trochę zbyt dosłowna - przynajmniej w testowanym Galaxy S wyłączała mi również MMSy (które miały swój punkt dostępowy typu MMS). Z tego powodu do deaktywacji transmisji danych bardziej poleciłbym androidowego "klasyka", czyli APNdroid z Marketu:

A gdybyśmy chcieli włączać Wifi co jakiś czas ? W Markecie można znaleźć kilka programów (np. Service Manager), mnie udało mi się zmusić do współpracy z Galaxy jedynie NetSchedule (który potrafi także np. ustawiać stan Bluetooth).

Ale telefon to również SMS i MMS - obsługują je aplikacje systemowe, a jak te są uaktualniane już pisałem wcześniej. Dla ciekawych - również robocik zawierał tutaj błędy. Potwierdza to np. prezentacja "Attacking SMS" z konferencji BlackHat z 2009 (dotyczy ona wersji 1.5 i wcześniejszych).

Nowe telefony mają także opcje udostępniania Internetu przez Wifi (działają jak punkt dostępowy). Innowacyjną funkcją moim zdaniem byłoby tutaj ustawianie mocy sygnału (pomarzyć zawsze wolno ;)). Podobną opcję bym zresztą widział w przypadku Wifi (zapewne pomogłoby to w oszczędzaniu energii).

Mój komentarz: jest naprawdę nieźle, miłym dodatkiem byłby natomiast systemowy scheduler do wszystkiego (profili, transmisji danych, uruchamiania aplikacji, ustalania co ile mają się synchronizować, itd.). No chyba że taki już istnieje... ;)

A może murek ?

Kolejny problem - Android domyślnie nie ma nawet najprostszego firewalla (mówiąc inaczej nikt nie kontroluje gdzie aplikacje się łączą). Jak to rozwiązać ?

W Markecie mamy program DroidWall, który pozwala włączyć lub wyłączyć ruch sieciowy w ustawionych przez nas programach (odpowiednio dla Wifi i sieci komórkowej). Mamy tutaj białą lub czarną listę (przy pierwszej pozwalamy na "wyklikany" ruch, przy drugiej blokujemy zaznaczone regułki).

Gdzie tu jest haczyk ? Aplikacja wymaga roota (cóż za ironia - aplikacja zabezpieczająca wymaga złamania zabezpieczeń ;)) i może nie działać na tych telefonach, w których jądro nie ma skompilowanego wsparcia dla iptables. Do tego brakuje ustawiania konkretnych reguł.

Jeśli wystarczy nam obejrzenie tego, gdzie jesteśmy podłączeni, to polecam np. program OS Monitor. Pokaże on jasno dane o procesach, interfejsach sieciowych, nawiązanych połączeniach właśnie i wiele innych.

Mój komentarz: jeśli weźmiemy pod uwagę problemy z aktualizacjami, firewall byłby niezbędny... Inna sprawa, że dobra aplikacja tego typu pewnie wyłączałaby reklamy (takie działania są już widoczne - przykładem niech będzie Adfree z Marketu, który też wymaga roota) i możemy się tego długo nie doczekać...

Marketowe problemy

Domyślny sklep Androida ma również swoje wzloty i porażki.

Pierwszy problem - występuje regionalizacja i użytkownicy starają się ją omijać (wymaga to roota, a ten może się wiązać z wcześniej opisanymi kwestiami).

I kolejny - obecnie można zwrócić płatną aplikację w ciągu 15 minut, programy mogą mieć 50 MB i brakuje mechanizmów do sprawdzania kompatybilności programu z modelem urządzenia. Niektóre aplikacje starają się "obejść" problem wielkości i po zainstalowaniu wpierw pobierają dodatkowe materiały (czasem wiele MB). Nie muszę mówić, co mogą robić niektórzy użytkownicy, którzy kupią ileś takich programów i nie będą mogli z nich korzystać (albo powiem - mogą zacząć korzystać z wersji "z witaminkami" i innymi "niepodziankami").

Mój komentarz: tym razem problem jest w mentalności użytkowników i sposobie tworzenia niektórych programów (przecież po zainstalowaniu wpierw mogłyby informować o braku ich zgodności z konkretnym modelem).

Podsumowanie

Urządzenia mobilne będą coraz bardziej interesujące dla ludzi o niekoniecznie uczciwych zamiarach, platforma Android rozwija się chyba najbardziej dynamicznie (według Gartnera - 25,5% w 3 kwartale 2010 wobec 3,5% w 3 kwartale 2009).

Zgodnie z tym co niedawno pisałem "w porównaniu do innych rozwiązań na rynku takich jak Symbian jest naprawdę dobrze, brakuje drobiazgów" (jeśli chodzi o funkcjonalność).

Czy tak samo jest z bezpieczeństwem ? Pewnych tematów celowo nie poruszałem (np. lokalizacja telefonu czy robienie z niego zdjęć po jego skradzeniu), ogólnie natomiast myślę, że jest nieźle (ale niestety nie do końca). Po prostu - nawet pomimo korzystania tylko z oficjalnego Marketu i nie rootowania telefonu można mieć problemy i wynika to z pewnych ułomności platformy.

Z drugiej strony - możliwość opublikowania naszych SMSów/MMSów, zdjęć (z obowiązkowym adresem), listy telefonów, danych z kalendarza, haseł (przypomnę - w wielu bankach hasła jednorazowe są obecnie przesyłane SMSem), informacji o tym kiedy i gdzie dokładnie podróżujemy i wielu innych danych nie jest powodem do ŻADNEGO niepokoju, prawda ?

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.