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ń w Androidzie 14:

  • Wprowadzony w Androidzie 10 mechanizm HWASan (z ang. „AddressSanitizer wspomagany przez sprzęt”) to narzędzie do wykrywania błędów pamięci podobne do AddressSanitizer. Android 14 wprowadza znaczące ulepszenia do HWASan. Dowiedz się, jak zapobiega ono przedostawaniu się błędów do wersji Androida.HWAddressSanitizer
  • W Androidzie 14 w przypadku aplikacji, które udostępniają dane o lokalizacji osobom trzecim, okno uprawnień w czasie działania systemu zawiera teraz klikalną sekcję, w której wyróżniono praktyki udostępniania danych przez aplikację, w tym informacje o tym, dlaczego aplikacja może udostępniać dane innym firmom.
  • W Androidzie 12 wprowadzono opcję wyłączenia obsługi 2G na poziomie modemu, która chroni użytkowników przed niebezpieczeństwem wynikającym z nieaktualnego modelu zabezpieczeń 2G. Zdając sobie sprawę, jak ważne dla klientów korporacyjnych jest wyłączenie sieci 2G, Android 14 umożliwia korzystanie z tej funkcji zabezpieczeń w Androidzie Enterprise, wprowadzając obsługę dla administratorów IT, aby ograniczyć możliwość obniżenia jakości połączenia do sieci 2G na zarządzanych urządzeniach.
  • Dodaliśmy obsługę odrzucania niezaszyfrowanych połączeń komórkowych, aby zapewnić, że głos i ruch SMS-owy w ramach komutacji skokowej są zawsze szyfrowane i chronione przed pasywnym przechwytywaniem w sieci. Dowiedz się więcej o programie Androida dotyczącym wzmocnienia połączeń komórkowych
  • Dodano obsługę wielu numerów IMEI
  • Od Androida 14 AES-HCTR2 jest preferowanym trybem szyfrowania nazw plików dla urządzeń z przyspieszonymi instrukcjami kryptograficznymi.
  • Połączenie komórkowe
  • Dodano dokumentację Centrum bezpieczeństwa Androida
  • Jeśli Twoja aplikacja jest kierowana na Androida 14 i korzysta z dynamicznego wczytywania kodu (DCL), wszystkie wczytywane dynamicznie pliki muszą być oznaczone jako tylko do odczytu. W przeciwnym razie system zwraca wyjątek. Zalecamy, aby aplikacje nie ładowanie kodu, gdy tylko jest to możliwe, ponieważ znacznie zwiększa to ryzyko, że dostęp do aplikacji mógł zostać przejęty przez wstrzyknięcie lub zmodyfikowanie kodu.

Zapoznaj się z pełnymi informacjami o wersji AOSP i programista aplikacji na Androida funkcje i listę zmian.

Androida 13

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń użytkowników. Oto kilka najważniejszych ulepszeń zabezpieczeń dostępnych w Androidzie 13:

  • Android 13 obsługuje prezentacje w wielu dokumentach. Nowy interfejs sesji prezentacji umożliwia aplikacji prezentacji obejmującej wiele dokumentów, co nie jest możliwe w przypadku istniejącego interfejsu API. Więcej informacji: Dane logowania
  • Na Androidzie 13 intencje pochodzące z aplikacji zewnętrznych są dostarczane do wyeksportowanego komponentu tylko wtedy, gdy pasują do zadeklarowanych elementów filtra intencji.
  • Otwórz Mobile API (OMAPI) to standardowy interfejs API używany do komunikacji z Żywioł. Przed Androidem 13 tylko aplikacje i moduły platformy dostępu do tego interfejsu. Po przekonwertowaniu na stabilny interfejs dostawcy moduły HAL mogą też komunikować się z elementami zabezpieczeń za pomocą usługi OMAPI. Więcej informacji znajdziesz w interfejsie OMAPI Vendor Stable.
  • Od wersji Android 13-QPR współdzielone identyfikatory UID są wycofane. Użytkownicy Androida 13 lub nowszego powinni umieścić w pliku manifestu wiersz `android:sharedUserMaxSdkVersion="32"`. Ten wpis uniemożliwia że nowi użytkownicy nie otrzymują wspólnego identyfikatora UID. Więcej informacji na temat identyfikatorów UID znajdziesz tutaj: Podpisywanie aplikacji.
  • Android 13 dodał obsługę symetrycznych prymitywów kryptograficznych Keystore, takich jak AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) oraz asymetryczne algorytmy kryptograficzne (w tym Elliptic Curve, RSA2048, RSA4096, Curve 25519).
  • Android 13 (poziom API 33) i nowsze wersje obsługują uprawnienia w czasie wykonywania aplikacji na potrzeby wysyłania powiadomień, które nie są objęte wyjątkami. Dzięki temu użytkownicy mogą kontrolować, które powiadomienia o uprawnieniach widzą.
  • Dodane na podstawie użycia aplikacji, które proszą o dostęp do wszystkich dzienników urządzenia, umożliwiające użytkownikom zezwolenie na dostęp lub jego zablokowanie.
  • wprowadziliśmy platformę wirtualizacji Androida (AVF). który łączy różnych hipernadzorców w jednej strukturze ze standardowymi interfejsami API. Zapewnia bezpieczne i prywatne środowisko wykonywania zadań izolowanych przez hypervisora.
  • Wprowadziliśmy schemat podpisu pliku APK w wersji 3.1. Wszystkie nowe rotacje kluczy, które używają narzędzia apksigner, domyślnie korzystają ze schematu podpisu w wersji 3.1, aby kierować rotację na Androida 13 i nowsze.

