Android stale ulepsza swoje funkcje i ofertę zabezpieczeń. Zobacz w menu po lewej stronie znajdziesz listy ulepszeń według wersji.
Android 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.
Android 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.
Android 12
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń użytkowników. Oto kilka najważniejszych ulepszeń zabezpieczeń dostępnych w Androidzie 12:
- Android 12 wprowadza interfejs BiometricManager.Strings API, który udostępnia zlokalizowane ciągi znaków dla aplikacji używających BiometricPrompt do uwierzytelniania. Te ciągi są przeznaczone dla urządzeń. pozwalają dokładniej określić, które typy uwierzytelniania mogą być używane. Android 12 też obsługuje czytnik linii papilarnych pod wyświetlaczem
- Dodano obsługę czytników linii papilarnych pod wyświetlaczem
- Wprowadzenie odcisków cyfrowych w języku definiowania interfejsu Androida (AIDL)
- Obsługa nowych Face AIDL
- Wprowadzenie języka Rust jako języka na potrzeby programowania platformy
- Opcja przyznawania przez użytkowników dostępu tylko do przybliżonych Dodano lokalizację
- Dodano wskaźniki prywatności na pasku stanu, gdy aplikacja używa aparatu lub mikrofonu.
- Private Compute Core (PCC) w Androidzie
- Dodano opcję wyłączania obsługi sieci 2G.
Android 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.
Android 10
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Android 10 zawiera kilka ulepszeń zapewniających bezpieczeństwo i prywatność. Zobacz informacje o wersji Androida 10. , aby poznać pełną listę zmian w Androidzie 10.
Bezpieczeństwo
BoundsSanitizer
Android 10 wdraża BoundsSanitizer (BoundSan) w Bluetooth i kodeki. BoundSan używa środka do dezynfekcji granic UBSan. To ograniczenie jest włączone na poziomie modułu. Pomaga utrzymać krytyczną są bezpieczne i nie należy ich wyłączać. BoundSan jest włączony w tych kodekach:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Pamięć tylko uruchamiana
Domyślnie sekcje kodu wykonywalnego dla systemowych plików binarnych AArch64 są oznaczone tylko do wykonania (nieczytelne) jako środek wzmacniający ochronę kodu w czasie rzeczywistym ponownego ataków. Kod łączący dane z kodem, który celowo łączy w sobie kod sprawdza te sekcje (bez uprzedniego mapowania segmentów pamięci jako czytelna) już nie działa. Aplikacje z docelowym pakietem SDK Androida 10 (poziom interfejsu API 29 lub wyższy) są dotknięte, jeśli próbują odczytać sekcje kodu w bibliotekach systemowych z obsługą tylko do wykonania (XOM) w pamięci, bez wcześniejszego oznaczenia ich jako odczytywalnych.
Rozszerzony dostęp
agenty zaufania – mechanizm bazowy używany przez uwierzytelnianie trzeciorzędne; takie jak Smart Lock mogą przedłużyć odblokowywanie tylko w Androidzie 10. Agenty zaufania nie mogą już odblokowywać zablokowanych urządzeń, ale mogą utrzymywać je w stanie odblokowanym przez maksymalnie 4 godziny.
Uwierzytelnianie twarzą
Uwierzytelnianie za pomocą twarzy pozwala użytkownikom odblokowywać urządzenie, po prostu patrząc na jego przód. Android 10 obsługuje nowy moduł uwierzytelniania twarzy, który może bezpiecznie przetwarzać klatki z kamery, zapewniając bezpieczeństwo i prywatność podczas uwierzytelniania twarzy na obsługiwanym sprzęcie. Android 10 umożliwia też łatwe wdrażanie zgodnych z wymaganiami bezpieczeństwa implementacji, aby umożliwić integrację aplikacji z transakcjami, takimi jak bankowość internetowa czy inne usługi.
Sanityzacja nadmiarowych liczb całkowitych
Android 10 włącza oczyszczanie w przypadku przepełnienia liczb całkowitych (IntSan) w kodekach programowych. Upewnij się, że wydajność odtwarzania jest akceptowalna w przypadku kodeków, które nie są obsługiwane przez sprzęt urządzenia. Funkcja IntSan jest włączona w tych kodeki:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Moduły systemu
Android 10 modułuje niektóre komponenty systemu Androida i umożliwia ich aktualizowanie poza normalnym cyklem wydawniczym Androida. Oto niektóre moduły:
- Android Runtime
- conscrypt.
- System DNS Program do rozpoznawania nazw
- DocumentsUI
- Usługi dodatkowe
- Multimedia
- ModuleMetadata
- Networking
- kontroler uprawnień
- Time Zone Data
OEMCrypto
Android 10 używa interfejsu OEMCrypto API w wersji 15.
Scudo
Scudo to dynamiczny mechanizm przydzielający pamięć w trybie użytkownika, zaprojektowany z myślą o większej odporności luki w zabezpieczeniach związane ze stertą. Zawiera ona standardowe prymity przydziału i zwolnienia pamięci w języku C, a także prymity C++.
Stos wywołań cienia
ShadowCallStack
(SCS)
to tryb instrumentacji LLVM, który chroni przed nadpisaniem adresu zwracanego (np. przez przepełnienie bufora stosu) przez zapisanie adresu zwracanego funkcji do osobnego wystąpienia ShadowCallStack
w prologu funkcji niebędącej funkcją liścia i wczytanie adresu zwracanego z wystąpienia ShadowCallStack
w epilogu funkcji.
WPA3 i Enhanced Open w sieci Wi-Fi
Android 10 obsługuje Wi-Fi Standardy Protected Access 3 (WPA3) i Wi-Fi Enhanced Open Security (rozszerzone zabezpieczenia Wi-Fi) aby zapewnić większą prywatność i odporność na znane ataki.
Prywatność
Dostęp do aplikacji w przypadku kierowania na Androida 9 lub starszego
Jeśli Twoja aplikacja działa na Androidzie 10 lub nowszym, ale jest kierowana na Androida 9 (poziom interfejsu API 28) lub starszego, platforma działa w ten sposób:
- Jeśli Twoja aplikacja deklaruje element
<uses-permission>
dlaACCESS_FINE_LOCATION
lubACCESS_COARSE_LOCATION
, system automatycznie dodaje element<uses-permission>
dlaACCESS_BACKGROUND_LOCATION
podczas instalacji. - Jeśli Twoja aplikacja wysyła żądanie
ACCESS_FINE_LOCATION
lubACCESS_COARSE_LOCATION
, system automatycznie dodaje do żądaniaACCESS_BACKGROUND_LOCATION
.
Ograniczenia dotyczące aktywności w tle
Od Androida 10 system nakłada ograniczenia
na rozpoczynanie działań w tle. Ta zmiana działania pomaga
minimalizuje przerwy dla użytkownika i daje mu większą kontrolę nad
widoczne na ekranie. Jeśli aplikacja uruchamia działania bezpośrednio w wyniku interakcji z użytkownikiem, prawdopodobnie nie podlega tym ograniczeniom.
Aby dowiedzieć się więcej o zalecanej alternatywie dla rozpoczynania modułów
w tle, zajrzyj do przewodnika o alertach
ze zdarzeniami o ograniczonym czasie trwania w Twojej aplikacji.
Metadane aparatu
Android 10 zmienia zakres informacji zwracanych domyślnie przez metodę getCameraCharacteristics()
. W szczególności aplikacja musi mieć uprawnienie CAMERA
, aby uzyskać dostęp do metadanych, które mogą być związane z danym urządzeniem i znajdują się w wartości zwracanej tej metody.
Więcej informacji o tych zmianach znajdziesz w sekcji pola dotyczące aparatu, które wymagają uprawnień.
Dane ze schowka
Chyba że Twoja aplikacja jest domyślną metodą wejściową (IME) lub jest obecnie zaznaczonym, dostęp do danych schowka na Androidzie 10 lub nowszym.
Lokalizacja urządzenia
zapewnić dodatkową kontrolę nad dostępem aplikacji do użytkowników;
informacji o lokalizacji, Android 10 wprowadza ACCESS_BACKGROUND_LOCATION
uprawnienia.
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. Aplikacja jest brana pod uwagę
dostępu do lokalizacji w tle, chyba że:
są spełnione warunki:
- Widoczna jest aktywność należąca do aplikacji.
- Aplikacja uruchamia usługę na pierwszym planie, która zadeklarowała pierwszy plan
typ usługi
location
.
Aby zadeklarować usługę na pierwszym planie wpisz wartość usługi w aplikacji, ustawtargetSdkVersion
lubcompileSdkVersion
na29
lub więcej. Więcej informacji o Jak usługi działające na pierwszym planie mogą kontynuować? działań użytkownika, które wymagają dostępu do lokalizacji.
Pamięć zewnętrzna
Domyślnie aplikacje kierowane na Androida 10 i nowsze wersje mają zakres dostępu do pamięci zewnętrznej lub ograniczonego miejsca na dane. Takie aplikacje mogą wyświetlać te typy plików na urządzeniu z pamięcią zewnętrzną bez konieczności żądania od użytkownika uprawnień związanych z pamięcią:
- Pliki w katalogu aplikacji, do którego uzyskuje się dostęp za pomocą
getExternalFilesDir()
. - Zdjęcia, filmy i klipy audio utworzone przez aplikację na podstawie multimediów .
Aby dowiedzieć się więcej o ograniczonym miejscu na dane oraz o tym, jak udostępniać pliki zapisane na zewnętrznych urządzeniach pamięci masowej, uzyskiwać do nich dostęp i je modyfikować, zapoznaj się z poradnikami Zarządzanie plikami w pamięci zewnętrznej i Uzyskiwanie dostępu do plików multimedialnych i ich modyfikowanie.
losowanie adresów MAC.
Na urządzeniach z Androidem 10 lub nowszym system domyślnie przesyła losowe adresy MAC.
Jeśli aplikacja obsługuje przypadek użycia w firmie, makro
platforma udostępnia interfejsy API do obsługi różnych operacji związanych z adresami MAC:
- Uzyskiwanie losowego adresu MAC: aplikacje właściciela urządzenia i aplikacje właściciela profilu mogą pobrać losowy adres MAC przypisany do konkretnej sieci, wywołując funkcję
getRandomizedMacAddress()
. - Uzyskiwanie rzeczywistego, fabrycznego adresu MAC: aplikacje właściciela urządzenia mogą
pobierz rzeczywisty adres MAC urządzenia, wywołując
getWifiMacAddress()
. Ta metoda jest przydatna do śledzenia flot urządzeń.
Niemożliwe do zresetowania identyfikatory urządzeń
Od Androida 10 aplikacje muszą mieć uprawnienia READ_PRIVILEGED_PHONE_STATE
, aby uzyskać dostęp do niezerujących się identyfikatorów urządzenia, w tym numeru IMEI i numeru seryjnego.
Build
TelephonyManager
Jeśli Twoja aplikacja nie ma uprawnień, a i tak próbujesz uzyskać informacje o identyfikatorach, których nie można zresetować, odpowiedź platformy będzie się różnić w zależności od wersji docelowego pakietu SDK:
- Jeśli Twoja aplikacja jest kierowana na Androida 10 lub nowszego,
SecurityException
ma miejsce. - Jeśli aplikacja jest kierowana na Androida 9 (poziom interfejsu API 28) lub starszego, metoda zwraca
null
lub dane zastępcze, jeśli aplikacja ma uprawnieniaREAD_PHONE_STATE
. uprawnienia. W przeciwnym razie występujeSecurityException
.
Rozpoznawanie aktywności fizycznej
Android 10 wprowadza uprawnienie android.permission.ACTIVITY_RECOGNITION
w czasie działania aplikacji, które muszą wykrywać liczbę kroków użytkownika lub klasyfikować jego aktywność fizyczną, np. chodzenie, jazdę na rowerze lub poruszanie się pojazdem. Ma to na celu umożliwienie użytkownikom sprawdzenia, jak dane z czujników urządzenia są używane w Ustawieniach.
Niektóre biblioteki w Usługach Google Play, takie jak Aktywność
Recognition API i Google
Fit API – nie podawaj wyników, dopóki użytkownik nie wyrazi na to zgody
uprawnienia.
Jedyna wbudowana aplikacja,
na urządzeniu, które wymagają zadeklarowania tych uprawnień, to krok
licznik i krok
czujniki.
Jeśli aplikacja jest kierowana na Androida 9 (poziom interfejsu API 28) lub starszego, system
automatycznie przyznaje uprawnienie android.permission.ACTIVITY_RECOGNITION
do aplikacji zgodnie z potrzebami, jeśli spełnia ona
warunki:
- Plik manifestu zawiera uprawnienia
com.google.android.gms.permission.ACTIVITY_RECOGNITION
. - Plik manifestu nie zawiera uprawnień
android.permission.ACTIVITY_RECOGNITION
.
Jeśli system automatycznie przyzna parametr
Uprawnienie android.permission.ACTIVITY_RECOGNITION
, Twoja aplikacja
zachowa to uprawnienie po zaktualizowaniu aplikacji, aby była kierowana na Androida 10. Użytkownik może jednak w każdej chwili cofnąć to uprawnienie w ustawieniach systemu.
Ograniczenia dotyczące systemu plików /proc/net
Na urządzeniach z Androidem 10 lub nowszym aplikacje nie mają dostępu do /proc/net
, co obejmuje informacje o stanie sieci urządzenia. Aplikacje, które potrzebują dostępu do tych informacji, takie jak VPN, powinny używać klasy NetworkStatsManager
lub ConnectivityManager
.
Grupy uprawnień zostały usunięte z interfejsu
Od Androida 10 aplikacje nie mogą sprawdzać uprawnień są zgrupowane w interfejsie.
Usuwanie podobieństwa kontaktów
Od Androida 10 platforma nie śledzi informacji o powiązaniach kontaktów. W efekcie, jeśli aplikacja wyszukuje kontakty użytkownika, wyniki nie są sortowane według częstotliwości interakcji.
Przewodnik na temat ContactsProvider
zawiera informację opisującą
konkretne pola,
i metod, które są nieaktualne na wszystkich urządzeniach z Androidem 10.
Ograniczony dostęp do zawartości ekranu
Aby chronić zawartość ekranu użytkowników, Android 10 uniemożliwia niejawny dostęp do zawartości ekranu urządzenia przez zmianę zakresu uprawnień READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
i CAPTURE_SECURE_VIDEO_OUTPUT
. Od Androida 10 te funkcje
uprawnienia to dostęp do podpisu
Aplikacje, które mają mieć dostęp do zawartości ekranu urządzenia, powinny używać atrybutu
MediaProjection
API, który wyświetla prośbę o udzielenie zgody.
Numer seryjny urządzenia USB
Jeśli Twoja aplikacja jest przeznaczona na Androida 10 lub nowszego, nie może odczytać numeru seryjnego, dopóki użytkownik nie przyzna jej uprawnień dostępu do urządzenia USB lub akcesorium.
Aby dowiedzieć się więcej o pracy z urządzeniami USB, zapoznaj się z przewodnikiem konfigurowania hostów USB.
Wi-Fi
Aplikacje kierowane na Androida 10 lub nowszego nie mogą włączać ani wyłączać Wi-Fi.
WifiManager.setWifiEnabled()
metoda zawsze zwraca false
.
Jeśli chcesz poprosić użytkowników o włączenie i wyłączenie Wi-Fi, użyj 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 sterownikó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 kierowana na Androida 10 lub nowszego i nie jest aplikacją systemową ani DPC, poniższe metody nie zwracają przydatnych danych:
- Metoda
getConfiguredNetworks()
zawsze zwraca pustą listę. - Każda metoda operacji sieci, która zwraca wartość całkowitą (
addNetwork()
iupdateNetwork()
), zwraca zawsze wartość -1. - Każda operacja sieciowa zwraca wartość logiczną
removeNetwork()
,reassociate()
,enableNetwork()
disableNetwork()
,reconnect()
, idisconnect()
– zawsze zwracafalse
.
Android 9
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Listę najważniejszych ulepszeń zabezpieczeń dostępnych w Androidzie 9 znajdziesz w informacjach o wersji Androida.
Android 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ługaandroid.os.Build.SERIAL
została zastąpiona interfejsemBuild.SERIAL
API, który jest chroniony przez uprawnienia kontrolowane przez użytkownika. Ulepszona losowość adresów MAC w niektórych chipsetach.
Android 7
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 7.0:
- Szyfrowanie oparte na plikach. Szyfrowanie na poziomie pliku, zamiast szyfrowania całego obszaru pamięci jako pojedynczej jednostki, lepiej izoluje i chroni poszczególnych użytkowników i profile (np. osobiste i służbowe) na urządzeniu.
- Bezpośredni rozruch. Bezpieczny rozruch jest obsługiwany przez szyfrowanie plików i pozwala na uruchamianie niektórych aplikacji, takich jak budzik czy ułatwienia dostępu, gdy urządzenie jest włączone, ale nie odblokowane.
- Weryfikacja podczas uruchamiania. Weryfikacja podczas uruchamiania jest teraz ściśle egzekwowana, aby uniemożliwić uruchamianie urządzeń z naruszeniem zabezpieczeń. Umożliwia ona również poprawianie błędów, aby zwiększać niezawodność w przypadku nieszkodliwego uszkodzenia danych.
- SELinux. Zaktualizowana konfiguracja SELinux i zwiększone pokrycie seccomp jeszcze bardziej zabezpiecza piaskownicę aplikacji i zmniejsza powierzchnię ataku.
- 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 w przypadku nowszych jąder, oznaczając fragmenty pamięci jądra jako dostępne tylko do odczytu, ograniczając dostęp jądra do adresów w przestrzeni użytkownika i jeszcze bardziej zmniejszając powierzchnię ataku.
- Schemat podpisu pliku APK w wersji 2. Wprowadziliśmy schemat podpisywania całego pliku, który przyspiesza weryfikację i zwiększa gwarancje integralności.
- Zaufany magazyn urzędu certyfikacji. Aby ułatwić aplikacjom kontrolowanie dostępu do bezpiecznego ruchu sieciowego, zaufanym urzędom certyfikacji zainstalowanym przez użytkownika i zainstalowanym za pomocą interfejsów API administratora urządzenia nie są już domyślnie ufane w przypadku aplikacji kierowanych na poziom interfejsu API 24 lub nowszy. Ponadto wszystkie nowe urządzenia z Androidem muszą być dostarczane z tym samym zaufanym magazynem urzędu certyfikacji.
- Konfiguracja zabezpieczeń sieci Skonfiguruj zabezpieczenia sieci i TLS za pomocą deklaratywnego pliku konfiguracji.
Android 6
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto kilka najważniejszych ulepszeń zabezpieczeń dostępnych na Androidzie 6.0.
- Uprawnienia czasu działania. Aplikacje proszą o uprawnienia w czasie działania, a nie są one przyznawane w momencie instalacji. Użytkownicy mogą włączać i wyłączać uprawnienia zarówno w przypadku aplikacji zgodnych z Androidem M, jak i starszych.
- Weryfikacja podczas uruchamiania Przed wykonaniem operacji przeprowadzany jest zestaw zabezpieczeń kryptograficznych oprogramowania systemowego, aby upewnić się, że telefon jest sprawny od bootloadera do systemu operacyjnego.
- Zabezpieczenia izolowane sprzętowo. Nowa abstrakcja dotycząca sprzętu Warstwa (HAL) używana przez interfejs Fingerprint API, ekran blokady szyfrowanie urządzeń i certyfikaty klienta do ochrony kluczy przed jądrem systemu. lub lokalne ataki fizyczne.
- Odciski cyfrowe. Odblokowanie urządzenia jest teraz możliwe za pomocą dotyku. Programiści mogą też nowych interfejsów API do blokowania i odblokowywania kluczy szyfrowania za pomocą odcisków palców.
- Używanie kart SD. Nośnik wymienny przystosowanych do urządzeń i zwiększyć ilość dostępnego miejsca na dane lokalne dane aplikacji, zdjęcia, filmy itp., ale nadal są chronione przez blokadę na poziomie blokady. szyfrowaniem.
- Ruch z czystym tekstem – Deweloperzy mogą używać nowego trybu StrictMode aby mieć pewność, że nie używa tekst nieszyfrowany.
- Wzmocnienie systemu. Wzmocnienie systemu za pomocą zasad narzuconych przez SELinux. Zapewnia ona lepszą izolację użytkowników, filtrowanie IOCTL, zmniejsza zagrożenie związane z wystawionymi usługami, zapewnia dalsze zacieśnienie domen SELinux i bardzo ogranicza dostęp do /proc.
- Kontrola dostępu do USB: użytkownicy muszą potwierdzić, że zezwalają na dostęp USB do plików, pamięci lub innych funkcji telefonu. Domyślnie jest teraz tylko ładowanie z dostępem do pamięci wymagającym wyraźnej zgody użytkownika.
Android 5
5,0
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 5.0:
- Domyślnie szyfrowane. Na urządzeniach, które mają już zainstalowany L od razu po wyjęciu z pudła, szyfrowanie całego dysku jest domyślnie włączone, aby zwiększyć ochronę danych na urządzeniach, które zostały zgubione lub skradzione. Urządzenia, które zostały zaktualizowane do L, można zaszyfrować w sekcji Ustawienia > Zabezpieczenia.
- Ulepszone szyfrowanie całego dysku. Hasło użytkownika to
ochrona przed atakami brute-force za pomocą
scrypt
, gdzie klucz jest powiązany ze sprzętowym magazynem kluczy, aby zapobiegać ataków z użyciem innych urządzeń. Jak zawsze, tajny klucz blokady ekranu Androida i klucz szyfrowania urządzenia nie są wysyłane poza urządzenie ani nie są widoczne dla żadnej aplikacji. - Piaskownica na Androida wzmocniona przez SELinux Teraz na Androidzie wymaga trybu egzekwowania SELinux we wszystkich domenach. SELinux systemu obowiązkowej kontroli dostępu (MAC) w jądrze Linuksa, służącego do rozszerzania do istniejącego modelu zabezpieczeń dyskrecjonalnej kontroli dostępu (DAC). Ta nowa warstwa zapewnia dodatkową ochronę przed potencjalnymi lukami w zabezpieczeniach.
- Smart Lock. Android zawiera teraz elementy zaufania, które zapewniają większą elastyczność w odblokowywaniu urządzeń. Na przykład za pomocą trustletów można automatycznie odblokowywać urządzenia, gdy znajdują się w pobliżu innego zaufanych urządzenia (za pomocą NFC lub Bluetootha) albo gdy są używane przez osobę z zaufanym obliczem.
- Tryb wieloużytkownika, profil ograniczony i tryb gościa na telefonach i tabletach. Android umożliwia teraz korzystanie z telefonu przez wielu użytkowników i zawiera tryb gościa, który pozwala na łatwe udostępnianie tymczasowego dostępu do urządzenia bez konieczności przyznawania dostępu do danych i aplikacji.
- Aktualizacje komponentu WebView bez aktualizacji OTA. WebView można teraz aktualizować niezależnie od frameworka i bez systemu OTA. Pozwala to szybciej reagować na potencjalne problemy z bezpieczeństwem WebView.
- Zaktualizowana kryptografia protokołu HTTPS i TLS/SSL. TLS 1.2 i TLS 1.1 są teraz włączone, preferowany jest protokół Forward Secrecy, włączony jest zestaw szyfrów AES-GCM, a słabe zestawy szyfrów (MD5, 3DES i zestawy szyfrów eksportowych) są teraz wyłączone. Więcej informacji znajdziesz na stronie https://developer.android.com/reference/javax/net/ssl/SSLSocket.html.
- Usunięto obsługę tagu łączącego inne niż PIE. Android wymaga teraz wszystkich dynamicznie połączone pliki wykonywalne obsługujące PIE (pliki wykonywalne niezależne od pozycji). Zwiększa to skuteczność implementacji losowania adresów (ASLR) w Androidzie.
- Ulepszenia dotyczące FORTIFY_SOURCE. Te funkcje biblioteki libc:
stpcpy()
,stpncpy()
,read()
,recvfrom()
,FD_CLR()
,FD_SET()
iFD_ISSET()
, implementują teraz zabezpieczenia FORTIFY_SOURCE. Zapewnia to ochronę przed podatnością na ataki polegające na uszkodzeniu pamięci, które wykorzystują te funkcje. - Poprawki zabezpieczeń. Android 5.0 zawiera też poprawki Luki w zabezpieczeniach Androida. Informacje o tych lukach w zabezpieczeniach zostały usunięte została przekazana członkom Open Handset Alliance, a poprawki są dostępne Projekt Android Open Source. Aby zwiększyć bezpieczeństwo, na niektórych urządzeniach z wcześniejszymi wersjami wersji Androida również mogą 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 z dostępnych ulepszeń zabezpieczeń w Androidzie 4.3:
- Piaskownica na Androida wzmocniona przez SELinux. Ta wersja wzmacnia piaskownicę Androida za pomocą systemu SELinux, który jest obowiązkowym systemem kontroli dostępu (MAC) w jądrze systemu Linux. SELinux jest niewidoczne dla użytkowników i deweloperów i zwiększa solidność z dotychczasowym modelem zabezpieczeń Androida przy zachowaniu zgodności z istniejącymi aplikacjami. Aby zapewnić ciągłą zgodność, ta wersja umożliwia korzystanie z SELinux w trybie permisywnym. Ten tryb rejestruje wszystkie zasady naruszenia zasad, ale nie będą zakłócać działania aplikacji ani wpływać na działanie systemu.
- Brak programów
setuid
anisetgid
. Dodano obsługę możliwości systemu plików do plików systemowych Androida i usunięto wszystkie programysetuid
lubsetgid
. Ten zmniejsza powierzchnię atakującą i prawdopodobieństwo potencjalnej ochrony Luki w zabezpieczeniach. - Uwierzytelnianie AB. W Androidzie 4.2.2 połączenia z ADB są uwierzytelniona za pomocą pary kluczy RSA. Zapobiega to nieautoryzowanemu używaniu ADB, gdy atakujący ma fizyczny dostęp do urządzenia.
- Ogranicz dostęp Setuid w aplikacjach na Androida.
Partycja
/system
została podłączona nie pomaga w procesach wyhodowanych przez zygote, zapobiegając aplikacjom na Androida od wykonywaniasetuid
programów. Pozwala to zmniejszyć powierzchnię ataku na konto root i prawdopodobieństwo wystąpienia potencjalnych luk w zabezpieczeniach. - Ograniczenie możliwości.
Zygote i ADB na Androidzie używają teraz interfejsu
prctl(PR_CAPBSET_DROP)
, aby przed uruchomieniem aplikacji odrzucić niepotrzebne funkcje. Zapobiega to uzyskiwaniu przez aplikacje na Androida i aplikacje uruchamiane w powłoce uprawnień uprzywilejowanych. - Dostawca AndroidKeyStore. Android ma teraz dostawcę magazynu kluczy, który umożliwia do tworzenia kluczy do wyłącznego użytku. Dotyczy to aplikacji, za pomocą interfejsu API do tworzenia lub przechowywania kluczy prywatnych, których nie może używać z innymi aplikacjami.
- Pęk kluczy
isBoundKeyAlgorithm
. Interfejs Keychain API udostępnia teraz metodę (isBoundKeyType
), która pozwala aplikacjom potwierdzić, że klucze systemowe są powiązane ze sprzętowym katalogiem zaufania urządzenia. Dzięki temu To miejsce do tworzenia lub przechowywania kluczy prywatnych, których nie można wyeksportować urządzenia, nawet w przypadku przejęcia roota. NO_NEW_PRIVS
. Zygote na Androidzie używa terazprctl(PR_SET_NO_NEW_PRIVS)
do blokowania dodawania nowych uprawnień przed uruchomieniem kodu aplikacji. Zapobiega to wykonywaniu przez aplikacje na Androida operacji, które mogą podwyższać uprawnienia za pomocą execve. (wymaga jądra Linuksa w wersji 3.5 lub nowszej).FORTIFY_SOURCE
ulepszenia. WłączonaFORTIFY_SOURCE
na Androidzie x86 i MIPS oraz wzmocnione wywołaniastrchr()
,strrchr()
,strlen()
iumask()
. Ten mogą wykrywać potencjalne luki w zabezpieczeniach pamięci lub luki w zabezpieczeniach ciągów znaków.- Zabezpieczenia dotyczące przeniesienia Włączono przenoszenie tylko do odczytu (relro) dla wykonalnych połączonych statycznie i usunięto wszystkie przeniesienia tekstu w kodzie Androida. Zapewnia to szczegółową obronę przed potencjalnym uszkodzeniem pamięci Luki w zabezpieczeniach.
- Ulepszony mikser entropii. EntropyMixer zapisuje entropię przy wyłączaniu lub restartowanie, a także okresowe miksowanie. Umożliwia to przechowywanie wszystkich entropia generowana, gdy urządzenia są włączone. Jest to szczególnie przydatne dotyczy urządzeń, które zostały zrestartowane natychmiast po obsłudze administracyjnej.
- Poprawki zabezpieczeń Android 4.3 zawiera też poprawki dotyczące luk w zabezpieczeniach specyficznych dla tego systemu. Podano informacje o tych lukach w zabezpieczeniach dla członków Open Handset Alliance. Poprawki są dostępne w Android Open Projekt źródłowy. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wersjami Androida wcześniejszymi niż 10.0 mogą również zawierać te poprawki.
Android zapewnia wielowarstwowy model zabezpieczeń opisany w dokumencie Omówienie zabezpieczeń. Każda aktualizacja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre zabezpieczenia ulepszenia wprowadzone w Androidzie 4.2:
- Weryfikacja aplikacji: użytkownicy mogą włączyć Weryfikację aplikacji i poprosić o przeskanowanie aplikacji przez weryfikatora przed instalacją. Weryfikacja aplikacji może ostrzegać użytkownika, gdy próbuje zainstalować aplikację, która może szkodliwe; Jeśli aplikacja jest szczególnie szkodliwa, jej instalacja może zostać zablokowana.
- Większa kontrola nad SMS-ami specjalnymi: Android wyświetla powiadomienie, gdy aplikacja próbuje wysłać SMS-a na krótki kod, który korzysta z usług premium które mogą spowodować naliczenie dodatkowych opłat. Użytkownik może zezwolić aplikacji na wysłanie wiadomości lub ją zablokować.
- Stały VPN: sieć VPN można skonfigurować tak, aby aplikacje nie miały dostępu do sieci, dopóki nie zostanie nawiązane połączenie VPN. Zapobiega to wysyłanie przez aplikacje danych do innych sieci.
- Przypinanie certyfikatów: obsługiwane są teraz podstawowe biblioteki Androida. przypinania certyfikatów. Przypięte domeny otrzymują weryfikację certyfikatu niepowodzenie, jeśli certyfikat nie jest połączony łańcuchem z zestawem oczekiwanych certyfikatów. Zapewnia to ochronę przed możliwym przejęciem urzędów certyfikacji.
- Ulepszone wyświetlanie uprawnień Androida: uprawnienia są uporządkowane. w grupy łatwiejsze do zrozumienia dla użytkowników. Podczas sprawdzania uprawnień użytkownik może kliknąć uprawnienie, aby wyświetlić więcej informacji na jego temat.
- zabezpieczenie procesu installd: demon
installd
nie działa jako użytkownik root, co zmniejsza potencjalną powierzchnię ataku dla eskalacji uprawnień root. - hartowanie skryptu init: skrypty init stosują teraz semantykę
O_NOFOLLOW
aby zapobiec atakom związanymi z wyrażeniami symbolicznymi. FORTIFY_SOURCE
: AndroidFORTIFY_SOURCE
Używane przez i bibliotece systemowe, aby zapobiec uszkodzeniu pamięci.- ContentProvider default Configuration (Domyślna konfiguracja ContentProvider): aplikacje kierowane na interfejs API.
na poziomie 17 domyślnie ustawiona jest wartość
false
dla każdej z tych grup:export
Treść Dostawca, zmniejszając domyślną powierzchnię ataku dla aplikacji. - Szyfrowanie: domyślne implementacje SecureRandom i Cipher.RSA zostały zmodyfikowane tak, aby używały OpenSSL. Dodano obsługę SSL Socket dla TLSv1.1 i TLSv1.2 przy użyciu OpenSSL 1.0.1
- Poprawki zabezpieczeń: uaktualnione biblioteki open source z poprawkami zabezpieczeń obejmują m.in. WebKit, libpng, OpenSSL i LibXML. Android 4.2 zawiera też poprawki Luki w zabezpieczeniach Androida. Informacje o tych lukach w zabezpieczeniach zostały usunięte została przekazana członkom Open Handset Alliance, a poprawki są dostępne Projekt Android Open Source. Aby zwiększyć bezpieczeństwo, na niektórych urządzeniach z wcześniejszymi wersjami wersji Androida również mogą zawierać te poprawki.
Android zapewnia wielowarstwowy model zabezpieczeń opisany w artykule Omówienie zabezpieczeń w Androidzie. Każda aktualizacja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z ulepszeń zabezpieczeń wprowadzonych w Androidzie w wersjach od 1.5 do 4.1:
- Android 1.5
- ProPolice, aby zapobiec przekrojom bufora stosu (-fstack-protector)
- Safe_iop w celu zmniejszania liczby zbędnych wartości liczbowych
- Rozszerzenia do dlmalloc OpenBSD w celu zapobiegania podwójnym lukom w zabezpieczeniach Free() i aby zapobiec atakom konsolidacji fragmentów. Ataki polegające na konsolidowaniu fragmentów są częstym sposobem wykorzystywania uszkodzeń stosu.
- OpenBSD calloc, aby zapobiec przepełnieniu liczb całkowitych podczas alokacji pamięci
- Android 2.3
- Formatuj zabezpieczenia pod kątem luk w zabezpieczeniach ciągu znaków (-Wformat-security -Werror=format-security)
- Sprzętowa obsługa NoeXecute (NX), która uniemożliwia wykonywanie kodu w stosie i na stercie
- Linux mmap_min_addr w celu ograniczenia możliwości podwyższania uprawnień przez odwołanie do wskaźnika o wartości null (dodatkowo ulepszone w Androidzie 4.1)
- Android 4.0
- Randomizacja rozkładu przestrzeni adresowej (ASLR) w celu losowego wybierania kluczowych lokalizacji w pamięci
- Android 4.1
- Obsługa PIE (executable niezależny od pozycji)
- Przeniesienia tylko do odczytu / natychmiastowe wiązanie (-Wl,-z,relro -Wl,-z,now)
- Włączono dmesg_restrict (unikaj wycieku adresów jądra)
- Włączono kptr_restrict (unikaj wycieku adresów jądra)