Android liên tục cải thiện các tính năng và dịch vụ bảo mật. Xem danh sách các tính năng nâng cao theo bản phát hành trong bảng điều hướng bên trái.
Android 14
Mỗi bản phát hành Android đều có hàng chục tính năng cải tiến về bảo mật để bảo vệ người dùng. Dưới đây là một số điểm cải tiến chính về bảo mật có trong Android 14:
- AddressSanitizer được hỗ trợ phần cứng (HWASan), được giới thiệu trong Android 10, là một công cụ phát hiện lỗi bộ nhớ tương tự như AddressSanitizer. Android 14 mang đến những cải tiến đáng kể cho HWASan. Tìm hiểu cách công cụ này giúp ngăn chặn lỗi xâm nhập vào các bản phát hành Android, HWAddressSanitizer
- Trên Android 14, bắt đầu với các ứng dụng chia sẻ dữ liệu vị trí với bên thứ ba, hộp thoại cấp quyền khi bắt đầu chạy của hệ thống hiện có một phần nhấp vào được để nêu bật các phương pháp chia sẻ dữ liệu của ứng dụng, bao gồm cả thông tin như lý do ứng dụng có thể quyết định chia sẻ dữ liệu với bên thứ ba.
- Android 12 đã ra mắt một tuỳ chọn để tắt tính năng hỗ trợ 2G ở cấp modem, giúp bảo vệ người dùng khỏi rủi ro bảo mật vốn có từ mô hình bảo mật lỗi thời của 2G. Nhận thấy việc tắt 2G có thể quan trọng như thế nào đối với khách hàng doanh nghiệp, Android 14 đã bật tính năng bảo mật này trong Android Enterprise, hỗ trợ quản trị viên CNTT hạn chế khả năng thiết bị được quản lý hạ cấp xuống kết nối 2G.
- Thêm tính năng hỗ trợ để từ chối các kết nối di động được mã hoá rỗng, đảm bảo rằng lưu lượng truy cập SMS và thoại chuyển mạch vòng luôn được mã hoá và bảo vệ khỏi hành vi chặn thụ động qua mạng không dây. Tìm hiểu thêm về chương trình của Android để tăng cường khả năng kết nối di động.
- Thêm tính năng hỗ trợ cho nhiều IMEI
- Kể từ Android 14, AES-HCTR2 là chế độ ưu tiên để mã hoá tên tệp cho các thiết bị có hướng dẫn mã hoá tăng tốc.
- Khả năng kết nối mạng di động
- Thêm tài liệu cho Trung tâm an toàn của Android
- Nếu ứng dụng của bạn nhắm đến Android 14 và sử dụng tính năng Tải mã động (DCL), thì tất cả tệp được tải động đều phải được đánh dấu là chỉ có quyền đọc. Nếu không, hệ thống sẽ gửi ra một ngoại lệ. Bất cứ khi nào có thể thì bạn nên tránh tải mã động, vì làm như vậy sẽ làm tăng đáng kể nguy cơ ứng dụng có thể bị xâm phạm do bị chèn mã hoặc can thiệp vào mã.
Hãy xem ghi chú phát hành đầy đủ của AOSP và danh sách tính năng và thay đổi dành cho nhà phát triển Android.
Android 13
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Dưới đây là một số điểm cải tiến chính về bảo mật có trong Android 13:
- Android 13 bổ sung tính năng hỗ trợ trình bày nhiều tài liệu. Giao diện Phiên trình bày mới này cho phép ứng dụng thực hiện một bản trình bày nhiều tài liệu, điều không thể thực hiện được với API hiện có. Để biết thêm thông tin, hãy tham khảo phần Thông tin xác thực danh tính
- Trong Android 13, các ý định bắt nguồn từ ứng dụng bên ngoài sẽ được phân phối đến một thành phần đã xuất nếu và chỉ khi các ý định đó khớp với các phần tử bộ lọc ý định đã khai báo.
- Open Mobile API (OMAPI) là một API chuẩn dùng để giao tiếp với Phần tử bảo mật của thiết bị. Trước Android 13, chỉ các ứng dụng và mô-đun khung mới có quyền truy cập vào giao diện này. Bằng cách chuyển đổi thành giao diện ổn định của nhà cung cấp, các mô-đun HAL cũng có thể giao tiếp với các phần tử bảo mật thông qua dịch vụ OMAPI. Để biết thêm thông tin, hãy xem phần Giao diện ổn định của nhà cung cấp OMAPI.
- Kể từ Android 13-QPR, UID dùng chung không còn được dùng nữa. Người dùng Android 13 trở lên nên đặt dòng "android:sharedUserMaxSdkVersion="32"" vào tệp kê khai. Mục nhập này ngăn người dùng mới nhận được UID dùng chung. Để biết thêm thông tin về UID, hãy xem phần Ký ứng dụng.
- Android 13 đã thêm tính năng hỗ trợ các thuật toán mật mã đối xứng của Kho khoá, chẳng hạn như AES (Tiêu chuẩn mã hoá nâng cao), HMAC (Mã xác thực thông báo băm khoá) và các thuật toán mật mã bất đối xứng (bao gồm cả Elliptic Curve, RSA2048, RSA4096 và Curve 25519)
- Android 13 (API cấp 33) trở lên hỗ trợ quyền khi bắt đầu chạy để gửi thông báo không được miễn trừ từ ứng dụng. Điều này giúp người dùng kiểm soát thông báo về quyền mà họ thấy.
- Thêm lời nhắc cho mỗi lần sử dụng đối với các ứng dụng yêu cầu quyền truy cập vào tất cả nhật ký thiết bị, cho phép người dùng cho phép hoặc từ chối quyền truy cập.
- đã ra mắt Khung ảo hoá Android (AVF), kết hợp nhiều trình điều khiển ảo hoá trong một khung với các API được chuẩn hoá. Công cụ này cung cấp môi trường thực thi an toàn và riêng tư để thực thi khối lượng công việc được cách ly bằng trình điều khiển ảo hoá.
- Ra mắt lược đồ chữ ký APK phiên bản 3.1 Theo mặc định, tất cả các lượt xoay vòng khoá mới sử dụng apksigner đều sử dụng lược đồ chữ ký phiên bản 3.1 để nhắm đến lượt xoay vòng cho Android 13 trở lên.
Hãy xem ghi chú phát hành đầy đủ của AOSP và danh sách tính năng và thay đổi dành cho nhà phát triển Android.
Android 12
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Dưới đây là một số điểm cải tiến chính về bảo mật có trong Android 12:
- Android 12 giới thiệu API BiometricManager.Strings. API này cung cấp các chuỗi được bản địa hoá cho các ứng dụng sử dụng BiometricPrompt để xác thực. Các chuỗi này được thiết kế để nhận biết thiết bị và cung cấp thông tin cụ thể hơn về loại xác thực có thể được sử dụng. Android 12 cũng hỗ trợ cảm biến vân tay dưới màn hình
- Bổ sung tính năng hỗ trợ cho cảm biến vân tay ở dưới màn hình
- Giới thiệu về Ngôn ngữ định nghĩa giao diện Android vân tay (AIDL)
- Hỗ trợ AIDL nhận dạng khuôn mặt mới
- Giới thiệu Rust làm ngôn ngữ phát triển nền tảng
- Thêm tuỳ chọn để người dùng chỉ cấp quyền truy cập vào thông tin vị trí gần đúng của họ
- Thêm chỉ báo Quyền riêng tư trên thanh trạng thái khi một ứng dụng đang dùng máy ảnh hoặc micrô
- Lõi điện toán riêng tư (PCC) của Android
- Thêm tuỳ chọn tắt tính năng hỗ trợ 2G
Android 11
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Để biết danh sách một số tính năng bảo mật nâng cao chính có trong Android 11, hãy xem Ghi chú phát hành Android.
Android 10
Every Android release includes dozens of security enhancements to protect users. Android 10 includes several security and privacy enhancements. See the Android 10 release notes for a complete list of changes in Android 10.
Security
BoundsSanitizer
Android 10 deploys BoundsSanitizer (BoundSan) in Bluetooth and codecs. BoundSan uses UBSan's bounds sanitizer. This mitigation is enabled on a per-module level. It helps keep critical components of Android secure and shouldn't be disabled. BoundSan is enabled in the following codecs:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Execute-only memory
By default, executable code sections for AArch64 system binaries are marked execute-only (nonreadable) as a hardening mitigation against just-in-time code reuse attacks. Code that mixes data and code together and code that purposefully inspects these sections (without first remapping the memory segments as readable) no longer functions. Apps with a target SDK of Android 10 (API level 29 or higher) are impacted if the app attempts to read code sections of execute-only memory (XOM) enabled system libraries in memory without first marking the section as readable.
Extended access
Trust agents, the underlying mechanism used by tertiary authentication mechanisms such as Smart Lock, can only extend unlock in Android 10. Trust agents can no longer unlock a locked device and can only keep a device unlocked for a maximum of four hours.
Face authentication
Face authentication allows users to unlock their device simply by looking at the front of their device. Android 10 adds support for a new face authentication stack that can securely process camera frames, preserving security and privacy during face authentication on supported hardware. Android 10 also provides an easy way for security-compliant implementations to enable app integration for transactions such as online banking or other services.
Integer Overflow Sanitization
Android 10 enables Integer Overflow Sanitization (IntSan) in software codecs. Ensure that playback performance is acceptable for any codecs that aren't supported in the device's hardware. IntSan is enabled in the following codecs:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Modular system components
Android 10 modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. Some modules include:
- Android Runtime
- Conscrypt
- DNS Resolver
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Time Zone Data
OEMCrypto
Android 10 uses OEMCrypto API version 15.
Scudo
Scudo is a dynamic user-mode memory allocator designed to be more resilient against heap-related vulnerabilities. It provides the standard C allocation and deallocation primitives, as well as the C++ primitives.
ShadowCallStack
ShadowCallStack
(SCS)
is an LLVM
instrumentation mode that protects against return address overwrites (like
stack buffer overflows) by saving a function's return address to a separately
allocated ShadowCallStack
instance in the function prolog of
nonleaf functions and loading the return address from the
ShadowCallStack
instance in the function epilog.
WPA3 and Wi-Fi Enhanced Open
Android 10 adds support for the Wi-Fi Protected Access 3 (WPA3) and Wi-Fi Enhanced Open security standards to provide better privacy and robustness against known attacks.
Privacy
App access when targeting Android 9 or lower
If your app runs on Android 10 or higher but targets Android 9 (API level 28) or lower, the platform applies the following behavior:
- If your app declares a
<uses-permission>
element for eitherACCESS_FINE_LOCATION
orACCESS_COARSE_LOCATION
, the system automatically adds a<uses-permission>
element forACCESS_BACKGROUND_LOCATION
during installation. - If your app requests either
ACCESS_FINE_LOCATION
orACCESS_COARSE_LOCATION
, the system automatically addsACCESS_BACKGROUND_LOCATION
to the request.
Background activity restrictions
Starting in Android 10, the system places restrictions
on starting activities from the background. This behavior change helps
minimize interruptions for the user and keeps the user more in control of what's
shown on their screen. As long as your app starts activities as a direct result
of user interaction, your app most likely isn't affected by these restrictions.
To learn more about the recommended alternative to starting activities from
the background, see the guide on how to alert
users of time-sensitive events in your app.
Camera metadata
Android 10 changes the breadth of information that the getCameraCharacteristics()
method returns by default. In particular, your app must have the CAMERA
permission in order to access potentially device-specific metadata that is
included in this method's return value.
To learn more about these changes, see the section about camera
fields that require permission.
Clipboard data
Unless your app is the default input method editor (IME) or is the app that currently has focus, your app cannot access clipboard data on Android 10 or higher.
Device location
To support the additional control that users have over an app's access to
location information, Android 10 introduces the ACCESS_BACKGROUND_LOCATION
permission.
Unlike the ACCESS_FINE_LOCATION
and ACCESS_COARSE_LOCATION
permissions, the ACCESS_BACKGROUND_LOCATION
permission only affects
an app's access to location when it runs in the background. An app is considered
to be accessing location in the background unless one of the following
conditions is satisfied:
- An activity belonging to the app is visible.
- The app is running a foreground service that has declared a foreground
service type of
location
.
To declare the foreground service type for a service in your app, set your app'stargetSdkVersion
orcompileSdkVersion
to29
or higher. Learn more about how foreground services can continue user-initiated actions that require access to location.
External storage
By default, apps targeting Android 10 and higher are given scoped access into external storage, or scoped storage. Such apps can see the following types of files within an external storage device without needing to request any storage-related user permissions:
- Files in the app-specific directory, accessed using
getExternalFilesDir()
. - Photos, videos, and audio clips that the app created from the media store.
To learn more about scoped storage, as well as how to share, access, and modify files that are saved on external storage devices, see the guides on how to manage files in external storage and access and modify media files.
MAC address randomization
On devices that run Android 10 or higher, the system transmits randomized MAC
addresses by default.
If your app handles an enterprise use case, the
platform provides APIs for several operations related to MAC addresses:
- Obtain randomized MAC address: Device owner apps and
profile owner apps can retrieve the randomized MAC address assigned to a
specific network by calling
getRandomizedMacAddress()
. - Obtain actual, factory MAC address: Device owner apps can
retrieve a device's actual hardware MAC address by calling
getWifiMacAddress()
. This method is useful for tracking fleets of devices.
Non-resettable device identifiers
Starting in Android 10, apps must have the
READ_PRIVILEGED_PHONE_STATE
privileged permission in order to
access the device's non-resettable identifiers, which include both IMEI and
serial number.
Build
TelephonyManager
If your app doesn't have the permission and you try asking for information about non-resettable identifiers anyway, the platform's response varies based on target SDK version:
- If your app targets Android 10 or higher, a
SecurityException
occurs. - If your app targets Android 9 (API level 28) or lower, the method returns
null
or placeholder data if the app has theREAD_PHONE_STATE
permission. Otherwise, aSecurityException
occurs.
Physical activity recognition
Android 10 introduces the android.permission.ACTIVITY_RECOGNITION
runtime permission for apps that need to detect the user's step count or
classify the user's physical activity, such as walking, biking, or moving in a
vehicle. This is designed to give users visibility of how device sensor data is
used in Settings.
Some libraries within Google Play services, such as the Activity
Recognition API and the Google
Fit API, don't provide results unless the user has granted your app this
permission.
The only built-in
sensors on the device that require you to declare this permission are the step
counter and step
detector sensors.
If your app targets Android 9 (API level 28) or lower, the system
auto-grants the android.permission.ACTIVITY_RECOGNITION
permission
to your app, as needed, if your app satisfies each of the following
conditions:
- The manifest file includes the
com.google.android.gms.permission.ACTIVITY_RECOGNITION
permission. - The manifest file doesn't include the
android.permission.ACTIVITY_RECOGNITION
permission.
If the system-auto grants the
android.permission.ACTIVITY_RECOGNITION
permission, your app
retains the permission after you update your app to target Android 10. However,
the user can revoke this permission at any time in system settings.
/proc/net filesystem restrictions
On devices that run Android 10 or higher, apps cannot access
/proc/net
, which includes information about a device's network
state. Apps that need access to this information, such as VPNs, should use the
NetworkStatsManager
or ConnectivityManager
class.
Permission groups removed from UI
As of Android 10, apps cannot look up how permissions are grouped in the UI.
Removal of contacts affinity
Starting in Android 10, the platform doesn't keep track of contacts affinity
information. As a result, if your app conducts a search on the user's contacts,
the results aren't ordered by frequency of interaction.
The guide about ContactsProvider
contains a notice describing
the specific fields
and methods that are obsolete on all devices starting in Android 10.
Restricted access to screen contents
To protect users' screen contents, Android 10 prevents silent access to the
device's screen contents by changing the scope of the
READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
, and
CAPTURE_SECURE_VIDEO_OUTPUT
permissions. As of Android 10, these
permissions are signature-access
only.
Apps that need to access the device's screen contents should use the
MediaProjection
API, which displays a prompt asking the user to provide consent.
USB device serial number
If your app targets Android 10 or higher, your app cannot read the serial
number until the user has granted your app permission to access the USB device
or accessory.
To learn more about working with USB devices, see the guide on how to configure
USB hosts.
Wi-Fi
Apps targeting Android 10 or higher cannot enable or disable Wi-Fi. The
WifiManager.setWifiEnabled()
method always returns false
.
If you need to prompt users to enable and disable Wi-Fi, use a settings
panel.
Restrictions on direct access to configured Wi-Fi networks
To protect user privacy, manual configuration of the list of Wi-Fi networks
is restricted to system apps and device policy
controllers (DPCs). A given DPC can be either the device owner or the
profile owner.
If your app targets Android 10 or higher, and it isn't a system app or a
DPC, then the following methods don't return useful data:
- The
getConfiguredNetworks()
method always returns an empty list. - Each network operation method that returns an integer value—
addNetwork()
andupdateNetwork()
—always returns -1. - Each network operation that returns a boolean value—
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
, anddisconnect()
—always returnsfalse
.
Android 9
Every Android release includes dozens of security enhancements to protect users. For a list of some of the major security enhancements available in Android 9, see the Android Release Notes.
Android 8
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 8.0:
- Encryption. Added support to evict key in work profile.
- Verified Boot. Added Android Verified Boot (AVB). Verified Boot codebase supporting rollback protection for use in boot loaders added to AOSP. Recommend bootloader support for rollback protection for the HLOS. Recommend boot loaders can only be unlocked by user physically interacting with the device.
- Lock screen. Added support for using tamper-resistant hardware to verify lock screen credential.
- KeyStore. Required key attestation for all devices that ship with Android 8.0+. Added ID attestation support to improve Zero Touch Enrollment.
- Sandboxing. More tightly sandboxed many components using Project Treble's standard interface between framework and device-specific components. Applied seccomp filtering to all untrusted apps to reduce the kernel's attack surface. WebView is now run in an isolated process with very limited access to the rest of the system.
- Kernel hardening. Implemented hardened usercopy, PAN emulation, read-only after init, and KASLR.
- Userspace hardening. Implemented CFI for the media stack. App overlays can no longer cover system-critical windows and users have a way to dismiss them.
- Streaming OS update. Enabled updates on devices that are are low on disk space.
- Install unknown apps. Users must grant permission to install apps from a source that isn't a first-party app store.
- Privacy. Android ID (SSAID) has a different value for
each app and each user on the device. For web browser apps, Widevine Client ID
returns a different value for each app package name and web origin.
net.hostname
is now empty and the dhcp client no longer sends a hostname.android.os.Build.SERIAL
has been replaced with theBuild.SERIAL
API which is protected behind a user-controlled permission. Improved MAC address randomization in some chipsets.
Android 7
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 7.0:
- File-based encryption. Encrypting at the file level, instead of encrypting the entire storage area as a single unit, better isolates and protects individual users and profiles (such as personal and work) on a device.
- Direct Boot. Enabled by file-based encryption, Direct Boot allows certain apps such as alarm clock and accessibility features to run when device is powered on but not unlocked.
- Verified Boot. Verified Boot is now strictly enforced to prevent compromised devices from booting; it supports error correction to improve reliability against non-malicious data corruption.
- SELinux. Updated SELinux configuration and increased seccomp coverage further locks down the Application Sandbox and reduces attack surface.
- Library load-order randomization and improved ASLR. Increased randomness makes some code-reuse attacks less reliable.
- Kernel hardening. Added additional memory protection for newer kernels by marking portions of kernel memory as read-only, restricting kernel access to userspace addresses and further reducing the existing attack surface.
- APK signature scheme v2. Introduced a whole-file signature scheme that improves verification speed and strengthens integrity guarantees.
- Trusted CA store. To make it easier for apps to control access to their secure network traffic, user-installed certificate authorities and those installed through Device Admin APIs are no longer trusted by default for apps targeting API Level 24+. Additionally, all new Android devices must ship with the same trusted CA store.
- Network Security Config. Configure network security and TLS through a declarative configuration file.
Android 6
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 6.0:
- Runtime Permissions. Apps request permissions at runtime instead of being granted at App install time. Users can toggle permissions on and off for both M and pre-M apps.
- Verified Boot. A set of cryptographic checks of system software are conducted prior to execution to ensure the phone is healthy from the bootloader all the way up to the operating system.
- Hardware-Isolated Security. New Hardware Abstraction Layer (HAL) used by Fingerprint API, Lockscreen, Device Encryption, and Client Certificates to protect keys against kernel compromise and/or local physical attacks
- Fingerprints. Devices can now be unlocked with just a touch. Developers can also take advantage of new APIs to use fingerprints to lock and unlock encryption keys.
- SD Card Adoption. Removable media can be adopted to a device and expand available storage for app local data, photos, videos, etc., but still be protected by block-level encryption.
- Clear Text Traffic. Developers can use a new StrictMode to make sure their app doesn't use cleartext.
- System Hardening. Hardening of the system via policies enforced by SELinux. This offers better isolation between users, IOCTL filtering, reduce threat of exposed services, further tightening of SELinux domains, and extremely limited /proc access.
- USB Access Control: Users must confirm to allow USB access to files, storage, or other functionality on the phone. Default is now charge only with access to storage requiring explicit approval from the user.
Android 5
5
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 5.0:
- Encrypted by default. On devices that ship with L out-of-the-box, full disk encryption is enabled by default to improve protection of data on lost or stolen devices. Devices that update to L can be encrypted in Settings > Security .
- Improved full disk encryption. The user password is
protected against brute-force attacks using
scrypt
and, where available, the key is bound to the hardware keystore to prevent off-device attacks. As always, the Android screen lock secret and the device encryption key are not sent off the device or exposed to any application. - Android sandbox reinforced with SELinux . Android now requires SELinux in enforcing mode for all domains. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) security model. This new layer provides additional protection against potential security vulnerabilities.
- Smart Lock. Android now includes trustlets that provide more flexibility for unlocking devices. For example, trustlets can allow devices to be unlocked automatically when close to another trusted device (through NFC, Bluetooth) or being used by someone with a trusted face.
- Multi user, restricted profile, and guest modes for phones and tablets. Android now provides for multiple users on phones and includes a guest mode that can be used to provide easy temporary access to your device without granting access to your data and apps.
- Updates to WebView without OTA. WebView can now be updated independent of the framework and without a system OTA. This allows for faster response to potential security issues in WebView.
- Updated cryptography for HTTPS and TLS/SSL. TLSv1.2 and TLSv1.1 is now enabled, Forward Secrecy is now preferred, AES-GCM is now enabled, and weak cipher suites (MD5, 3DES, and export cipher suites) are now disabled. See https://developer.android.com/reference/javax/net/ssl/SSLSocket.html for more details.
- non-PIE linker support removed. Android now requires all dynamically linked executables to support PIE (position-independent executables). This enhances Android's address space layout randomization (ASLR) implementation.
- FORTIFY_SOURCE improvements. The following libc
functions now implement FORTIFY_SOURCE protections:
stpcpy()
,stpncpy()
,read()
,recvfrom()
,FD_CLR()
,FD_SET()
, andFD_ISSET()
. This provides protection against memory-corruption vulnerabilities involving those functions. - Security Fixes. Android 5.0 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members, and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.
Android 4 trở xuống
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Sau đây là một số tính năng nâng cao bảo mật có trong Android 4.4:
- Hộp cát Android được tăng cường bằng SELinux. Android hiện sử dụng SELinux ở chế độ thực thi. SELinux là một hệ thống kiểm soát quyền truy cập (MAC) bắt buộc trong nhân Linux dùng để tăng cường mô hình bảo mật hiện có dựa trên kiểm soát quyền truy cập tuỳ ý (DAC). Điều này giúp tăng cường bảo vệ trước các lỗ hổng bảo mật tiềm ẩn.
- Mạng riêng ảo (VPN) cho mỗi người dùng. Trên thiết bị nhiều người dùng, VPN hiện được áp dụng cho từng người dùng. Điều này có thể cho phép người dùng định tuyến tất cả lưu lượng truy cập mạng thông qua VPN mà không ảnh hưởng đến người dùng khác trên thiết bị.
- Hỗ trợ Nhà cung cấp ECDSA trong AndroidKeyStore. Android hiện có một trình cung cấp kho khoá cho phép sử dụng các thuật toán ECDSA và DSA.
- Cảnh báo về hoạt động giám sát thiết bị. Android sẽ cảnh báo người dùng nếu có bất kỳ chứng chỉ nào được thêm vào kho chứng chỉ của thiết bị có thể cho phép giám sát lưu lượng truy cập mạng đã mã hoá.
- FORTIFY_SOURCE. Android hiện hỗ trợ FORTIFY_SOURCE cấp 2 và tất cả mã được biên dịch bằng các biện pháp bảo vệ này. FORTIFY_SOURCE đã được cải tiến để hoạt động với clang.
- Ghim chứng chỉ. Android 4.4 phát hiện và ngăn chặn việc sử dụng chứng chỉ Google gian lận được dùng trong giao tiếp SSL/TLS bảo mật.
- Bản sửa lỗi bảo mật. Android 4.4 cũng bao gồm các bản sửa lỗi cho các lỗ hổng dành riêng cho Android. Thông tin về các lỗ hổng này đã được cung cấp cho các thành viên của Open Handset Alliance và các bản sửa lỗi có trong Dự án nguồn mở Android. Để cải thiện tính bảo mật, một số thiết bị chạy các phiên bản Android cũ hơn cũng có thể bao gồm các bản sửa lỗi này.
Mỗi bản phát hành Android đều có hàng chục tính năng nâng cao bảo mật để bảo vệ người dùng. Sau đây là một số điểm cải tiến về bảo mật có trong Android 4.3:
- Hộp cát Android được tăng cường bằng SELinux. Bản phát hành này tăng cường hộp cát Android bằng cách sử dụng hệ thống kiểm soát quyền truy cập bắt buộc (MAC) SELinux trong hạt nhân Linux. Người dùng và nhà phát triển không thể nhìn thấy tính năng tăng cường SELinux, đồng thời tính năng này giúp tăng cường độ mạnh mẽ cho mô hình bảo mật Android hiện có trong khi vẫn duy trì khả năng tương thích với các ứng dụng hiện có. Để đảm bảo khả năng tương thích liên tục, bản phát hành này cho phép sử dụng SELinux ở chế độ cho phép. Chế độ này ghi lại mọi lỗi vi phạm chính sách, nhưng sẽ không làm hỏng ứng dụng hoặc ảnh hưởng đến hành vi của hệ thống.
- Không có chương trình
setuid
hoặcsetgid
. Thêm tính năng hỗ trợ cho các chức năng hệ thống tệp vào các tệp hệ thống Android và xoá tất cả các chương trìnhsetuid
hoặcsetgid
. Điều này giúp giảm bề mặt tấn công gốc và khả năng xảy ra các lỗ hổng bảo mật tiềm ẩn. - Xác thực ADB. Kể từ Android 4.2.2, các kết nối với ADB sẽ được xác thực bằng một cặp khoá RSA. Điều này ngăn chặn việc sử dụng trái phép ADB khi kẻ tấn công có quyền truy cập vật lý vào thiết bị.
- Hạn chế Setuid từ Ứng dụng Android.
Phân vùng
/system
hiện được gắn nosuid cho các quy trình do zygote tạo ra, ngăn các ứng dụng Android thực thi các chương trìnhsetuid
. Điều này giúp giảm bề mặt tấn công gốc và khả năng xảy ra các lỗ hổng bảo mật tiềm ẩn. - Giới hạn chức năng.
Android zygote và ADB hiện sử dụng
prctl(PR_CAPBSET_DROP)
để loại bỏ các chức năng không cần thiết trước khi thực thi ứng dụng. Điều này ngăn các ứng dụng Android và ứng dụng được chạy từ shell có được các chức năng đặc quyền. - Trình cung cấp AndroidKeyStore. Android hiện có một trình cung cấp kho khoá cho phép các ứng dụng tạo khoá sử dụng độc quyền. Điều này cung cấp cho các ứng dụng một API để tạo hoặc lưu trữ các khoá riêng tư mà các ứng dụng khác không thể sử dụng.
- KeyChain
isBoundKeyAlgorithm
. Keychain API hiện cung cấp một phương thức (isBoundKeyType
) cho phép các ứng dụng xác nhận rằng các khoá trên toàn hệ thống được liên kết với một gốc phần cứng đáng tin cậy cho thiết bị. Điều này cung cấp một nơi để tạo hoặc lưu trữ các khoá riêng tư không thể xuất ra khỏi thiết bị, ngay cả trong trường hợp bị xâm phạm quyền truy cập gốc. NO_NEW_PRIVS
. Android zygote hiện sử dụngprctl(PR_SET_NO_NEW_PRIVS)
để chặn việc thêm các đặc quyền mới trước khi thực thi mã ứng dụng. Điều này ngăn các ứng dụng Android thực hiện các thao tác có thể nâng cao đặc quyền thông qua execve. (Điều này yêu cầu nhân Linux phiên bản 3.5 trở lên).- Các tính năng nâng cao
FORTIFY_SOURCE
. BậtFORTIFY_SOURCE
trên Android x86 và MIPS cũng như tăng cường các lệnh gọistrchr()
,strrchr()
,strlen()
vàumask()
. Việc này có thể phát hiện các lỗ hổng hỏng bộ nhớ tiềm ẩn hoặc hằng số chuỗi chưa kết thúc. - Biện pháp bảo vệ khi di chuyển. Bật tính năng di chuyển chỉ có thể đọc (relro) cho các tệp thực thi được liên kết tĩnh và xoá tất cả các lượt di chuyển văn bản trong mã Android. Điều này giúp bảo vệ theo chiều sâu trước các lỗ hổng tiềm ẩn về hỏng bộ nhớ.
- Cải thiện EntropyMixer. EntropyMixer hiện ghi entropy khi tắt hoặc khởi động lại, ngoài việc trộn định kỳ. Điều này cho phép giữ lại tất cả entropy được tạo ra khi thiết bị đang bật nguồn và đặc biệt hữu ích cho các thiết bị được khởi động lại ngay sau khi cấp phép.
- Bản sửa lỗi bảo mật. Android 4.3 cũng bao gồm các bản sửa lỗi cho các lỗ hổng dành riêng cho Android. Thông tin về các lỗ hổng này đã được cung cấp cho các thành viên của Open Handset Alliance và các bản sửa lỗi có trong Dự án nguồn mở Android. Để cải thiện tính bảo mật, một số thiết bị chạy các phiên bản Android cũ hơn cũng có thể bao gồm các bản sửa lỗi này.
Android cung cấp một mô hình bảo mật nhiều lớp được mô tả trong bài viết Tổng quan về tính bảo mật của Android. Mỗi bản cập nhật Android đều có hàng chục tính năng cải tiến về bảo mật để bảo vệ người dùng. Sau đây là một số tính năng bảo mật được cải tiến trong Android 4.2:
- Xác minh ứng dụng: Người dùng có thể chọn bật tính năng Xác minh ứng dụng và yêu cầu trình xác minh ứng dụng kiểm tra ứng dụng trước khi cài đặt. Tính năng xác minh ứng dụng có thể cảnh báo người dùng nếu họ cố gắng cài đặt một ứng dụng có thể gây hại; nếu một ứng dụng đặc biệt xấu, thì tính năng này có thể chặn quá trình cài đặt.
- Có nhiều quyền kiểm soát hơn đối với tin nhắn dịch vụ: Android sẽ gửi thông báo nếu một ứng dụng cố gắng gửi tin nhắn SMS đến một mã ngắn sử dụng các dịch vụ cao cấp có thể gây ra thêm phí. Người dùng có thể chọn cho phép ứng dụng gửi thông báo hoặc chặn thông báo.
- VPN luôn bật: Bạn có thể định cấu hình VPN để các ứng dụng không có quyền truy cập vào mạng cho đến khi thiết lập kết nối VPN. Điều này ngăn các ứng dụng gửi dữ liệu qua các mạng khác.
- Ghim chứng chỉ: Các thư viện cốt lõi của Android hiện hỗ trợ tính năng ghim chứng chỉ. Các miền được ghim sẽ nhận được thông báo lỗi xác thực chứng chỉ nếu chứng chỉ không liên kết với một nhóm chứng chỉ dự kiến. Điều này giúp bảo vệ khỏi nguy cơ bị xâm phạm của các tổ chức phát hành chứng chỉ.
- Cải thiện chế độ hiển thị quyền trên Android: Các quyền được sắp xếp thành các nhóm mà người dùng dễ hiểu hơn. Trong quá trình xem xét các quyền, người dùng có thể nhấp vào quyền để xem thông tin chi tiết hơn về quyền đó.
- Cải thiện độ cứng của installd: Trình nền
installd
không chạy dưới dạng người dùng gốc, giúp giảm bề mặt tấn công tiềm ẩn để tăng đặc quyền gốc. - Củng cố tập lệnh khởi động: các tập lệnh khởi động hiện áp dụng ngữ nghĩa
O_NOFOLLOW
để ngăn chặn các cuộc tấn công liên quan đến đường liên kết tượng trưng. FORTIFY_SOURCE
: Android hiện triển khaiFORTIFY_SOURCE
. Thư viện hệ thống và ứng dụng sử dụng tính năng này để ngăn chặn hỏng bộ nhớ.- Cấu hình mặc định của ContentProvider: Các ứng dụng nhắm đến API cấp 17 sẽ đặt
export
thànhfalse
theo mặc định cho mỗi Content Provider (Trình cung cấp nội dung), giúp giảm bề mặt tấn công mặc định cho ứng dụng. - Mật mã học: Sửa đổi các phương thức triển khai mặc định của SecureRandom và Cipher.RSA để sử dụng OpenSSL. Thêm tính năng hỗ trợ ổ cắm SSL cho TLSv1.1 và TLSv1.2 bằng cách sử dụng OpenSSL 1.0.1
- Bản sửa lỗi bảo mật: Các thư viện nguồn mở đã nâng cấp có bản sửa lỗi bảo mật bao gồm WebKit, libpng, OpenSSL và LibXML. Android 4.2 cũng bao gồm các bản sửa lỗi cho các lỗ hổng dành riêng cho Android. Thông tin về các lỗ hổng này đã được cung cấp cho các thành viên của Liên minh điện thoại mở và các bản sửa lỗi có trong Dự án nguồn mở Android. Để cải thiện tính bảo mật, một số thiết bị chạy các phiên bản Android cũ hơn cũng có thể bao gồm các bản sửa lỗi này.
Android provides a multi-layered security model described in the Android Security Overview. Each update to Android includes dozens of security enhancements to protect users. The following are some of the security enhancements introduced in Android versions 1.5 through 4.1:
- Android 1.5
- ProPolice to prevent stack buffer overruns (-fstack-protector)
- safe_iop to reduce integer overflows
- Extensions to OpenBSD dlmalloc to prevent double free() vulnerabilities and to prevent chunk consolidation attacks. Chunk consolidation attacks are a common way to exploit heap corruption.
- OpenBSD calloc to prevent integer overflows during memory allocation
- Android 2.3
- Format string vulnerability protections (-Wformat-security -Werror=format-security)
- Hardware-based No eXecute (NX) to prevent code execution on the stack and heap
- Linux mmap_min_addr to mitigate null pointer dereference privilege escalation (further enhanced in Android 4.1)
- Android 4.0
- Address Space Layout Randomization (ASLR) to randomize key locations in memory
- Android 4.1
- PIE (Position Independent Executable) support
- Read-only relocations / immediate binding (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict enabled (avoid leaking kernel addresses)
- kptr_restrict enabled (avoid leaking kernel addresses)