Zapoznaj się z pełnymi informacjami o wersji AOSP i programista aplikacji na Androida funkcje i listę zmian.

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ń zabezpieczeń, które chronią użytkowników. Listę najważniejszych ulepszeń zabezpieczeń dostępnych w Androidzie 11 znajdziesz w informacjach o wersji Androida.

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ń zabezpieczeń, które chronią użytkowników. Oto niektóre z głównych ulepszeń zabezpieczeń w Androidzie 8.0:

  • Szyfrowanie. Dodano obsługę usuwania klucza na profilu służbowym.
  • Weryfikacja podczas uruchamiania. Dodano weryfikację podczas uruchamiania (AVB) w Androidzie. Weryfikowany kod źródłowy kodu startowego obsługujący ochronę przed cofnięciem zmian w ramach funkcji dodanych do AOSP. Zalecaj obsługę programu rozruchowego w celu ochrony przed przywróceniem HLOS. Zaleca się, aby programy rozruchowe można było odblokować tylko przez użytkownika podczas bezpośredniej interakcji z urządzeniem.
  • Ekran blokady. Dodano obsługę korzystania z odporności na manipulacje sprzętu do weryfikowania danych logowania na ekranie blokady.
  • KeyStore. Wymagany klucz atestacji dotyczące wszystkich urządzeń z Androidem 8.0 lub nowszym. Dodano identyfikator atest w celu ulepszenia rejestracji typu zero-touch.
  • Piaskownica. Bardziej ściślej umieścić wiele komponentów w piaskownicy, korzystając ze standardowego interfejsu Project Treble platformy i konkretnych urządzeń. Zastosowano filtrowanie seccomp do wszystkich nieznanych aplikacji w celu zmniejszenia powierzchni ataku rdzenia. Komponent WebView jest teraz uruchamiany w izolowanym procesie z bardzo ograniczonym dostępem do reszty systemu.
  • Wzmocnienie jądra. Wdrożone zabezpieczenia, emulacja PAN, odczyt tylko po zainicjowaniu i KASLR.
  • Utrwalanie przestrzeni użytkownika. Implementacja CFI na potrzeby stosu mediów. Nakładki aplikacji nie mogą już zakrywać okien o kluczowym znaczeniu dla systemu, a użytkownicy mają możliwość odrzucanie ich.
  • Aktualizacja systemu operacyjnego streamingu. Włączono aktualizacje na urządzeniach, których brakuje miejsca na dysku.
  • Instalowanie nieznanych aplikacji. Użytkownicy muszą zezwolić na instalowanie aplikacji ze źródła, które nie jest własną aplikacją sklepu.
  • Prywatność. Identyfikator Androida (SSAID) ma inną wartość – dla każdej aplikacji i każdego użytkownika urządzenia. W przypadku aplikacji przeglądarek internetowych identyfikator klienta Widevine zwraca inną wartość dla każdej nazwy pakietu aplikacji i źródła witryny. Pole net.hostname jest teraz puste, a klient dhcp nie wysyła już nazwa hosta. Usługa android.os.Build.SERIAL została zastąpiona interfejsem Build.SERIAL API, który jest chroniony przez uprawnienia kontrolowane przez użytkownika. Ulepszona losowość adresów MAC w niektórych chipsetach.

