Android – czy jest bezpieczny?
Android jest obecnie jednym z najpopularniejszych systemów operacyjnych na świecie, stworzonym głównie z myślą o urządzeniach mobilnych. Jego początki sięgają 2003 roku, kiedy to Andy Rubin, Rich Miner, Nick Sears i Chris White założyli firmę Android Inc., z myślą o rozwoju systemu operacyjnego dla aparatów cyfrowych. Z czasem wizja ta ewoluowała i objęła rynek urządzeń mobilnych. W 2005 roku Google przejęło Androida, co znacząco przyspieszyło i ukierunkowało jego rozwój.
System Android wywodzi się z systemu operacyjnego Linux. Pierwsza oficjalna wersja Androida pojawiła się w 2008 roku, jako system operacyjny dla telefonów komórkowych. Pierwszym telefonem z tym systemem był HTC Dream. Dzięki zastosowaniu technologii open source, Android mógł i może być modyfikowany, a także dostosowywany przez różnych producentów sprzętu oraz programistów, co z pewnością przyczyniło się do jego ogromnej popularności. Dziś Android jest jednym z najczęściej stosowanych systemów operacyjnych na świecie, znajdując zastosowanie nie tylko w smartfonach, ale także tabletach, smartwatchach, telewizorach, a nawet samochodach.
Od tamtej pory Android przeszedł imponującą ewolucję, wprowadzając liczne innowacje w zakresie funkcjonalności oraz bezpieczeństwa. Kolejne wersje systematycznie wprowadzały i zwiększały ochronę użytkownika, koncentrując się na prywatności, ochronie danych, zabezpieczeniach aplikacji, a także systemu.
Jednym z największych wyzwań stojących przed systemem jest jego otwartość i różnorodność urządzeń, na jakich może pracować. Google, jako twórca systemu, wdrożyło szereg mechanizmów mających na celu minimalizowanie zagrożeń i zapewnienie wysokiego poziomu bezpieczeństwa użytkownikom. Warto zwrócić uwagę na najważniejsze aspekty, które chronią system Android, a co za tym idzie – dane użytkowników. Poniżej przyjrzymy się najważniejszym funkcjom, które wspólnie tworzą złożony system obrony.
Zanim jednak przejdziemy dalej poniżej zamieszczę słowniczek pojęć, które pojawią się niżej:
- Autentyczność: Właściwość gwarantująca, że dane lub system pochodzą z zaufanego źródła i nie są podrobione.
- Bootloader: Oprogramowanie uruchamiane podczas startu komputera, które inicjuje system operacyjny i przekazuje mu kontrolę nad sprzętem.
- Integralność: Właściwość systemu, danych lub informacji, która zapewnia, że pozostają one nienaruszone, spójne i wolne od nieautoryzowanych zmian w trakcie przechowywania, przetwarzania lub przesyłania.
- Jądro systemu: Centralna część systemu operacyjnego zarządzająca zasobami sprzętowymi (procesor, pamięć, urządzenia) i umożliwiająca komunikację między oprogramowaniem a sprzętem.
- Linux: System operacyjny oparty na otwartoźródłowym jądrze Linux, używany w komputerach, serwerach, urządzeniach mobilnych i wbudowanych.
- Pamięć RAM (ang. Random-access memory): Pamięć ulotna, wykorzystywana do tymczasowego przechowywania danych i procesów w trakcie działania systemu. Po wyłączeniu urządzenia lub jego ponownym uruchomieniu znika.
- Pamięć ROM (ang. read-only memory): Pamięć tylko do odczytu, zawierająca dane systemowe i oprogramowanie potrzebne do podstawowego działania urządzenia. Jest to rodzaj trwałej pamięci komputerowej, której zawartość jest zapisana fabrycznie lub podczas programowania i nie może być modyfikowana przez użytkownika.
- Podpis kryptograficzny: Dane dodane do pliku lub komunikatu, które pozwalają na weryfikację jego autentyczności i integralności za pomocą kryptografii.
- Sandbox: Izolowane środowisko, w którym aplikacje lub procesy mogą działać bez wpływu na resztę systemu, zwiększając bezpieczeństwo.
- Unikalny identyfikator UID: Unikatowy numer przypisany użytkownikowi lub procesowi w systemie operacyjnym, służący do kontroli dostępu do danych.
- Uprawnienia aplikacji: Zestaw ograniczeń określających, do jakich zasobów systemu (np. plików, aparatu, lokalizacji) dana aplikacja ma dostęp.
- Usługa systemowa: Program lub proces działający w tle, realizujący kluczowe funkcje systemu operacyjnego, np. zarządzanie siecią czy procesami.
Wiele pojęć używanych w IT i cyberbezpieczeństwie znajdziesz w innym naszym artykule – Słowniczek – dla początkujących.
Verified Boot
Verified Boot to mechanizm zabezpieczający proces uruchamiania systemu, który weryfikuje integralność i autentyczność komponentów systemu operacyjnego za pomocą podpisów kryptograficznych. Funkcja ta pojawiła się wraz z wersją Android 4.4 KitKat, a z czasem jej funkcjonalność była i jest poszerzana. Verified Boot kontroluje każdy etap uruchamiania urządzenia, zaczynając od bootloadera czyli procesu odpowiadającego za rozruch systemu, a kończąc na uruchomieniu podstawowych aplikacji i usług systemowych. Ma to na celu wykrycie i zapobieganie jakimkolwiek nieautoryzowanym modyfikacjom.
Mechanizm ten opiera się na szeregu podpisów kryptograficznych, które sprawdzają poprawność każdej części systemu i zapewniają jego integralność oraz autentyczność. Jeśli podczas uruchamiania wykryta zostanie jakakolwiek modyfikacja, system może ostrzec użytkownika albo – w bardziej zaawansowanych wersjach – zablokować uruchomienie urządzenia, zapobiegając potencjalnym zagrożeniom.
Bezpieczeństwo zaczyna się od wciśnięcia przycisku włączenia urządzenia i składa się z następujących kroków:
- W pierwszej kolejności wczytywany jest kod znajdujący się w pamięci ROM (ang. Read Only Memory), czyli pamięci tylko do odczytu. Kod ten jest nieedytowalny i jest definiowany przez producenta urządzenia, nie stanowi on części systemu operacyjnego.
- Później uruchamiany jest program bootloader, który również nie jest jeszcze częścią systemu operacyjnego. Jego celem jest sprawdzanie podpisów kryptograficznych kluczowych komponentów i wczytanie obrazu jądra systemu (ang. kernel).
- Jądro systemu jest uruchamiane w kolejnym kroku i jest odpowiedzialne za dalszą inicjalizację sprzętu, a także zarządzanie zasobami. Kernel stanowi „serce” systemu, obsługując interakcje między sprzętem a oprogramowaniem.
- Proces init. Wykonuje on skrypty startowe, inicjalizując struktury katalogów i podstawowe usługi systemowe. Jest to etap, na którym definiowane są polityki SELinux, o których będzie mowa w dalszej części artykułu.
- Zygota i System Server. Zygota to specjalny proces, który inicjalizuje środowisko Androida, tworząc środowisko dla uruchamiania aplikacji. Zygota „klonuje” procesy dla każdej nowej aplikacji, co pozwala oszczędzać pamięć. Z kolei System Server uruchamia kluczowe usługi systemowe potrzebne do poprawnego działania urządzenia i możliwości korzystania z niego. Należą do nich między innymi:
– menedżer powiadomień
– zarządzanie siecią
– usługi lokalizacji
Piaskownica (Sandboxing)
Mobilne systemy operacyjne działają trochę inaczej niż systemy operacyjne na komputerach stacjonarnych. Na przykład w Windowsie, gdy dojdzie do dostania się złośliwego oprogramowania na komputer, może ono mieć dostęp do danych z wielu różnych programów. Natomiast Android używa mechanizmu piaskownicy. Co to oznacza? Zainstalowane aplikacje są izolowane, a to zapobiega bezpośredniemu dostępowi jednej (np. złośliwej) aplikacji do danych innych apek lub komponentów systemu. Każda aplikacja działa w oddzielnym środowisku, na co pozwala m.in. unikalny identyfikator UID przypisany do każdej z nich. Dzięki temu, jeśli jedna apka okaże się niebezpieczna, nie ma ona dostępu (lub nie powinna mieć) do danych przechowywanych przez inne aplikacje. To z kolei minimalizuje ryzyko wyrządzenia dużych szkód w systemie lub wykradzenia wszystkich danych.
Piaskownica odgrywa kluczową rolę w ochronie prywatności użytkowników, a jednocześnie ułatwia kontrolę nad tym, jakie informacje są dostępne dla danej aplikacji. Z każdym nowszym wydaniem Android zwiększa kontrolę nad uprawnieniami aplikacji i możliwością przydzielania konkretnych uprawnień.
Trusty TEE (Trusted Execution Environment)
Trusty TEE to specjalne, izolowane środowisko, które zapewnia bezpieczne wykonywanie wrażliwych operacji, takich jak przetwarzanie danych biometrycznych (np. zapisany odcisk palca), kluczy kryptograficznych, obsługi systemu płatności Google Pay czy innych informacji wymagających ochrony. TEE działa obok głównego systemu operacyjnego, oferując wyższy poziom bezpieczeństwa przez oddzielenie krytycznych danych od nieautoryzowanych aplikacji i użytkowników, zapewniając integralność oraz poufność danych.
TEE zostało wdrożone, żeby przeciwdziałać możliwości zdobycia szerokiego dostępu w razie przedostania się do systemu złośliwej aplikacji, której użytkownik np. przyzna zbyt szerokie uprawnienia lub będzie ona próbowała wykorzystać istniejącą podatność. Użytkownik nie ma możliwości instalacji żadnych aplikacji w TEE ani innej ingerencji w ten system.
SELinux
SELinux (Security-Enhanced Linux) jest rozszerzeniem jądra Androida, wprowadzonym na szeroką skalę w wersji Android 5.0. Wykorzystuje zbiór reguł dostępu, które dokładnie określają, jakie zasoby mogą być używane przez poszczególne procesy.
SELinux może działać w dwóch globalnych trybach:
- Tryb zezwalający – odmowy uprawnień są rejestrowane, ale nie wymuszane.
- Tryb wymuszania – odmowy uprawnień są rejestrowane i egzekwowane.
SELinux działa w trybie “wymuszania”, co oznacza, że blokuje wszelkie nieautoryzowane próby dostępu, a także rejestruje je. Mechanizm ten umożliwia tworzenie restrykcyjnych polityk bezpieczeństwa, które zapobiegają eskalacji uprawnień przez złośliwe oprogramowanie i chronią użytkowników przed atakami.
Google Play Protect
Google Play Protect to usługa bezpieczeństwa, która regularnie skanuje aplikacje na urządzeniu, poszukując potencjalnych zagrożeń. Każda aplikacja, zanim trafi do Sklepu Google Play przechodzi analizę pod kątem bezpieczeństwa. Google Play Protect działa również jako antywirus, monitorując aplikacje w tle i ostrzegając użytkownika o potencjalnych zagrożeniach.
Google Play Protect regularnie aktualizuje swoje bazy zagrożeń, co pozwala na szybkie wykrywanie, a także blokowanie złośliwego oprogramowania.
Aplikacje z ograniczonymi uprawnieniami
Od wersji Androida 6.0 system umożliwia użytkownikowi zarządzanie uprawnieniami aplikacji, co pozwala na precyzyjniejsze kontrolowanie dostępu do danych osobistych. Od Androida 11 wprowadzono funkcję jednorazowych uprawnień, co umożliwia udzielenie aplikacji dostępu do określonych funkcji tylko na czas jednorazowego działania.
Z każdą kolejną wersją Androida Google stara się jeszcze bardziej uszczelnić politykę uprawnień.
Aktualizacje systemu i aplikacji
Google kładzie coraz większy nacisk na regularne aktualizacje bezpieczeństwa, które są niezbędne w walce z istniejącymi i nowymi zagrożeniami, a także jednym z najważniejszych oraz najlepszych środków na utrzymanie bezpieczeństwa systemu.
Czy Android jest bezpieczny?
Android, jako system open-source, ma swoje wyzwania związane z bezpieczeństwem, zwłaszcza ze względu na jego powszechną dostępność na urządzeniach o różnych specyfikacjach. Google jednak nieustannie rozwija mechanizmy ochrony, żeby przeciwdziałać zagrożeniom. Systemy takie jak Verified Boot, piaskownica, Trusty TEE, SELinux, Google Play Protect i nie tylko sprawiają, że Android jest całkiem bezpiecznym systemem. Jeśli użytkownik sam nie doprowadzi do instalacji groźnej aplikacji lub nie udzieli dostępu osobom niepowołanym to nie powinien obawiać się korzystać ze swojego urządzenia.
W artykule omówiliśmy kwestię podstawowych zabezpieczeń, jednak warto pamiętać, że to użytkownik musi zadbać o bezpieczeństwo, czyli:
- Instalowanie aplikacji tylko z zaufanych źródeł, np. Google Play.
- Regularne pobieranie najnowszych aktualizacji oprogramowania i aplikacji.
- Zwracanie uwagi, jakich uprawnień żądają aplikacje.
- Zachowanie czujności w przypadku wyświetlenia fałszywych powiadomień i komunikatów. (Więcej o nich przeczytasz w artykułach „Twój telefon został zhakowany” Czy należy się obawiać? i „Twój telefon został zainfekowany”! Czy są powody do obaw?).
- Unikanie klikania podejrzanych linków, ponieważ mogą one prowadzić na stron próbujące zmanipulować użytkownika do pobrania niebezpiecznych aplikacji.
Producenci oprogramowania antywirusowego tworzą aplikacje pozwalające przeskanować telefon – warto rozważyć instalację takiej aplikacji.
Źródła:
- Dokumentacja systemu operacyjnego Android – https://source.android.com/docs
- Marek Rzepecki (2023). Android – bezpieczeństwo systemu i podstawy testów penetracyjnych aplikacji mobilnych. W: Michał Sajdak (red.), Wprowadzenie do bezpieczeństwa IT (s. 121 – 192). Kraków: Securitum.