Android stale ulepsza swoje funkcje i ofertę zabezpieczeń. W menu nawigacyjnym po lewej stronie znajdziesz listy ulepszeń według wersji.
Android 14
每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:
- Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
- 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
- Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接。
- 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划。
- 新增了对多个 IMEI 的支持
- 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
- 移动网络连接
- 在 Android 安全中心添加了相关文档
- 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。
Android 13
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 13 中提供的一些主要安全增强功能:
- Android 13 添加了对多文档呈现的支持。 通过这个新的 Presentation Session 接口,应用可以执行多文档呈现,而现有 API 无法做到这一点。如需了解详情,请参阅身份凭据
- 在 Android 13 中,当且仅当源自外部应用的 intent 与其声明的 intent 过滤器元素匹配时,这些 intent 才会传送到导出的组件。
- Open Mobile API (OMAPI) 是一种标准 API,用于与设备的安全元件进行通信。在 Android 13 之前,只有应用和框架模块可以访问此接口。通过将其转换为供应商稳定版接口,HAL 模块还能够通过 OMAPI 服务与安全元件进行通信。 如需了解详情,请参阅 OMAPI 供应商稳定版接口。
- 从 Android 13-QPR 开始,共享 UID 被废弃。 使用 Android 13 或更高版本的用户应在其清单中添加 `android:sharedUserMaxSdkVersion="32"` 行。此条目可防止新用户获取共享 UID。如需详细了解 UID,请参阅应用签名。
- Android 13 添加了对密钥库对称加密基元的支持,例如支持 AES(高级加密标准)、HMAC(密钥哈希消息认证码)以及非对称加密算法(包括椭圆曲线加密、RSA2048、RSA4096 和曲线 25519 加密)
- Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免通知的运行时权限。这可让用户控制他们会看到哪些权限通知。
- 针对请求访问所有设备日志的应用,添加了在每次使用时显示提示的功能,以便用户允许或拒绝授予访问权限。
- 推出了 Android 虚拟化框架 (AVF),它使用标准化 API 将不同的 Hypervisor 整合到一个框架下。 它提供安全、私密的执行环境,以便执行通过 Hypervisor 隔离的工作负载。
- 引入了 APK 签名方案 v3.1 所有使用 apksigner 的新密钥轮替都将默认使用 v3.1 签名方案,以便将 Android 13 及更高版本作为轮替目标。
Android 12
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z 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 korzystających z interfejsu BiometricPrompt na potrzeby uwierzytelniania. Te ciągi znaków są dostosowane do urządzenia i zawierają bardziej szczegółowe informacje o tym, jakich typów uwierzytelniania można używać. Android 12 obsługuje też czytniki linii papilarnych pod wyświetlaczem.
- Dodano obsługę czytników linii papilarnych pod wyświetlaczem
- Wprowadzenie do języka definiowania interfejsu Androida (AIDL)
- Obsługa nowego interfejsu Face AIDL
- Wprowadzenie języka Rust do tworzenia platformy
- Dodano opcję przyznawania dostępu tylko do przybliżonej lokalizacji.
- Dodano wskaźniki prywatności na pasku stanu, gdy aplikacja korzysta z aparatu lub mikrofonu.
- Private Compute Core (PCC) na Androidzie
- Dodaliśmy opcję wyłączenia 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
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。Android 10 包含多项安全和隐私增强功能。如需查看 Android 10 中变化的完整列表,请参阅 Android 10 版本说明。
安全性
BoundsSanitizer
Android 10 在蓝牙和编解码器中部署了 BoundsSanitizer (BoundSan)。BoundSan 使用 UBSan 的边界排错程序。该缓解功能在各个模块级别启用,有助于确保 Android 关键组件的安全性,因此不应停用。以下编解码器启用了 BoundSan:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
只执行内存
默认情况下,AArch64 系统二进制文件的可执行代码部分会被标记为只执行(不可读取),作为应对即时代码重用攻击的安全强化缓解方法。将数据和代码混合在一起的代码以及有目的地检查这些部分的代码(无需首先将内存段重新映射为可读)将不再起作用。如果目标 SDK 为 Android 10(API 级别 29 或更高)的应用尝试读取内存中已启用只执行内存 (XOM) 的系统库的代码部分,而未首先将该部分标记为可读,则此类应用将会受到影响。
扩展访问权限
可信代理是 Smart Lock 等三重身份验证机制使用的底层机制,只能在 Android 10 中延长解锁时间。可信代理无法再解锁已锁定的设备,并且最多只能将设备解锁状态维持四个小时。
人脸识别身份验证
借助人脸识别身份验证功能,用户只需将面孔对准设备正面即可将其解锁。Android 10 添加了对一种全新人脸识别身份验证堆栈的支持,该堆栈可安全处理相机帧,从而在支持的硬件上进行人脸识别身份验证时保障安全和隐私。Android 10 还提供了一种快捷的方式来集成符合安全标准的实现方案,让人们能通过集成应用来处理一些事务(如网上银行或其他服务)。
整数溢出排错功能
Android 10 在软件编解码器中启用了整数溢出排错功能 (IntSan)。确保播放性能对于设备硬件中不支持的任何编解码器而言都在接受范围内。 以下编解码器启用了 IntSan:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
模块化系统组件
Android 10 采用模块化方式处理一些 Android 系统组件,使其能够在 Android 的常规发布周期外的时间进行更新。下面列举了几种模块:
- Android 运行时
- Conscrypt
- DNS 解析器
- DocumentsUI
- ExtServices
- 媒体
- ModuleMetadata
- 网络
- PermissionController
- 时区数据
OEMCrypto
Android 10 使用 OEMCrypto API 版本 15。
Scudo
Scudo 是一个动态的用户模式内存分配器,旨在提高遇到堆相关漏洞时的复原能力。它提供了标准 C 分配和取消分配基元,以及 C++ 基元。
ShadowCallStack
ShadowCallStack
(SCS) 是一种 LLVM 插桩模式,可将函数的返回地址保存到非叶函数的函数 prolog 中单独分配的 ShadowCallStack 实例,并从函数 epilog 中的 ShadowCallStack 实例加载返回地址,从而防止返回地址覆盖(比如堆栈缓冲区溢出)。
WPA3 和 Wi-Fi Enhanced Open
Android 10 添加了对 Wi-Fi Protected Access 3 (WPA3) 和 Wi-Fi Enhanced Open 安全标准的支持,可更好地保护隐私,更稳健地防御已知攻击。
隐私设置
以 Android 9 或更低版本为目标平台时的应用访问权限
如果您的应用在 Android 10 或更高版本上运行,但其目标平台是 Android 9(API 级别 28)或更低版本,则 Android 平台具有以下行为:
- 如果您的应用为
ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION声明了<uses-permission>元素,则系统会在安装期间自动为ACCESS_BACKGROUND_LOCATION添加<uses-permission>元素。 - 如果您的应用请求了
ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION,系统会自动将ACCESS_BACKGROUND_LOCATION添加到请求中。
后台 Activity 限制
从 Android 10 开始,系统会增加针对从后台启动 Activity 的限制。此项行为变更有助于最大限度地减少对用户造成的干扰,并且可以让用户更好地控制其屏幕上显示的内容。只要您的应用启动 activity 是因用户互动直接引发的,该应用就极有可能不会受到这些限制的影响。
如需详细了解从后台启动 activity 的建议替代方法,请参阅有关如何在应用中提醒用户注意有时效性的事件的指南。
相机元数据
Android 10 更改了 getCameraCharacteristics() 方法默认返回的信息的广度。具体而言,您的应用必须具有 CAMERA 权限才能访问此方法的返回值中可能包含的设备特定元数据。
如需详细了解这些变更,请参阅关于需要权限的相机字段的部分。
剪贴板数据
对于 Android 10 或更高版本,除非您的应用是默认输入法 (IME) 或是目前聚焦的应用,否则它无法访问剪贴板中的数据。
设备位置
为了让用户更好地控制应用对位置信息的访问权限,Android 10 引入了 ACCESS_BACKGROUND_LOCATION 权限。
不同于 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限,ACCESS_BACKGROUND_LOCATION 权限仅会影响应用在后台运行时对位置信息的访问权限。除非符合以下条件之一,否则应用将被视为在后台访问位置信息:
- 属于该应用的 Activity 可见。
- 该应用运行的某个前台服务已声明前台服务类型为
location。
如需将应用中的某个服务声明为前台服务类型,请将应用的targetSdkVersion或compileSdkVersion设置为29或更高版本。详细了解前台服务如何继续执行用户发起的需要访问位置信息的操作。
外部存储空间
默认情况下,以 Android 10 及更高版本为目标平台的应用在访问外部存储设备中的文件时存在范围限制,即分区存储。此类应用可以查看外部存储设备内以下类型的文件,无需请求任何与存储相关的用户权限:
- 特定于应用的目录中的文件(使用
getExternalFilesDir()访问)。 - 应用创建的照片、视频和音频片段(通过媒体库访问)。
如需详细了解分区存储以及如何共享、访问和修改在外部存储设备上保存的文件,请参阅有关如何管理外部存储设备中的文件以及如何访问和修改媒体文件的指南。
随机分配 MAC 地址
默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。
如果您的应用处理企业使用场景,Android 平台会提供 API,用于执行与 MAC 地址相关的几个操作。
- 获取随机分配的 MAC 地址:设备所有者应用和资料所有者应用可以通过调用
getRandomizedMacAddress()检索分配给特定网络的随机分配 MAC 地址。 - 获取实际的出厂 MAC 地址:设备所有者应用可以通过调用
getWifiMacAddress()检索设备的实际硬件 MAC 地址。此方法对于跟踪设备队列非常有用。
不可重置的设备标识符
从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包括 IMEI 和序列号)。
BuildTelephonyManager
如果您的应用没有该权限,但您仍尝试查询不可重置标识符的相关信息,则 Android 平台的响应会因目标 SDK 版本而异:
- 如果应用以 Android 10 或更高版本为目标平台,则会发生
SecurityException。 - 如果应用以 Android 9(API 级别 28)或更低版本为目标平台,则相应方法会返回
null或占位符数据(如果应用具有READ_PHONE_STATE权限)。否则,会发生SecurityException。
身体活动识别
Android 10 针对需要检测用户步数或对用户的身体活动(例如步行、骑车或坐车)进行分类的应用引入了 android.permission.ACTIVITY_RECOGNITION 运行时权限。此项权限旨在让用户了解设备传感器数据在“设置”中的使用方式。
除非用户已向您的应用授予此权限,否则 Google Play 服务中的一些库(例如 Activity Recognition API 和 Google Fit API)不会提供结果。
设备上要求您声明此权限的内置传感器只有计步器和步测器传感器。
如果您的应用以 Android 9(API 级别 28)或更低版本为目标平台,只要您的应用满足以下各项条件,系统会根据需要自动向您的应用授予 android.permission.ACTIVITY_RECOGNITION 权限:
- 清单文件包含
com.google.android.gms.permission.ACTIVITY_RECOGNITION权限。 - 清单文件不包含
android.permission.ACTIVITY_RECOGNITION权限。
如果系统自动授予 android.permission.ACTIVITY_RECOGNITION 权限,当您将应用更新为以 Android 10 为目标平台后,您的应用会保留此权限。但是,用户可以随时在系统设置中撤消此权限。
/proc/net 文件系统限制
在搭载 Android 10 或更高版本的设备上,应用无法访问 /proc/net,包括与设备的网络状态相关的信息。需要访问此信息的应用(如 VPN)应使用 NetworkStatsManager 或 ConnectivityManager 类。
从界面中移除了权限组
从 Android 10 开始,应用无法在界面中查询权限的分组方式。
移除了联系人关系密切程度
从 Android 10 开始,平台不再记录联系人的关系密切程度信息。因此,如果您的应用对用户的联系人进行搜索,系统将不会按互动频率对搜索结果排序。
有关 ContactsProvider 的指南包含一项说明特定字段和方法已废弃的声明(从 Android 10 开始,这些字段和方法在所有设备上已作废)。
限制对屏幕内容的访问
为了保护用户的屏幕内容,Android 10 更改了 READ_FRAME_BUFFER、CAPTURE_VIDEO_OUTPUT 和 CAPTURE_SECURE_VIDEO_OUTPUT 权限的作用域,从而禁止以静默方式访问设备的屏幕内容。从 Android 10 开始,这些权限只能通过签名访问。
需要访问设备屏幕内容的应用应使用 MediaProjection API,此 API 会显示要求用户同意访问的提示。
USB 设备序列号
如果您的应用以 Android 10 或更高版本为目标平台,则该应用只能在用户授予其访问 USB 设备或配件的权限后才能读取序列号。
如需详细了解如何使用 USB 设备,请参阅有关如何配置 USB 主机的指南。
Wi-Fi
以 Android 10 或更高版本为目标平台的应用无法启用或停用 Wi-Fi。WifiManager.setWifiEnabled() 方法始终返回 false。
如果您需要提示用户启用或停用 Wi-Fi,请使用设置面板。
对直接访问已配置的 Wi-Fi 网络实施了限制
为了保护用户隐私,只有系统应用和设备政策控制者 (DPC) 支持手动配置 Wi-Fi 网络列表。给定 DPC 可以是设备所有者,也可以是资料所有者。
如果应用以 Android 10 或更高版本为目标平台,并且应用不是系统应用或 DPC,则下列方法不会返回有用数据:
getConfiguredNetworks()方法始终返回空列表。- 每个返回整数值的网络操作方法(
addNetwork()和updateNetwork())始终返回 -1。 - 每个返回布尔值的网络操作(
removeNetwork()、reassociate()、enableNetwork()、disableNetwork()、reconnect()和disconnect())始终返回false。
Android 9
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需 Android 9 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
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. Zalecane jest, aby program rozruchowy obsługiwał ochronę przed przywracaniem w przypadku HLOS. Zalecamy, aby bootloadery można było odblokować tylko przez użytkownika, który fizycznie wejdzie w interakcję z urządzeniem.
- Ekran blokady. Dodano obsługę sprzętu odpornego na manipulację do weryfikacji danych logowania na ekranie blokady.
- KeyStore. Wymagana weryfikacja klucza na wszystkich urządzeniach z Androidem 8.0 lub nowszym. Dodano obsługę weryfikacji tożsamości, aby ulepszyć rejestrację typu zero-touch.
- Piaskownica. Bardziej ściśle odizolowane sandboxe wielu komponentów za pomocą standardowego interfejsu Project Treble między frameworkem a komponentami specyficznymi dla urządzenia. Zastosowano filtrowanie seccomp do wszystkich nieznanych aplikacji w celu zmniejszenia powierzchni ataku rdzenia. WebView działa teraz w ramach odizolowanego procesu z bardzo ograniczonym dostępem do reszty systemu.
- Utrwalanie jądra. Wdrożone zabezpieczenia, emulacja PAN, odczyt tylko po zainicjowaniu i KASLR.
- Zabezpieczanie przestrzeni użytkownika. Wdrożenie CFI w przypadku zbioru mediów. Nakładki aplikacji nie mogą już zasłaniać okien krytycznych dla systemu, a użytkownicy mają możliwość ich zamykania.
- Aktualizacja systemu operacyjnego streamingu. Włączone aktualizacje na urządzeniach, na których jest mało 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 z aplikacjami.
- Prywatność. Identyfikator Androida (SSAID) ma inną wartość dla każdej aplikacji i każdego użytkownika na urządzeniu. W przypadku aplikacji w przeglądarce identyfikator klienta Widevine zwraca inną wartość dla każdej nazwy pakietu aplikacji i źródła internetowego.
Pole
net.hostnamejest teraz puste, a klient DHCP nie wysyła już nazwy hosta. Interfejsandroid.os.Build.SERIALzostał zastąpiony interfejsemBuild.SERIALAPI, 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.
- Direct Boot (bezpośrednie uruchamianie). Bezpośredni 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.
- Losowy porządek wczytywania bibliotek i ulepszony mechanizm ASLR. Zwiększona losowość sprawia, że niektóre ataki polegające na ponownym użyciu kodu stają się mniej niezawodne.
- Utrwalanie 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 podpisywania plików APK w wersji 2. Wprowadziliśmy system 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 bezpieczeństwo sieci i protokół TLS za pomocą deklaratywnego pliku konfiguracji.
Android 6
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 6.0 中提供的一些主要安全增强功能:
- 运行时权限:应用在运行时请求权限,而不是在安装时被授予权限。用户可以为 M 及更低版本的 Android 应用启用和停用权限。
- 验证启动:在执行系统软件之前,先对其进行一系列加密检查,以确保手机从引导加载程序到操作系统均处于正常状况。
- 硬件隔离安全措施:新的硬件抽象层 (HAL),Fingerprint API、锁定屏幕、设备加密功能和客户端证书可以利用它来保护密钥免遭内核入侵和/或现场攻击。
- 指纹:现在,只需触摸一下,即可解锁设备。开发者还可以借助新的 API 来使用指纹锁定和解锁加密密钥。
- 加装 SD 卡:可将移动媒体设备加装到设备上,以便扩展可用存储空间来存放本地应用数据、照片、视频等内容,但仍受块级加密保护。
- 明文流量:开发者可以使用新的 StrictMode 来确保其应用不会使用明文。
- 系统加固:通过由 SELinux 强制执行的政策对系统进行加固。这可以实现更好的用户隔离和 IOCTL 过滤、降低可从设备/系统之外访问的服务面临的威胁、进一步强化 SELinux 域,以及高度限制对 /proc 的访问。
- USB 访问控制:必须由用户确认是否允许通过 USB 访问手机上的文件、存储空间或其他功能。现在,默认设置是“仅充电”,如果要访问存储空间,必须获得用户的明确许可。
Android 5
5,0
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 5.0 中提供的一些主要安全增强功能:
- 默认加密。在以开箱即用的方式搭载 L 的设备上,会默认启用全盘加密功能,以便更好地保护丢失设备或被盗设备上的数据。对于更新到 L 的设备,可以在设置 > 安全性部分进行加密。
- 经过改进的全盘加密功能。使用
scrypt保护用户密码免遭暴力破解攻击;在可能的情况下,该密钥会绑定到硬件密钥库,以防范来自设备外的攻击。 和以往一样,Android 屏幕锁定密钥和设备加密密钥不会被发送到设备以外,也不会提供给任何应用。 - 通过 SELinux 得到增强的 Android 沙盒。对于所有域,Android 现在都要求 SELinux 处于强制模式。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强现有的自主访问控制 (DAC) 安全模型。这个新的安全层为防范潜在的安全漏洞提供了额外的保护屏障。
- Smart Lock。Android 现在包含一些 Trustlet,它们可以提供更灵活的设备解锁方式。 例如,Trustlet 可让设备在靠近其他可信设备时自动解锁(通过 NFC、蓝牙),或让设备在用户拥有可信面孔时自动解锁。
- 面向手机和平板电脑的多用户功能、受限个人资料和访客模式。Android 现在为手机提供了多用户功能,并包含一个访客模式。利用访客模式,您可以让访客轻松地临时使用您的设备,而不向他们授予对您的数据和应用的访问权限。
- 不使用 OTA 的 WebView 更新方式。现在可以独立于框架对 WebView 进行更新,而且无需采用系统 OTA 方式。 这有助于更快速地应对 WebView 中的潜在安全问题。
- 经过更新的 HTTPS 和 TLS/SSL 加密功能。现在启用了 TLSv1.2 和 TLSv1.1,首选是正向加密,启用了 AES-GCM,停用了弱加密套件(MD5、3DES 和导出密码套件)。如需了解详情,请访问 https://developer.android.com/reference/javax/net/ssl/SSLSocket.html。
- 移除了非 PIE 链接器支持。Android 现在要求所有动态链接的可执行文件都要支持 PIE(位置无关可执行文件)。这有助于增强 Android 的地址空间布局随机化 (ASLR) 实现。
- FORTIFY_SOURCE 改进。以下 libc 函数现在实现了 FORTIFY_SOURCE 保护功能:
stpcpy()、stpncpy()、read()、recvfrom()、FD_CLR()、FD_SET()和FD_ISSET()。这有助于防范涉及这些函数的内存损坏漏洞。 - 安全修复程序。Android 5.0 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。
Android 4 i starsze
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.4 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。 Android 现在以强制模式使用 SELinux。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于自主访问控制 (DAC) 的现有安全模型。 这为防范潜在的安全漏洞提供了额外的保护屏障。
- 按用户应用 VPN。 在多用户设备上,现在按用户应用 VPN。 这样一来,用户就可以通过一个 VPN 路由所有网络流量,而不会影响使用同一设备的其他用户。
- AndroidKeyStore 中的 ECDSA 提供程序支持。 Android 现在有一个允许使用 ECDSA 和 DSA 算法的密钥库提供程序。
- 设备监测警告。 如果有任何可能允许监测加密网络流量的证书添加到设备证书库中,Android 都会向用户发出警告。
- FORTIFY_SOURCE。 Android 现在支持 FORTIFY_SOURCE 第 2 级,并且所有代码在编译时都会受到这些保护。FORTIFY_SOURCE 已得到增强,能够与 Clang 配合使用。
- 证书锁定。 Android 4.4 能够检测安全的 SSL/TLS 通信中是否使用了欺诈性 Google 证书,并且能够阻止这种行为。
- 安全修复程序。 Android 4.4 中还包含针对 Android 特有漏洞的修复程序。 有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开源项目中提供了相应的修复程序。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复程序。
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre z ulepszeń zabezpieczeń dostępnych w Androidzie 4.3:
- Piaskownicę Androida wzmocniono za pomocą SELinux. Ta wersja wzmacnia piaskownicę Androida za pomocą systemu SELinux, który jest systemem MAC (Mandatory Access Control) w rdzeniu systemu Linux. Wzmocnienie SELinux jest niewidoczne dla użytkowników i programistów. Zapewnia większą odporność dotychczasowego modelu zabezpieczeń Androida, zachowując przy tym zgodność z dotychczasowymi aplikacjami. Aby zapewnić ciągłą zgodność, ta wersja umożliwia korzystanie z SELinux w trybie permisywnym. Ten tryb rejestruje wszelkie naruszenia zasad, ale nie powoduje błędów w aplikacjach ani nie wpływa na działanie systemu.
- Brak programów
setuidanisetgid. Dodano obsługę możliwości systemu plików do plików systemowych Androida i usunięto wszystkie programysetuidlubsetgid. Pozwala to zmniejszyć powierzchnię ataku na konto root i prawdopodobieństwo wystąpienia potencjalnych luk w zabezpieczeniach. - Uwierzytelnianie przez ADB. Począwszy od Androida 4.2.2 połączenia z ADB są uwierzytelniane za pomocą pary kluczy RSA. Zapobiega to nieautoryzowanemu używaniu narzędzia ADB, gdy atakujący ma fizyczny dostęp do urządzenia.
- Ogranicz dostęp do funkcji Setuid w aplikacjach na Androida.
Partycja
/systemjest teraz zamontowana z użytkownikiem nosuid dla procesów utworzonych przez zygote, co uniemożliwia aplikacjom na Androida wykonywanie programówsetuid. 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 funkcji
prctl(PR_CAPBSET_DROP), aby przed wykonaniem aplikacji odrzucić niepotrzebne możliwości. Zapobiega to uzyskiwaniu przez aplikacje na Androida i aplikacje uruchamiane z powłoki uprawnień uprzywilejowanych. - Dostawca AndroidKeyStore Android ma teraz dostawcę magazynu kluczy, który umożliwia aplikacjom tworzenie kluczy do użytku wyłącznego. Dzięki temu aplikacje mają interfejs API do tworzenia i przechowywania kluczy prywatnych, których nie mogą używać inne aplikacje.
- Pęk kluczy
isBoundKeyAlgorithmInterfejs 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 możesz tworzyć i przechowywać klucze prywatne, których nie można wyeksportować z urządzenia nawet w przypadku naruszenia zabezpieczeń na poziomie root. NO_NEW_PRIVS. Zygote na Androidzie używa teraz funkcjiprctl(PR_SET_NO_NEW_PRIVS), aby zablokować dodawanie nowych uprawnień przed wykonaniem 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_SOURCEulepszenia. WłączonaFORTIFY_SOURCEna Androidzie x86 i MIPS oraz wzmocnione wywołaniastrchr(),strrchr(),strlen()iumask(). Może to wykryć potencjalne luki w zabezpieczeniach związane z uszkodzeniem pamięci lub nieograniczonymi łańcuchami znaków.- Zabezpieczenia dotyczące przeniesienia Włączono przenoszenie tylko do odczytu (relro) dla wykonalnych plików z linkami statycznymi i usunięto wszystkie przeniesienia tekstu w kodzie Androida. Zapewnia to ochronę w głąb przed potencjalnymi lukami w zabezpieczeniach związanymi z uszkodzeniem pamięci.
- Ulepszono EntropyMixer. EntropyMixer zapisuje teraz entropię podczas zamykania i uruchamiania, a także okresowo miesza. Umożliwia to zachowanie całej entropii wygenerowanej podczas włączonego urządzenia. Jest to szczególnie przydatne w przypadku urządzeń, które są ponownie uruchamiane bezpośrednio po zaimplementowaniu.
- Poprawki zabezpieczeń Android 4.3 zawiera też poprawki dotyczące luk w zabezpieczeniach specyficznych dla tego systemu. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w ramach Projektu Android Open Source. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wersjami Androida wcześniejszymi niż 10.0 mogą również zawierać te poprawki.
Android 提供了一个多层安全模型,Android 安全性概述中对该模型进行了介绍。每个 Android 更新版本中都包含数十项用于保护用户的安全增强功能。 以下是 Android 4.2 中引入的一些安全增强功能:
- 应用验证:用户可以选择启用“验证应用”,并且可以选择在安装应用之前由应用验证程序对应用进行筛查。如果用户尝试安装的应用可能有害,应用验证功能可以提醒用户;如果应用的危害性非常大,应用验证功能可以阻止安装。
- 加强对付费短信的控制:如果有应用尝试向使用付费服务的短号码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止该应用发送短信。
- 始终开启的 VPN:可以配置 VPN,以确保在建立 VPN 连接之前应用无法访问网络。这有助于防止应用跨其他网络发送数据。
- 证书锁定:Android 的核心库现在支持证书锁定。如果证书未关联到一组应关联的证书,锁定的域将会收到证书验证失败消息。这有助于保护证书授权机构免遭可能的入侵。
- 改进后的 Android 权限显示方式:权限划分到了多个对用户来说更清晰明了的组中。在审核权限时,用户可以点击权限来查看关于相应权限的更多详细信息。
- installd 安全强化:
installd守护程序不会以 root 用户身份运行,这样可以缩小 root 提权攻击的潜在攻击面。 - init 脚本安全强化:init 脚本现在会应用
O_NOFOLLOW语义来防范与符号链接相关的攻击。 FORTIFY_SOURCE:Android 现在会实现FORTIFY_SOURCE,以供系统库和应用用于防范内存损坏。- ContentProvider 默认配置:默认情况下,对于每个 content provider,以 API 级别 17 为目标的应用都会将
export设为false,以缩小应用的默认受攻击面。 - 加密:修改了 SecureRandom 和 Cipher.RSA 的默认实现,以便使用 OpenSSL。为使用 OpenSSL 1.0.1 的 TLSv1.1 和 TLSv1.2 添加了安全套接字支持
- 安全漏洞修复程序:升级了开放源代码库,在其中新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。
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 przepełnieniu bufora stosu (-fstack-protector)
- safe_iop, aby zmniejszyć przepełnienie liczb całkowitych;
- Rozszerzenia do OpenBSD dlmalloc zapobiegające występowaniu luk w zabezpieczeniach związanych z podwójnym zwalnianiem pamięci (double free()) oraz zapobiegające atakom polegającym na konsolidowaniu 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
- Ochrona przed lukami w zabezpieczeniach w ciągu formatu (-Wformat-security -Werror=format-security)
- sprzętowe zapobieganie wykonywaniu (NX) w celu zapobiegania wykonywaniu kodu w stosie i stosie zbiorczym;
- mmap_min_addr w systemie Linux 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
- Losowanie rozkładu przestrzeni adresowej (ASLR) w celu losowego wybierania kluczowych lokalizacji w pamięci.
- Android 4.1
- Obsługa PIE (kompilacji niezależnej od pozycji)
- Przenoszenie tylko do odczytu / natychmiastowe wiązanie (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict włączony (zapobiega wyciekowi adresów jądra)
- kptr_restrict włączony (zapobiega wyciekowi adresów jądra)