Udoskonalenia zabezpieczeń

Android stale ulepsza swoje możliwości i ofertę w zakresie bezpieczeństwa. Zobacz listę ulepszeń według wersji w lewym panelu nawigacyjnym.

Androida 14

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 14:

  • Wspomagany sprzętowo AddressSanitizer (HWASan), wprowadzony w systemie Android 10, to narzędzie do wykrywania błędów pamięci podobne do AddressSanitizer . Android 14 wprowadza znaczące ulepszenia do HWASan. Dowiedz się, jak pomaga zapobiegać przedostawaniu się błędów do wersji Androida, HWAddressSanitizer
  • W systemie Android 14, począwszy od aplikacji udostępniających dane o lokalizacji stronom trzecim, okno dialogowe uprawnień do działania systemu zawiera teraz klikalną sekcję, która podkreśla praktyki udostępniania danych przez aplikację, w tym informacje, np. dlaczego aplikacja może zdecydować się na udostępnienie danych stronom trzecim .
  • W Androidzie 12 wprowadzono opcję wyłączenia obsługi 2G na poziomie modemu, co chroni użytkowników przed nieodłącznym ryzykiem bezpieczeństwa wynikającym z przestarzałego modelu bezpieczeństwa 2G. Mając świadomość, jak krytyczne może być wyłączenie łączności 2G dla klientów korporacyjnych, w systemie Android 14 włączono tę funkcję zabezpieczeń w systemie Android Enterprise, wprowadzając obsługę dla administratorów IT w celu ograniczenia możliwości przełączania zarządzanego urządzenia na łączność 2G .
  • Dodano obsługę odrzucania połączeń komórkowych z szyfrowaniem zerowym, zapewniając, że ruch głosowy i SMS-y z komutacją łączy są zawsze szyfrowane i chronione przed pasywnym przechwytywaniem drogą radiową. Dowiedz się więcej o programie dla Androida wzmacniającym łączność komórkową .
  • Dodano obsługę wielu numerów IMEI
  • Od wersji Androida 14 preferowanym trybem szyfrowania nazw plików dla urządzeń z instrukcjami przyspieszonej kryptografii jest AES-HCTR2.
  • Łączność komórkowa
  • Dodano dokumentację dla Centrum bezpieczeństwa Androida
  • Jeśli Twoja aplikacja jest przeznaczona dla systemu Android 14 i korzysta z dynamicznego ładowania kodu (DCL), wszystkie dynamicznie ładowane pliki muszą być oznaczone jako tylko do odczytu. W przeciwnym razie system zgłasza wyjątek. Zalecamy, aby aplikacje unikały dynamicznego ładowania kodu, gdy tylko jest to możliwe, ponieważ znacznie zwiększa to ryzyko, że aplikacja może zostać naruszona w wyniku wstrzyknięcia kodu lub modyfikacji kodu.

Sprawdź nasze pełne informacje o wersji AOSP oraz listę funkcji i zmian dla programistów Androida.