Androida 7

Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń użytkowników. Oto kilka najważniejszych ulepszeń zabezpieczeń dostępnych na Androidzie 7.0.

  • Szyfrowanie na podstawie plików szyfrowanie na poziomie pliku, zamiast szyfrować cały obszar pamięci jako pojedynczą jednostkę, lepiej izoluje i chroni poszczególnych użytkowników oraz profile (np. osobiste pracy).
  • Bezpośredni rozruch. Włączono przez szyfrowanie oparte na plikach, bezpośrednie Rozruch umożliwia niektórym aplikacjom, takim jak budzik i ułatwienia dostępu, uruchamiają się, gdy urządzenie jest włączone, ale nie jest odblokowane.
  • Weryfikacja podczas uruchamiania Weryfikacja podczas uruchamiania jest teraz ściśle egzekwowana, zapobiegać uruchamianiu urządzeń zhakowanych; obsługuje poprawianie błędów na które zwiększają niezawodność przed nieszkodliwym uszkodzeniem danych.
  • SELinux Zaktualizowano konfigurację SELinux i zwiększono ich liczbę Pokrycie seccomp jeszcze bardziej blokuje piaskownicę aplikacji i ogranicza atak na różnych powierzchniach.
  • Kolejność wczytywania biblioteki i ulepszona wersja ASLR. Większa losowość sprawia, że niektóre ataki ponownego użycia kodu są mniej niezawodne.
  • Wzmocnienie jądra. Dodano dodatkową ochronę pamięci dla urządzenia nowszych jąder przez oznaczenie części pamięci jądra jako przeznaczonej tylko do odczytu, co dostęp jądra do adresów przestrzeni użytkownika i dalsze ograniczanie ataków na różnych powierzchniach.
  • Schemat podpisu pliku APK w wersji 2. Wprowadzenie podpisu dla całego pliku to schemat przyspieszający weryfikację i wzmacniający gwarancje integralności.
  • Zaufany magazyn CA. Aby aplikacje mogły łatwiej kontrolować aplikację dostępu do bezpiecznego ruchu sieciowego, urzędów certyfikacji zainstalowanych przez użytkowników a te zainstalowane przy użyciu interfejsów Device Admin API nie są już domyślnie zaufane w przypadku aplikacji kierowanych na interfejs API na poziomie 24 lub wyższym. Wszystkie nowe urządzenia z Androidem muszą też mogą być wysyłane z tego samego zaufanego magazynu CA.
  • Konfiguracja zabezpieczeń sieci Skonfiguruj zabezpieczenia sieci i TLS za pomocą deklaratywnego pliku konfiguracji.

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ń zabezpieczeń użytkowników. Oto niektóre z ulepszeń zabezpieczeń dostępnych w Androidzie 4.4:

  • Piaskownicę Androida wzmocniono za pomocą SELinux. Android używa teraz SELinux w trybie wymuszania. SELinux to system kontroli dostępu (MAC) w jądrze Linuksa, który uzupełnia istniejący model zabezpieczeń oparty na kontroli dostępu dyskrecjonalnego (DAC). Zapewnia to dodatkową ochronę przed potencjalnymi zabezpieczeniami Luki w zabezpieczeniach.
  • VPN na użytkownika. Na urządzeniach, z których korzysta wielu użytkowników, sieci VPN są teraz stosowane dla poszczególnych użytkowników. Dzięki temu użytkownik może kierować cały ruch sieciowy przez sieć VPN, nie wpływając na innych użytkowników urządzenia.
  • Pomoc dostawcy ECDSA w AndroidKeyStore. Android ma teraz dostawcę magazynu kluczy, który umożliwia korzystanie z ECDSA i algorytmach DSA.
  • Ostrzeżenia dotyczące monitorowania urządzenia Android wyświetla użytkownikom ostrzeżenie, jeśli do magazynu certyfikatów urządzenia dodano certyfikat, który umożliwia monitorowanie szyfrowanego ruchu w sieci.
  • FORTIFY_SOURCE. Android obsługuje teraz FORTIFY_SOURCE poziom 2, a cały kod jest skompilowany z tymi zabezpieczeniami. Zmiana FORTIFY_SOURCE umożliwia pracę z clang.
  • Przypinanie certyfikatu Android 4.4 wykrywa nieuczciwe praktyki Google i zapobiega wykorzystywaniu takich oszustw certyfikatów używanych w bezpiecznej komunikacji SSL/TLS.
  • Poprawki zabezpieczeń. Android 4.4 zawiera też poprawki dotyczące luk w zabezpieczeniach specyficznych dla tego systemu. Informacje o tych lukach w zabezpieczeniach zostały przekazane do zespołu Open Członkowie Handset Alliance i poprawki są dostępne w programie Android Open Source Projekt. Aby zwiększyć bezpieczeństwo, na niektórych urządzeniach z wcześniejszymi wersjami Android może 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)