Androida 13

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 13:

  • W Androidzie 13 dodano obsługę prezentacji wielu dokumentów. Ten nowy interfejs sesji prezentacji umożliwia aplikacji tworzenie prezentacji składających się z wielu dokumentów, co nie jest możliwe w przypadku istniejącego interfejsu API. Aby uzyskać więcej informacji, zobacz Poświadczenie tożsamości
  • W systemie Android 13 intencje pochodzące z aplikacji zewnętrznych są dostarczane do eksportowanego komponentu wtedy i tylko wtedy, gdy intencje odpowiadają zadeklarowanym elementom filtra intencji.
  • Open Mobile API (OMAPI) to standardowy interfejs API używany do komunikacji z bezpiecznym elementem urządzenia. Przed Androidem 13 dostęp do tego interfejsu miały tylko aplikacje i moduły frameworku. Konwertując go na stabilny interfejs dostawcy, moduły HAL mogą również komunikować się z bezpiecznymi elementami za pośrednictwem usługi OMAPI. Aby uzyskać więcej informacji, zobacz temat Stabilny interfejs dostawcy OMAPI .
  • Począwszy od Androida 13-QPR, współdzielone identyfikatory UID są przestarzałe. Użytkownicy Androida 13 lub nowszego powinni umieścić w swoim manifeście wiersz „android:sharedUserMaxSdkVersion="32"`. Ten wpis uniemożliwia nowym użytkownikom uzyskanie współdzielonego UID. Aby uzyskać więcej informacji na temat identyfikatorów UID, zobacz Podpisywanie aplikacji .
  • Do systemu Android 13 dodano obsługę symetrycznych prymitywów kryptograficznych magazynu kluczy, takich jak AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) i asymetrycznych algorytmów kryptograficznych (w tym Elliptic Curve, RSA2048, RSA4096 i Curve 25519)
  • Android 13 (poziom interfejsu API 33) i nowsze obsługują uprawnienia wykonawcze umożliwiające wysyłanie niezwolnionych powiadomień z aplikacji . Daje to użytkownikom kontrolę nad tym, jakie powiadomienia o uprawnieniach widzą.
  • Dodano monit dotyczący użycia dla aplikacji żądających dostępu do wszystkich dzienników urządzenia , dając użytkownikom możliwość zezwolenia lub odmowy dostępu.
  • wprowadził Android Virtualization Framework (AVF) , który łączy różne hypervisory w ramach jednego frameworka ze standardowymi interfejsami API. Zapewnia bezpieczne i prywatne środowiska wykonawcze do wykonywania obciążeń izolowanych przez hypervisor.
  • Wprowadzono schemat podpisu APK w wersji 3.1. Wszystkie nowe rotacje klawiszy korzystające z apksigner będą domyślnie używać schematu podpisów w wersji 3.1 w celu rotacji docelowej dla Androida 13 i nowszych wersji.

Sprawdź nasze pełne informacje o wersji AOSP oraz listę funkcji i zmian dla programistów Androida.

Androida 12

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 12:

  • W systemie Android 12 wprowadzono interfejs API BiometricManager.Strings , który udostępnia zlokalizowane ciągi znaków dla aplikacji korzystających z narzędzia BiometricPrompt do uwierzytelniania. Te ciągi mają uwzględniać urządzenie i zapewniać większą szczegółowość tego, jakie typy uwierzytelniania mogą być używane. Android 12 obsługuje także czujniki odcisków palców pod wyświetlaczem
  • Dodano obsługę czujników odcisków palców pod wyświetlaczem
  • Wprowadzenie języka definicji interfejsu Fingerprint Android (AIDL)
  • Wsparcie dla nowego Face AIDL
  • Wprowadzenie Rusta jako języka do tworzenia platform
  • Dodano opcję udzielania użytkownikom dostępu tylko do ich przybliżonej lokalizacji
  • Dodano wskaźniki prywatności na pasku stanu, gdy aplikacja korzysta z kamery lub mikrofonu
  • Prywatny rdzeń obliczeniowy Androida (PCC)
  • Dodano opcję wyłączenia obsługi 2G

Androida 11

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Aby zapoznać się z listą niektórych głównych ulepszeń zabezpieczeń dostępnych w systemie Android 11, zobacz Informacje o wersji systemu Android .

Androida 10

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Android 10 zawiera kilka ulepszeń związanych z bezpieczeństwem i prywatnością. Pełną listę zmian w Androidzie 10 znajdziesz w informacjach o wersji Androida 10.

Bezpieczeństwo

BoundsSanitizer

Android 10 wdraża BoundsSanitizer (BoundSan) w technologii Bluetooth i kodekach. BoundSan używa środka dezynfekującego UBSan. To ograniczenie jest włączone na poziomie poszczególnych modułów. Pomaga chronić krytyczne komponenty Androida i nie należy go wyłączać. BoundSan jest włączony w następujących kodekach:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Pamięć tylko do wykonywania

Domyślnie sekcje kodu wykonywalnego dla plików binarnych systemu AArch64 są oznaczone jako przeznaczone tylko do wykonania (nieczytelne) w celu zabezpieczenia przed atakami polegającymi na ponownym użyciu kodu just-in-time. Kod, który łączy dane i kod oraz kod, który celowo sprawdza te sekcje (bez uprzedniego ponownego mapowania segmentów pamięci jako czytelne) już nie działa. Na aplikacje z docelowym zestawem SDK systemu Android 10 (poziom interfejsu API 29 lub nowszy) wpływa próba odczytania przez aplikację sekcji kodu bibliotek systemowych obsługujących pamięć wykonywalną (XOM) w pamięci bez uprzedniego oznaczenia sekcji jako czytelnej.

Rozszerzony dostęp

Agenci zaufania, czyli podstawowy mechanizm używany przez trzeciorzędne mechanizmy uwierzytelniania, takie jak Smart Lock, mogą przedłużyć odblokowanie tylko w systemie Android 10. Agenci zaufania nie mogą już odblokowywać zablokowanego urządzenia i mogą pozostawić urządzenie odblokowane tylko przez maksymalnie cztery godziny.

Uwierzytelnianie twarzą

Uwierzytelnianie twarzą pozwala użytkownikom odblokować urządzenie, po prostu patrząc na przód urządzenia. W systemie Android 10 dodano obsługę nowego stosu uwierzytelniania za pomocą twarzy, który może bezpiecznie przetwarzać klatki z kamer, zachowując bezpieczeństwo i prywatność podczas uwierzytelniania za pomocą twarzy na obsługiwanym sprzęcie. Android 10 zapewnia także łatwy sposób implementacji zgodnych z bezpieczeństwem, umożliwiający integrację aplikacji do transakcji, takich jak bankowość internetowa lub inne usługi.

Oczyszczanie przepełnienia liczb całkowitych

Android 10 umożliwia oczyszczanie przepełnienia liczb całkowitych (IntSan) w kodekach programowych. Upewnij się, że wydajność odtwarzania jest akceptowalna dla wszystkich kodeków, które nie są obsługiwane przez sprzęt urządzenia. IntSan jest włączony w następujących kodekach:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Elementy systemu modułowego

Android 10 modularyzuje niektóre komponenty systemu Android i umożliwia ich aktualizację poza normalnym cyklem wydawniczym Androida. Niektóre moduły obejmują:

OEMCrypto

Android 10 korzysta z API OEMCrypto w wersji 15.

Scudo

Scudo to dynamiczny alokator pamięci w trybie użytkownika, zaprojektowany tak, aby był bardziej odporny na luki związane ze stertą. Zapewnia standardowe prymitywy alokacji i dezalokacji C, a także prymitywy C++.

ShadowCallStack

ShadowCallStack (SCS) to tryb instrumentacji LLVM , który chroni przed nadpisywaniem adresów zwrotnych (np. przepełnieniem bufora stosu) poprzez zapisywanie adresu zwrotnego funkcji w oddzielnie przydzielonej instancji ShadowCallStack w prologu funkcji funkcji innych niż liść i ładowanie adresu zwrotnego z instancji ShadowCallStack w epilog funkcji.

WPA3 i Wi-Fi Enhanced Open

W systemie Android 10 dodano obsługę standardów bezpieczeństwa Wi-Fi Protected Access 3 (WPA3) i Wi-Fi Enhanced Open, aby zapewnić lepszą prywatność i odporność na znane ataki.

Prywatność

Dostęp do aplikacji w przypadku systemu Android 9 lub starszego

Jeśli Twoja aplikacja działa na Androidzie 10 lub nowszym, ale jest przeznaczona na Androida 9 (poziom API 28) lub niższy, platforma stosuje następujące zachowanie:

  • Jeśli Twoja aplikacja zadeklaruje element <uses-permission> dla ACCESS_FINE_LOCATION lub ACCESS_COARSE_LOCATION , system automatycznie doda element <uses-permission> dla ACCESS_BACKGROUND_LOCATION podczas instalacji.
  • Jeśli Twoja aplikacja żąda ACCESS_FINE_LOCATION lub ACCESS_COARSE_LOCATION , system automatycznie dodaje ACCESS_BACKGROUND_LOCATION do żądania.

Ograniczenia aktywności w tle

Począwszy od Androida 10, system nakłada ograniczenia na uruchamianie czynności w tle . Ta zmiana zachowania pomaga zminimalizować zakłócenia dla użytkownika i zapewnia mu większą kontrolę nad tym, co jest wyświetlane na jego ekranie. Jeśli Twoja aplikacja rozpoczyna działania bezpośrednio w wyniku interakcji użytkownika, te ograniczenia najprawdopodobniej nie mają na nią wpływu.
Aby dowiedzieć się więcej na temat zalecanej alternatywy dla uruchamiania działań w tle, zapoznaj się z przewodnikiem dotyczącym ostrzegania użytkowników o zdarzeniach w Twojej aplikacji, w których liczy się czas .

Metadane aparatu

Android 10 zmienia zakres informacji, które domyślnie zwraca metoda getCameraCharacteristics() . W szczególności Twoja aplikacja musi mieć uprawnienia CAMERA , aby uzyskać dostęp do metadanych potencjalnie specyficznych dla urządzenia, które są uwzględnione w wartości zwracanej przez tę metodę.
Aby dowiedzieć się więcej o tych zmianach, zapoznaj się z sekcją dotyczącą pól kamer wymagających uprawnień .

Dane schowka

Jeśli Twoja aplikacja nie jest domyślnym edytorem metod wprowadzania (IME) lub jest aplikacją, na której aktualnie się skupia, nie może ona uzyskać dostępu do danych w schowku w systemie Android 10 lub nowszym.

Lokalizacja urządzenia

Aby zapewnić dodatkową kontrolę użytkowników nad dostępem aplikacji do informacji o lokalizacji, w systemie Android 10 wprowadzono uprawnienie ACCESS_BACKGROUND_LOCATION .
W przeciwieństwie do uprawnień ACCESS_FINE_LOCATION i ACCESS_COARSE_LOCATION , uprawnienie ACCESS_BACKGROUND_LOCATION wpływa tylko na dostęp aplikacji do lokalizacji, gdy działa ona w tle. Uznaje się, że aplikacja uzyskuje dostęp do lokalizacji w tle, chyba że spełniony jest jeden z następujących warunków:

  • Widoczna jest aktywność należąca do aplikacji.
  • W aplikacji działa usługa na pierwszym planie, która zadeklarowała locationtypu usługi na pierwszym planie .
    Aby zadeklarować typ usługi pierwszego planu dla usługi w aplikacji, ustaw targetSdkVersion lub compileSdkVersion aplikacji na wartość 29 lub wyższą. Dowiedz się więcej o tym, jak usługi na pierwszym planie mogą kontynuować działania inicjowane przez użytkownika , które wymagają dostępu do lokalizacji.

Dysk zewnętrzny

Domyślnie aplikacje przeznaczone na Androida 10 i nowsze mają ograniczony dostęp do pamięci zewnętrznej . Takie aplikacje mogą wyświetlać następujące typy plików na zewnętrznym urządzeniu pamięci masowej bez konieczności proszenia użytkownika o uprawnienia związane z pamięcią masową:

Aby dowiedzieć się więcej o magazynie o ograniczonym zakresie, a także o tym, jak udostępniać, otwierać i modyfikować pliki zapisane na zewnętrznych urządzeniach pamięci masowej, zapoznaj się z przewodnikami dotyczącymi zarządzania plikami w pamięci zewnętrznej oraz uzyskiwania dostępu do plików multimedialnych i modyfikowania ich .

Randomizacja adresów MAC

Na urządzeniach z systemem Android 10 lub nowszym system domyślnie przesyła losowe adresy MAC.
Jeśli Twoja aplikacja obsługuje przypadek użycia korporacyjnego , platforma udostępnia interfejsy API do kilku operacji związanych z adresami MAC:

  • Uzyskaj losowy adres MAC : aplikacje właścicieli urządzeń i aplikacje właścicieli profili mogą pobrać losowy adres MAC przypisany do określonej sieci, wywołując funkcję getRandomizedMacAddress() .
  • Uzyskaj rzeczywisty, fabryczny adres MAC: aplikacje właściciela urządzenia mogą pobrać rzeczywisty sprzętowy adres MAC urządzenia, wywołując funkcję getWifiMacAddress() . Ta metoda jest przydatna do śledzenia flot urządzeń.

Nieresetowalne identyfikatory urządzeń

Począwszy od Androida 10, aplikacje muszą mieć uprzywilejowane uprawnienia READ_PRIVILEGED_PHONE_STATE , aby uzyskać dostęp do nieresetowalnych identyfikatorów urządzenia, które obejmują zarówno numer IMEI, jak i numer seryjny.

Jeśli Twoja aplikacja nie ma uprawnień, a mimo to spróbujesz poprosić o informacje o identyfikatorach, których nie można zresetować, odpowiedź platformy będzie się różnić w zależności od docelowej wersji pakietu SDK:

  • Jeśli Twoja aplikacja jest przeznaczona dla systemu Android 10 lub nowszego, wystąpi wyjątek SecurityException .
  • Jeśli Twoja aplikacja jest przeznaczona dla systemu Android 9 (poziom API 28) lub starszego, metoda zwraca dane null lub dane zastępcze, jeśli aplikacja ma uprawnienie READ_PHONE_STATE . W przeciwnym razie wystąpi wyjątek SecurityException .

Rozpoznawanie aktywności fizycznej

W Androidzie 10 wprowadzono uprawnienia wykonawcze android.permission.ACTIVITY_RECOGNITION dla aplikacji, które muszą wykrywać liczbę kroków użytkownika lub klasyfikować jego aktywność fizyczną, np. chodzenie, jazdę na rowerze czy poruszanie się pojazdem. Ma to na celu umożliwienie użytkownikom wglądu w sposób wykorzystania danych z czujników urządzenia w Ustawieniach.
Niektóre biblioteki Usług Google Play, takie jak Activity Recognition API i Google Fit API , nie udostępniają wyników, chyba że użytkownik udzielił Twojej aplikacji odpowiednich uprawnień.
Jedynymi czujnikami wbudowanymi w urządzenie, które wymagają zadeklarowania tego uprawnienia, są czujniki licznika kroków i detektora kroków .
Jeśli Twoja aplikacja jest przeznaczona dla systemu Android 9 (poziom API 28) lub starszego, system automatycznie przyznaje jej uprawnienie android.permission.ACTIVITY_RECOGNITION w razie potrzeby, jeśli aplikacja spełnia każdy z następujących warunków:

  • Plik manifestu zawiera uprawnienie com.google.android.gms.permission.ACTIVITY_RECOGNITION .
  • Plik manifestu nie zawiera uprawnienia android.permission.ACTIVITY_RECOGNITION .

Jeśli system-auto przyzna uprawnienie android.permission.ACTIVITY_RECOGNITION , Twoja aplikacja zachowa to pozwolenie po zaktualizowaniu aplikacji do systemu Android 10. Użytkownik może jednak w dowolnym momencie odwołać to uprawnienie w ustawieniach systemu.

Ograniczenia systemu plików /proc/net

Na urządzeniach z Androidem 10 lub nowszym aplikacje nie mogą uzyskać dostępu do /proc/net , który zawiera informacje o stanie sieci urządzenia. Aplikacje wymagające dostępu do tych informacji, takie jak sieci VPN, powinny używać klasy NetworkStatsManager lub ConnectivityManager .

Grupy uprawnień usunięte z interfejsu użytkownika

Począwszy od Androida 10, aplikacje nie mogą sprawdzać, w jaki sposób uprawnienia są pogrupowane w interfejsie użytkownika.

Usunięcie powinowactwa kontaktów

Począwszy od Androida 10, platforma nie śledzi informacji o pokrewieństwie kontaktów. W rezultacie, jeśli Twoja aplikacja przeszukuje kontakty użytkownika, wyniki nie są uporządkowane według częstotliwości interakcji.
Przewodnik po ContactsProvider zawiera informację opisującą konkretne pola i metody, które są przestarzałe na wszystkich urządzeniach, począwszy od Androida 10.

Ograniczony dostęp do zawartości ekranu

Aby chronić zawartość ekranu użytkownika, Android 10 uniemożliwia cichy dostęp do zawartości ekranu urządzenia, zmieniając zakres uprawnień READ_FRAME_BUFFER , CAPTURE_VIDEO_OUTPUT i CAPTURE_SECURE_VIDEO_OUTPUT . Począwszy od Androida 10, te uprawnienia obejmują dostęp tylko na podstawie podpisu .
Aplikacje, które muszą uzyskać dostęp do zawartości ekranu urządzenia, powinny korzystać z interfejsu API MediaProjection , który wyświetla monit z prośbą o wyrażenie przez użytkownika zgody.

Numer seryjny urządzenia USB

Jeśli Twoja aplikacja jest przeznaczona dla systemu Android 10 lub nowszego, nie może odczytać numeru seryjnego, dopóki użytkownik nie udzieli Twojej aplikacji pozwolenia na dostęp do urządzenia USB lub akcesorium.
Aby dowiedzieć się więcej na temat pracy z urządzeniami USB, zapoznaj się z przewodnikiem dotyczącym konfiguracji hostów USB .

Wi-Fi

Aplikacje przeznaczone dla Androida 10 lub nowszego nie mogą włączać ani wyłączać Wi-Fi. Metoda WifiManager.setWifiEnabled() zawsze zwraca false .
Jeśli chcesz poprosić użytkowników o włączenie lub wyłączenie Wi-Fi, użyj panelu ustawień .

Ograniczenia bezpośredniego dostępu do skonfigurowanych sieci Wi-Fi

Aby chronić prywatność użytkowników, ręczna konfiguracja listy sieci Wi-Fi jest ograniczona do aplikacji systemowych i kontrolerów zasad urządzeń (DPC) . Dany DPC może być właścicielem urządzenia lub właścicielem profilu.
Jeśli Twoja aplikacja jest przeznaczona dla Androida 10 lub nowszego i nie jest aplikacją systemową ani DPC, poniższe metody nie zwracają przydatnych danych:

Androida 9

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Aby zapoznać się z listą niektórych głównych ulepszeń zabezpieczeń dostępnych w systemie Android 9, zobacz Informacje o wersji systemu Android .

Androida 8

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 8.0:

  • Szyfrowanie . Dodano obsługę klucza eksmisji w profilu do pracy.
  • Zweryfikowany rozruch . Dodano zweryfikowany rozruch Androida (AVB). Zweryfikowana baza kodu rozruchowego obsługująca ochronę przed wycofaniem do użytku w programach ładujących dodanych do AOSP. Zalecamy obsługę bootloadera w celu ochrony przed wycofywaniem zmian dla HLOS. Polecane programy ładujące można odblokować tylko przez fizyczną interakcję użytkownika z urządzeniem.
  • Zablokuj ekran . Dodano obsługę używania sprzętu odpornego na manipulacje w celu weryfikacji poświadczeń ekranu blokady.
  • Magazyn kluczy . Wymagany certyfikat klucza dla wszystkich urządzeń dostarczanych z systemem Android 8.0+. Dodano obsługę poświadczania tożsamości , aby poprawić rejestrację Zero Touch.
  • Piaskownica . Dokładniej piaskownica dla wielu komponentów przy użyciu standardowego interfejsu Project Treble między frameworkiem a komponentami specyficznymi dla urządzenia. Zastosowano filtrowanie seccomp do wszystkich niezaufanych aplikacji, aby zmniejszyć powierzchnię ataku jądra. WebView działa teraz w izolowanym procesie z bardzo ograniczonym dostępem do reszty systemu.
  • Hartowanie jądra . Zaimplementowano hardened usercopy , emulację PAN, tylko do odczytu po init i KASLR.
  • Hartowanie przestrzeni użytkownika . Wdrożony CFI dla stosu mediów. Nakładki aplikacji nie mogą już zakrywać okien krytycznych dla systemu, a użytkownicy mają możliwość ich odrzucenia.
  • Aktualizacja systemu operacyjnego do przesyłania strumieniowego . Włączone aktualizacje na urządzeniach, które mają mało miejsca na dysku.
  • Zainstaluj nieznane aplikacje . Użytkownicy muszą przyznać uprawnienia do instalowania aplikacji ze źródła, które nie jest własnym sklepem z aplikacjami.
  • Prywatność . Identyfikator Androida (SSAID) ma inną wartość dla każdej aplikacji i każdego użytkownika na urządzeniu. W przypadku aplikacji przeglądarki internetowej Widevine Client ID zwraca inną wartość dla każdej nazwy pakietu aplikacji i źródła internetowego. net.hostname jest teraz pusty, a klient dhcp nie wysyła już nazwy hosta. android.os.Build.SERIAL został zastąpiony przez API Build.SERIAL , które jest chronione za zezwoleniem kontrolowanym przez użytkownika. Ulepszona randomizacja adresów MAC w niektórych chipsetach.

Androida 7

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 7.0:

  • Szyfrowanie oparte na plikach . Szyfrowanie na poziomie plików, zamiast szyfrowania całego obszaru pamięci jako pojedynczej jednostki, lepiej izoluje i chroni poszczególnych użytkowników i profile (takie jak osobiste i służbowe) na urządzeniu.
  • Bezpośredni rozruch . Dzięki szyfrowaniu opartemu na plikach funkcja Direct Boot umożliwia uruchamianie niektórych aplikacji, takich jak budzik i funkcje ułatwień dostępu, gdy urządzenie jest włączone, ale nie jest odblokowane.
  • Zweryfikowany rozruch . Zweryfikowany rozruch jest teraz ściśle egzekwowany, aby zapobiec uruchamianiu zhakowanych urządzeń; obsługuje korekcję błędów w celu poprawy niezawodności przed uszkodzeniem danych niezłośliwych.
  • SELinuksa . Zaktualizowana konfiguracja SELinux i zwiększone pokrycie seccomp dodatkowo blokuje piaskownicę aplikacji i zmniejsza powierzchnię ataku.
  • Randomizacja kolejności ładowania biblioteki i ulepszony ASLR . Zwiększona losowość sprawia, że ​​niektóre ataki polegające na ponownym użyciu kodu są mniej niezawodne.
  • Hartowanie jądra . Dodano dodatkową ochronę pamięci dla nowszych jąder poprzez oznaczenie części pamięci jądra jako tylko do odczytu, ograniczenie dostępu jądra do adresów przestrzeni użytkownika i dalsze zmniejszenie istniejącej powierzchni ataku.
  • Schemat podpisu APK v2 . Wprowadzono schemat podpisu całego pliku, który poprawia szybkość weryfikacji i wzmacnia gwarancje integralności.
  • Zaufany sklep CA . Aby ułatwić aplikacjom kontrolowanie dostępu do ich bezpiecznego ruchu sieciowego, urzędy certyfikacji instalowane przez użytkowników i te instalowane za pośrednictwem interfejsów API administratora urządzeń nie są już domyślnie zaufane w przypadku aplikacji przeznaczonych na interfejs API na poziomie 24+. Ponadto wszystkie nowe urządzenia z systemem Android muszą być dostarczane z tym samym zaufanym sklepem CA.
  • Konfiguracja zabezpieczeń sieci . Skonfiguruj zabezpieczenia sieci i TLS za pomocą deklaratywnego pliku konfiguracyjnego.

Androida 6

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 6.0:

  • Uprawnienia wykonawcze . Aplikacje żądają uprawnień w czasie wykonywania, zamiast otrzymywać je w czasie instalacji aplikacji. Użytkownicy mogą włączać i wyłączać uprawnienia zarówno dla aplikacji M, jak i pre-M.
  • Zweryfikowany rozruch . Zestaw testów kryptograficznych oprogramowania systemowego jest przeprowadzany przed wykonaniem, aby upewnić się, że telefon jest sprawny od bootloadera aż do systemu operacyjnego.
  • Zabezpieczenia izolowane sprzętowo . Nowa warstwa abstrakcji sprzętu (HAL) używana przez interfejs API linii papilarnych, ekran blokady, szyfrowanie urządzeń i certyfikaty klienta do ochrony kluczy przed naruszeniem jądra i/lub lokalnymi atakami fizycznymi
  • Odciski palców . Urządzenia można teraz odblokowywać jednym dotknięciem. Deweloperzy mogą również korzystać z nowych interfejsów API, aby używać odcisków palców do blokowania i odblokowywania kluczy szyfrowania.
  • Przyjęcie karty SD . Nośniki wymienne można dostosować do urządzenia i rozszerzyć dostępną pamięć masową na lokalne dane aplikacji, zdjęcia, filmy itp., ale nadal są chronione przez szyfrowanie na poziomie blokowym.
  • Ruch w postaci zwykłego tekstu . Deweloperzy mogą używać nowego trybu StrictMode, aby upewnić się, że ich aplikacja nie używa zwykłego tekstu.
  • Hartowanie systemu . Wzmocnienie systemu poprzez polityki narzucone przez SELinux. Zapewnia to lepszą izolację między użytkownikami, filtrowanie IOCTL, zmniejszenie zagrożenia wystawionych usług, dalsze uszczelnianie domen SELinux i bardzo ograniczony dostęp /proc.
  • Kontrola dostępu USB: Użytkownicy muszą potwierdzić, aby zezwolić na dostęp USB do plików, pamięci lub innych funkcji telefonu. Domyślnie opłata jest teraz pobierana tylko za dostęp do pamięci, który wymaga wyraźnej zgody użytkownika.

Androida 5

5,0

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń dostępnych w systemie Android 5.0:

  • Szyfrowane domyślnie. Na urządzeniach dostarczanych z L out-of-the-box szyfrowanie pełnego dysku jest domyślnie włączone, aby poprawić ochronę danych na zgubionych lub skradzionych urządzeniach. Urządzenia aktualizowane do wersji L można zaszyfrować w Ustawienia > Zabezpieczenia .
  • Ulepszone pełne szyfrowanie dysku. Hasło użytkownika jest chronione przed atakami typu brute-force za pomocą scrypt , a jeśli jest to możliwe, klucz jest powiązany ze sprzętowym magazynem kluczy, aby zapobiec atakom poza urządzeniem. Jak zawsze, sekret blokady ekranu Androida i klucz szyfrowania urządzenia nie są wysyłane poza urządzenie ani nie są udostępniane żadnej aplikacji.
  • Piaskownica Androida wzmocniona SELinux . Android wymaga teraz SELinux w trybie wymuszania dla wszystkich domen. SELinux to obowiązkowy system kontroli dostępu (MAC) w jądrze Linux używany do rozszerzenia istniejącego modelu bezpieczeństwa arbitralnej kontroli dostępu (DAC). Ta nowa warstwa zapewnia dodatkową ochronę przed potencjalnymi lukami w zabezpieczeniach.
  • Inteligentna blokada. Android zawiera teraz trustlety, które zapewniają większą elastyczność w odblokowywaniu urządzeń. Na przykład trustlety umożliwiają automatyczne odblokowywanie urządzeń, gdy znajdują się w pobliżu innego zaufanego urządzenia (przez NFC, Bluetooth) lub są używane przez osobę o zaufanej twarzy.
  • Tryby dla wielu użytkowników, z ograniczonym profilem i gościem dla telefonów i tabletów. Android obsługuje teraz wielu użytkowników telefonów i zawiera tryb gościa, którego można użyć do zapewnienia łatwego tymczasowego dostępu do urządzenia bez udzielania dostępu do danych i aplikacji.
  • Aktualizacje WebView bez OTA. WebView może być teraz aktualizowany niezależnie od frameworka i bez systemowego OTA. Pozwoli to na szybszą reakcję na potencjalne problemy z bezpieczeństwem w WebView.
  • Zaktualizowana kryptografia dla HTTPS i TLS/SSL. TLSv1.2 i TLSv1.1 są teraz włączone, preferowane jest Forward Secrecy, AES-GCM jest teraz włączone, a słabe zestawy szyfrowania (MD5, 3DES i zestawy szyfrowania eksportu) są teraz wyłączone. Zobacz https://developer.android.com/reference/javax/net/ssl/SSLSocket.html , aby uzyskać więcej informacji.
  • Usunięto obsługę konsolidatora non-PIE. Android wymaga teraz, aby wszystkie dynamicznie połączone pliki wykonywalne obsługiwały PIE (pliki wykonywalne niezależne od pozycji). Poprawia to implementację randomizacji układu przestrzeni adresowej (ASLR) systemu Android.
  • Ulepszenia FORTIFY_SOURCE. Następujące funkcje libc implementują teraz zabezpieczenia FORTIFY_SOURCE: stpcpy() , stpncpy() , read() , recvfrom() , FD_CLR() , FD_SET() i FD_ISSET() . Zapewnia to ochronę przed lukami w zabezpieczeniach pamięci związanymi z tymi funkcjami.
  • Poprawki bezpieczeństwa. Android 5.0 zawiera również poprawki dotyczące luk w zabezpieczeniach systemu Android. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w Android Open Source Project. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wcześniejszymi wersjami Androida mogą również zawierać te poprawki.

Android 4 i starsze

Każda wersja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z ulepszeń zabezpieczeń dostępnych w systemie Android 4.4:

  • Piaskownica Androida wzmocniona SELinux. Android używa teraz SELinux w trybie wymuszania. SELinux to obowiązkowy system kontroli dostępu (MAC) w jądrze Linux używany do rozszerzenia istniejącego modelu bezpieczeństwa opartego na dyskrecjonalnej kontroli dostępu (DAC). Zapewnia to dodatkową ochronę przed potencjalnymi lukami w zabezpieczeniach.
  • VPN na użytkownika. Na urządzeniach z wieloma użytkownikami sieci VPN są teraz stosowane na użytkownika. Może to umożliwić użytkownikowi kierowanie całego ruchu sieciowego przez VPN bez wpływu na innych użytkowników urządzenia.
  • Wsparcie dostawcy ECDSA w AndroidKeyStore. Android ma teraz dostawcę magazynu kluczy, który umożliwia korzystanie z algorytmów ECDSA i DSA.
  • Ostrzeżenia dotyczące monitorowania urządzeń. Android wyświetla użytkownikom ostrzeżenie, jeśli do magazynu certyfikatów urządzenia został dodany jakikolwiek certyfikat, który może umożliwić monitorowanie zaszyfrowanego ruchu sieciowego.
  • FORTIFY_SOURCE. Android obsługuje teraz FORTIFY_SOURCE poziom 2, a cały kod jest kompilowany z tymi zabezpieczeniami. FORTIFY_SOURCE zostało ulepszone do pracy z klangiem.
  • Przypinanie certyfikatu. Android 4.4 wykrywa i zapobiega używaniu fałszywych certyfikatów Google używanych w bezpiecznej komunikacji SSL/TLS.
  • Poprawki bezpieczeństwa. Android 4.4 zawiera również poprawki dotyczące luk w zabezpieczeniach systemu Android. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w Android Open Source Project. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wcześniejszymi wersjami Androida mogą również zawierać te poprawki.

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre ulepszenia zabezpieczeń dostępne w systemie Android 4.3:

  • Sandbox dla Androida wzmocniony SELinuxem. To wydanie wzmacnia piaskownicę Androida za pomocą obowiązkowego systemu kontroli dostępu (MAC) SELinux w jądrze Linuksa. Wzmocnienie SELinux jest niewidoczne dla użytkowników i programistów oraz zwiększa niezawodność istniejącego modelu bezpieczeństwa Androida, zachowując jednocześnie kompatybilność z istniejącymi aplikacjami. Aby zapewnić ciągłą kompatybilność, ta wersja umożliwia korzystanie z SELinux w trybie zezwalającym. Ten tryb rejestruje wszelkie naruszenia zasad, ale nie powoduje awarii aplikacji ani nie wpływa na zachowanie systemu.
  • Brak programów setuid/setgid. Dodano obsługę funkcji systemu plików do plików systemu Android i usunięto wszystkie programy setuid/setguid. Zmniejsza to powierzchnię ataku root i prawdopodobieństwo wystąpienia potencjalnych luk w zabezpieczeniach.
  • Uwierzytelnianie ADB. Od wersji Androida 4.2.2 połączenia z ADB są uwierzytelniane za pomocą pary kluczy RSA. Zapobiega to nieautoryzowanemu użyciu ADB, gdy osoba atakująca ma fizyczny dostęp do urządzenia.
  • Ogranicz Setuid w aplikacjach na Androida. Partycja /system jest teraz montowana jako nosuid dla procesów uruchamianych przez zygotę, uniemożliwiając aplikacjom Androida wykonywanie programów setuid. Zmniejsza to powierzchnię ataku root i prawdopodobieństwo wystąpienia potencjalnych luk w zabezpieczeniach.
  • Ograniczenie możliwości. Zygote systemu Android i ADB używają teraz prctl(PR_CAPBSET_DROP) do usuwania niepotrzebnych możliwości przed wykonaniem aplikacji. Uniemożliwia to aplikacjom na Androida i aplikacjom uruchamianym z powłoki uzyskanie uprzywilejowanych możliwości.
  • Dostawca AndroidKeyStore. Android ma teraz dostawcę magazynu kluczy, który umożliwia aplikacjom tworzenie kluczy na wyłączność. Zapewnia to aplikacjom interfejs API do tworzenia lub przechowywania kluczy prywatnych, których nie mogą używać inne aplikacje.
  • KeyChain isBoundKeyAlgorithm. Interfejs API pęku kluczy udostępnia teraz metodę (isBoundKeyType), która umożliwia aplikacjom potwierdzanie, że klucze ogólnosystemowe są powiązane ze sprzętowym źródłem zaufania urządzenia. Zapewnia to miejsce do tworzenia lub przechowywania kluczy prywatnych, których nie można wyeksportować poza urządzenie, nawet w przypadku naruszenia uprawnień administratora.
  • NO_NEW_PRIVS. Zygote Androida używa teraz prctl(PR_SET_NO_NEW_PRIVS) do blokowania dodawania nowych uprawnień przed wykonaniem kodu aplikacji. Uniemożliwia to aplikacjom Androida wykonywanie operacji, które mogą podnieść uprawnienia poprzez execve. (Wymaga to jądra Linux w wersji 3.5 lub nowszej).
  • Udoskonalenia FORTIFY_SOURCE. Włączono FORTIFY_SOURCE na Androidzie x86 i MIPS oraz wzmocniono wywołania strchr(), strrchr(), strlen() i umask(). Może to wykryć potencjalne luki w zabezpieczeniach związane z uszkodzeniem pamięci lub niezakończone stałe ciągi.
  • Zabezpieczenia relokacyjne. Włączono relokacje tylko do odczytu (relro) dla statycznie połączonych plików wykonywalnych i usunięto wszystkie relokacje tekstu w kodzie Androida. Zapewnia to dogłębną ochronę przed potencjalnymi lukami w zabezpieczeniach powodującymi uszkodzenie pamięci.
  • Ulepszony EntropyMixer. EntropyMixer zapisuje teraz entropię przy wyłączaniu/restartowaniu, oprócz okresowego miksowania. Umożliwia to zachowanie całej entropii wygenerowanej podczas włączania urządzeń i jest szczególnie przydatne w przypadku urządzeń, które są ponownie uruchamiane natychmiast po udostępnieniu.
  • Poprawki bezpieczeństwa. Android 4.3 zawiera także poprawki luk specyficznych dla Androida. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w Android Open Source Project. Aby poprawić bezpieczeństwo, niektóre urządzenia z wcześniejszymi wersjami Androida mogą również zawierać te poprawki.

System Android udostępnia wielowarstwowy model zabezpieczeń opisany w sekcji Przegląd zabezpieczeń systemu Android . Każda aktualizacja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z ulepszeń zabezpieczeń wprowadzonych w systemie Android 4.2:

  • Weryfikacja aplikacji — przed instalacją użytkownicy mogą włączyć opcję „Zweryfikuj aplikacje” i sprawdzić aplikacje przez weryfikatora aplikacji. Weryfikacja aplikacji może ostrzec użytkownika, jeśli spróbuje zainstalować aplikację, która może być szkodliwa; jeśli aplikacja jest szczególnie zła, może blokować instalację.
  • Większa kontrola nad SMS-ami premium – Android powiadomi, jeśli aplikacja spróbuje wysłać SMS-a na krótki kod, który korzysta z usług premium, co może spowodować naliczenie dodatkowych opłat. Użytkownik może wybrać, czy zezwolić aplikacji na wysyłanie wiadomości, czy ją zablokować.
  • Zawsze włączony VPN — VPN można skonfigurować tak, aby aplikacje nie miały dostępu do sieci do czasu nawiązania połączenia VPN. Uniemożliwia to aplikacjom wysyłanie danych przez inne sieci.
  • Przypinanie certyfikatów — podstawowe biblioteki systemu Android obsługują teraz przypinanie certyfikatów . Przypięte domeny otrzymają niepowodzenie weryfikacji certyfikatu, jeśli certyfikat nie zostanie połączony z zestawem oczekiwanych certyfikatów. Chroni to przed możliwym naruszeniem bezpieczeństwa urzędów certyfikacji.
  • Ulepszone wyświetlanie uprawnień Androida — uprawnienia zostały zorganizowane w grupy, które są łatwiej zrozumiałe dla użytkowników. Podczas przeglądania uprawnień użytkownik może kliknąć uprawnienie, aby wyświetlić bardziej szczegółowe informacje o uprawnieniu.
  • installd hardening — zainstalowany demon nie działa jako użytkownik root, co zmniejsza potencjalną powierzchnię ataku na eskalację uprawnień administratora.
  • Wzmacnianie skryptu startowego — skrypty startowe stosują teraz semantykę O_NOFOLLOW , aby zapobiec atakom związanym z dowiązaniem symbolicznym.
  • FORTIFY_SOURCE — Android implementuje teraz FORTIFY_SOURCE . Jest to używane przez biblioteki systemowe i aplikacje do zapobiegania uszkodzeniom pamięci.
  • Domyślna konfiguracja ContentProvider — aplikacje, które są skierowane na poziom API 17, będą miały domyślnie „eksport” ustawiony na „false” dla każdego dostawcy treści , zmniejszając domyślną powierzchnię ataku dla aplikacji.
  • Kryptografia — zmodyfikowano domyślne implementacje SecureRandom i Cipher.RSA tak, aby korzystały z OpenSSL. Dodano obsługę gniazda SSL dla TLSv1.1 i TLSv1.2 przy użyciu OpenSSL 1.0.1
  • Poprawki bezpieczeństwa — uaktualnione biblioteki open source z poprawkami bezpieczeństwa obejmują WebKit, libpng, OpenSSL i LibXML. Android 4.2 zawiera również poprawki dotyczące luk w zabezpieczeniach systemu Android. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w Android Open Source Project. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wcześniejszymi wersjami Androida mogą również zawierać te poprawki.

System Android udostępnia wielowarstwowy model zabezpieczeń opisany w sekcji Przegląd zabezpieczeń systemu Android . Każda aktualizacja Androida zawiera dziesiątki ulepszeń bezpieczeństwa, które chronią użytkowników. Oto niektóre z ulepszeń zabezpieczeń wprowadzonych w wersjach Androida od 1.5 do 4.1:

Android 1.5
  • ProPolice, aby zapobiec przepełnieniu buforu stosu (-fstack-protector)
  • safe_iop w celu zmniejszenia przepełnień liczb całkowitych
  • Rozszerzenia do OpenBSD dlmalloc w celu zapobiegania podwójnym lukom free() i atakom na konsolidację porcji. Ataki konsolidujące porcje są powszechnym sposobem wykorzystania korupcji sterty.
  • Calloc OpenBSD, aby zapobiec przepełnieniu liczb całkowitych podczas alokacji pamięci
Android 2.3
  • Zabezpieczenia przed lukami w zabezpieczeniach ciągu formatującego (-Wformat-security -Werror=format-security)
  • Sprzętowe No eXecute (NX), aby zapobiec wykonywaniu kodu na stosie i stercie
  • Linux mmap_min_addr w celu złagodzenia eskalacji uprawnień wyłuskiwania wskaźnika zerowego (dalsze ulepszone w systemie Android 4.1)
Android 4.0
Randomizacja układu przestrzeni adresowej (ASLR) w celu losowania kluczowych lokalizacji w pamięci
Android 4.1
  • Obsługa PIE (Position Independent Executable)
  • Relokacje tylko do odczytu / natychmiastowe wiązanie (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict włączone (unikaj wycieków adresów jądra)
  • kptr_restrict włączone (unikaj wycieków adresów jądra)