Android liên tục cải thiện các tính năng và dịch vụ bảo mật của mình. 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
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 14:
- Hardware-assisted AddressSanitizer (HWASan), introduced in Android 10, is a memory error detection tool similar to AddressSanitizer. Android 14 brings significant improvements to HWASan. Learn how it helps prevent bugs from making it into Android releases, HWAddressSanitizer
- In Android 14, starting with apps that share location data with third-parties, the system runtime permission dialog now includes a clickable section that highlights the app's data-sharing practices, including information such as why an app may decide to share data with third parties.
- Android 12 introduced an option to disable 2G support at the modem level, which protects users from the inherent security risk from 2G's obsolete security model. Recognizing how critical disabling 2G could be for enterprise customers, Android 14 enables this security feature in Android Enterprise, introducing support for IT admins to restrict the ability of a managed device to downgrade to 2G connectivity.
- Added support to reject null-ciphered cellular connections, ensuring that circuit-switched voice and SMS traffic is always encrypted and protected from passive over-the-air interception. Learn more about Android's program to harden cellular connectivity.
- Added support for multiple IMEIs
- Since Android 14, AES-HCTR2 is the preferred mode of filenames encryption for devices with accelerated cryptography instructions.
- Cellular connectivity
- Documentation added for Android Safety Center
- If your app targets Android 14 and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. Otherwise, the system throws an exception. We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
Check out our full AOSP release notes and the Android Developer features and changes list.
Android 13
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 13:
- Android 13 adds multi-document presentation support. This new Presentation Session interface enables an app to do a multi-document presentation, something which isn't possible with the existing API. For further information, refer to Identity Credential
- In Android 13, intents originating from external apps are delivered to an exported component if and only if the intents match their declared intent-filter elements.
- Open Mobile API (OMAPI) is a standard API used to communicate with a device's Secure Element. Before Android 13, only apps and framework modules had access to this interface. By converting it to a vendor stable interface, HAL modules are also capable of communicating with the secure elements through the OMAPI service. For more information, see OMAPI Vendor Stable Interface.
- As of Android 13-QPR, shared UIDs are deprecated. Users of Android 13 or higher should put the line `android:sharedUserMaxSdkVersion="32"` in their manifest. This entry prevents new users from getting a shared UID. For further information on UIDs, see App signing.
- Android 13 added support Keystore symmetric cryptographic primitives such as AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code), and asymmetric cryptographic algorithms (including Elliptic Curve, RSA2048, RSA4096, and Curve 25519)
- Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt notifications from an app. This gives users control over which permission notifications they see.
- Added per-use prompt for apps requesting access to all device logs, giving users the ability to allow or deny access.
- introduced the Android Virtualization Framework (AVF), which brings together different hypervisors under one framework with standardized APIs. It provides secure and private execution environments for executing workloads isolated by hypervisor.
- Introduced APK signature scheme v3.1 All new key rotations that use apksigner use the v3.1 signature scheme by default to target rotation for Android 13 and higher.
Check out our full AOSP release notes and the Android Developer features and changes list.
Android 12
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 12:
- Android 12 introduces the BiometricManager.Strings API, which provides localized strings for apps that use BiometricPrompt for authentication. These strings are intended to be device-aware and provide more specificity about which authentication types might be used. Android 12 also includes support for under-display fingerprint sensors
- Support added for under-display fingerprint sensors
- Introduction of the Fingerprint Android Interface Definition Language (AIDL)
- Support for new Face AIDL
- Introduction of Rust as a language for platform development
- The option for users to grant access only to their approximate location added
- Added Privacy indicators on the status bar when an app is using the camera or microphone
- Android's Private Compute Core (PCC)
- Added an option to disable 2G support
Android 11
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需查看 Android 11 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
Android 10
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. Android 10 có một số tính năng nâng cao về bảo mật và quyền riêng tư. Xem ghi chú phát hành của Android 10 để xem danh sách đầy đủ các thay đổi trong Android 10.
Bảo mật
BoundsSanitizer
Android 10 triển khai BoundsSanitizer (BoundSan) trong Bluetooth và bộ mã hoá và giải mã. BoundSan sử dụng trình dọn dẹp giới hạn của UBSan. Giải pháp giảm thiểu này được bật ở cấp độ từng mô-đun. Giúp thu hút khách hàng quan trọng các thành phần của Android an toàn và không được tắt. BoundSan được bật trong các bộ mã hoá và giải mã sau:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Bộ nhớ chỉ thực thi
Theo mặc định, các phần mã thực thi cho tệp nhị phân hệ thống AArch64 được đánh dấu là chỉ thực thi (không đọc được) để giảm thiểu việc tấn công tái sử dụng mã đúng thời điểm. Mã kết hợp dữ liệu và mã với nhau và mã kiểm tra có chủ đích các phần này (mà không cần ánh xạ lại các phân đoạn bộ nhớ ở dạng có thể đọc trước tiên) không còn hoạt động nữa. Các ứng dụng có SDK mục tiêu là Android 10 (API cấp 29 trở lên) sẽ bị ảnh hưởng nếu ứng dụng cố gắng đọc các phần mã của thư viện hệ thống đã bật bộ nhớ chỉ thực thi (XOM) trong bộ nhớ mà không đánh dấu trước phần đó là có thể đọc được.
Quyền truy cập mở rộng
Tác nhân tin cậy, cơ chế cơ bản mà xác thực cấp ba sử dụng các cơ chế như Smart Lock chỉ có thể kéo dài thời gian mở khoá trong Android 10. Độ tin cậy nhân viên hỗ trợ không thể mở khoá một thiết bị đã khoá và chỉ có thể giữ cho thiết bị luôn mở khoá trong tối đa bốn giờ.
Xác thực khuôn mặt
Khuôn mặt xác thực cho phép người dùng mở khoá thiết bị của họ chỉ bằng cách nhìn vào trước thiết bị của họ. Android 10 hỗ trợ thêm một ngăn xếp xác thực khuôn mặt mới có thể xử lý các khung hình máy ảnh một cách an toàn, bảo vệ tính bảo mật và quyền riêng tư trong quá trình xác thực khuôn mặt trên phần cứng được hỗ trợ. Android 10 cũng cung cấp một cách dễ dàng để triển khai các biện pháp tuân thủ bảo mật nhằm cho phép tích hợp ứng dụng cho các giao dịch như ngân hàng trực tuyến hoặc các dịch vụ khác.
Dọn dẹp tràn số nguyên
Android 10 bật tính năng Thêm số nguyên Dọn dẹp (IntSan) trong bộ mã hoá và giải mã phần mềm. Đảm bảo hiệu suất phát ở mức chấp nhận được đối với mọi bộ mã hoá và giải mã không được hỗ trợ trong phần cứng của thiết bị. IntSan được bật trong các bộ mã hoá và giải mã sau:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Thành phần hệ thống mô-đun
Android 10 mô-đun hoá một số thành phần hệ thống Android và cho phép cập nhật các thành phần đó bên ngoài chu kỳ phát hành Android thông thường. Một số mô-đun bao gồm:
- Android Thời gian chạy
- Conscrypt
- Trình phân giải DNS
- Giao diện người dùng tài liệu
- ExtServices
- Nội dung đa phương tiện
- ModuleMetadata (Siêu dữ liệu mô-đun)
- Networking
- PermissionController
- Dữ liệu về múi giờ
OEMCrypto
Android 10 sử dụng OEMCrypto API phiên bản 15.
Scudo
Scudo là một trình phân bổ bộ nhớ động ở chế độ người dùng được thiết kế để có khả năng chống chịu tốt hơn trước các lỗ hổng liên quan đến vùng nhớ khối xếp. Thư viện này cung cấp các nguyên hàm phân bổ và giải phóng C tiêu chuẩn, cũng như các nguyên hàm C++.
ShadowCallStack
ShadowCallStack
(SCS)
là một LLVM
khả năng đo lường giúp chống lại việc ghi đè địa chỉ trả về (như
vùng đệm ngăn xếp bị tràn) bằng cách lưu địa chỉ trả về của một hàm vào một
thực thể ShadowCallStack
được phân bổ trong nhật ký hàm là
các hàm không có lá và tải địa chỉ trả về từ
Thực thể ShadowCallStack
trong phần tóm tắt của hàm.
WPA3 và Wi-Fi Enhanced Open
Android 10 hỗ trợ thêm Wi-Fi Các tiêu chuẩn bảo mật bảo mật Protected Access 3 (WPA3) và Wi-Fi mở rộng để bảo vệ quyền riêng tư và tăng cường độ mạnh mẽ trước các cuộc tấn công đã biết.
Quyền riêng tư
Quyền truy cập vào ứng dụng khi nhắm đến Android 9 trở xuống
Nếu ứng dụng của bạn chạy trên Android 10 trở lên nhưng nhắm đến Android 9 (API cấp 28) hoặc thấp hơn, nền tảng sẽ áp dụng hành vi sau:
- Nếu ứng dụng của bạn khai báo phần tử
<uses-permission>
choACCESS_FINE_LOCATION
hoặcACCESS_COARSE_LOCATION
, hệ thống sẽ tự động thêm phần tử<uses-permission>
choACCESS_BACKGROUND_LOCATION
trong quá trình cài đặt. - Nếu ứng dụng của bạn yêu cầu
ACCESS_FINE_LOCATION
hoặcACCESS_COARSE_LOCATION
, hệ thống sẽ tự động thêmACCESS_BACKGROUND_LOCATION
vào yêu cầu.
Hạn chế hoạt động ở chế độ nền
Kể từ Android 10, hệ thống sẽ đặt ra các quy định hạn chế
khi bắt đầu hoạt động ở chế độ nền. Thay đổi về hành vi này giúp giảm thiểu sự gián đoạn cho người dùng và giúp người dùng kiểm soát tốt hơn nội dung hiển thị trên màn hình. Miễn là ứng dụng của bạn bắt đầu các hoạt động do kết quả trực tiếp của hoạt động tương tác của người dùng, thì rất có thể ứng dụng của bạn sẽ không bị ảnh hưởng bởi các quy định hạn chế này.
Để tìm hiểu thêm về giải pháp thay thế được đề xuất cho việc bắt đầu các hoạt động ở chế độ nền, hãy xem hướng dẫn về cách cảnh báo người dùng về các sự kiện nhạy cảm về thời gian trong ứng dụng.
Siêu dữ liệu của camera
Android 10 thay đổi phạm vi thông tin mà phương thức getCameraCharacteristics()
trả về theo mặc định. Cụ thể, ứng dụng của bạn phải có CAMERA
để truy cập vào siêu dữ liệu có thể dành riêng cho thiết bị
được bao gồm trong giá trị trả về của phương thức này.
Để tìm hiểu thêm về những thay đổi này, hãy xem phần về các trường máy ảnh cần có quyền.
Dữ liệu bảng nhớ tạm
Trừ phi ứng dụng của bạn là phương thức đầu vào mặc định trình chỉnh sửa phương thức (IME) hoặc là ứng dụng hiện có tiêu điểm, ứng dụng của bạn không thể truy cập vào dữ liệu bảng nhớ tạm trên Android 10 trở lên.
Vị trí thiết bị
Để hỗ trợ thêm quyền kiểm soát mà người dùng có đối với quyền truy cập của ứng dụng vào thông tin vị trí, Android 10 đã ra mắt quyền ACCESS_BACKGROUND_LOCATION
.
Ngừng thích ACCESS_FINE_LOCATION
và ACCESS_COARSE_LOCATION
thì quyền ACCESS_BACKGROUND_LOCATION
chỉ ảnh hưởng đến
quyền truy cập của ứng dụng vào thông tin vị trí khi ứng dụng đó chạy ở chế độ nền. Một ứng dụng được xem là
truy cập thông tin vị trí ở chế độ nền, trừ phi một trong những điều sau
thoả mãn điều kiện:
- Bạn có thể nhìn thấy một hoạt động thuộc về ứng dụng đó.
- Ứng dụng đang chạy một dịch vụ trên nền trước đã khai báo loại dịch vụ trên nền trước là
location
.
Cách khai báo dịch vụ trên nền trước nhập cho một dịch vụ trong ứng dụng của bạn, đặttargetSdkVersion
hoặccompileSdkVersion
đến29
trở lên. Tìm hiểu thêm về cách các dịch vụ trên nền trước có thể tiếp tục những hành động do người dùng thực hiện yêu cầu quyền truy cập vào thông tin vị trí.
Bộ nhớ ngoài
Theo mặc định, những ứng dụng nhắm đến Android 10 trở lên sẽ được cung cấp phạm vi quyền truy cập vào bộ nhớ ngoài hoặc bộ nhớ có giới hạn. Những ứng dụng như vậy có thể xem các loại tệp sau vào thiết bị lưu trữ bên ngoài mà không cần để yêu cầu quyền của người dùng liên quan đến bộ nhớ:
- Các tệp trong thư mục dành riêng cho ứng dụng, được truy cập bằng
getExternalFilesDir()
. - Ảnh, video và đoạn âm thanh mà ứng dụng tạo ra từ nội dung nghe nhìn cửa hàng.
Để tìm hiểu thêm về bộ nhớ có giới hạn, cũng như cách chia sẻ, truy cập và sửa đổi các tệp được lưu trên thiết bị bộ nhớ ngoài, hãy xem hướng dẫn về cách quản lý tệp trong bộ nhớ ngoài và truy cập và sửa đổi tệp phương tiện.
Gán địa chỉ MAC ngẫu nhiên
Trên các thiết bị chạy Android 10 trở lên, hệ thống sẽ truyền tin MAC ngẫu nhiên
địa chỉ email theo mặc định.
Nếu ứng dụng của bạn xử lý một trường hợp sử dụng dành cho doanh nghiệp, thì nền tảng sẽ cung cấp các API cho một số thao tác liên quan đến địa chỉ MAC:
- Nhận địa chỉ MAC ngẫu nhiên: Ứng dụng của chủ sở hữu thiết bị và
ứng dụng của chủ sở hữu hồ sơ có thể truy xuất địa chỉ MAC ngẫu nhiên được gán cho một
mạng cụ thể bằng cách gọi
getRandomizedMacAddress()
. - Lấy địa chỉ MAC thực tế ban đầu:Các ứng dụng của chủ sở hữu thiết bị có thể
truy xuất địa chỉ MAC phần cứng thực tế của thiết bị bằng cách gọi
getWifiMacAddress()
. Phương pháp này rất hữu ích khi theo dõi các nhóm thiết bị.
Giá trị nhận dạng thiết bị không thể đặt lại
Kể từ Android 10, ứng dụng phải có quyền đặc quyền READ_PRIVILEGED_PHONE_STATE
để truy cập vào giá trị nhận dạng không thể đặt lại của thiết bị, bao gồm cả IMEI và số sê-ri.
Build
TelephonyManager
Nếu ứng dụng của bạn không có quyền này và bạn vẫn cố gắng yêu cầu thông tin về giá trị nhận dạng không thể đặt lại, thì phản hồi của nền tảng sẽ khác nhau tuỳ theo phiên bản SDK mục tiêu:
- Nếu ứng dụng của bạn nhắm đến Android 10 trở lên, thì
SecurityException
sẽ xảy ra. - Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, thì phương thức này sẽ trả về
null
hoặc dữ liệu phần giữ chỗ nếu ứng dụng cóREAD_PHONE_STATE
quyền. Nếu không,SecurityException
sẽ xảy ra.
Nhận dạng hoạt động thể chất
Android 10 ra mắt android.permission.ACTIVITY_RECOGNITION
quyền khi bắt đầu chạy cho những ứng dụng cần phát hiện số bước của người dùng, hoặc
phân loại hoạt động thể chất của người dùng, ví dụ như đi bộ, đi xe đạp, hoặc di chuyển trong
chiếc xe. Mục đích của tính năng này là giúp người dùng biết cách dữ liệu cảm biến thiết bị được sử dụng trong phần Cài đặt.
Một số thư viện trong Dịch vụ Google Play, chẳng hạn như Activity
Recognition API và Google
API Fit, không cung cấp kết quả trừ phi người dùng đã cấp quyền này cho ứng dụng của bạn
quyền.
Ứng dụng cài sẵn duy nhất
cảm biến trên thiết bị yêu cầu bạn khai báo quyền này là bước
bộ đếm và bước
máy phát hiện.
Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, hệ thống
tự động cấp quyền android.permission.ACTIVITY_RECOGNITION
cho ứng dụng của bạn (nếu cần) nếu ứng dụng đó đáp ứng mỗi điều kiện sau
điều kiện:
- Tệp kê khai bao gồm
Quyền
com.google.android.gms.permission.ACTIVITY_RECOGNITION
. - Tệp kê khai không bao gồm quyền
android.permission.ACTIVITY_RECOGNITION
.
Nếu hệ thống tự động cấp
Quyền android.permission.ACTIVITY_RECOGNITION
, ứng dụng của bạn
vẫn giữ lại quyền sau khi bạn cập nhật ứng dụng để nhắm đến Android 10. Tuy nhiên,
người dùng có thể thu hồi quyền này bất cứ lúc nào trong phần cài đặt hệ thống.
Các quy định hạn chế về hệ thống tệp /proc/net
Trên các thiết bị chạy Android 10 trở lên, ứng dụng không thể truy cập vào /proc/net
, trong đó có thông tin về trạng thái mạng của thiết bị. Các ứng dụng cần quyền truy cập vào thông tin này, chẳng hạn như VPN, nên sử dụng
NetworkStatsManager
hoặc ConnectivityManager
.
Xoá nhóm quyền khỏi giao diện người dùng
Kể từ Android 10, các ứng dụng không thể tra cứu cách nhóm các quyền trong giao diện người dùng.
Xoá đối tượng chung sở thích liên hệ
Kể từ Android 10, nền tảng này không theo dõi thông tin về mối quan hệ tương đồng của người liên hệ. Do đó, nếu ứng dụng của bạn thực hiện tìm kiếm danh bạ của người dùng,
kết quả không được sắp xếp theo tần suất tương tác.
Hướng dẫn về ContactsProvider
có một thông báo mô tả các trường và phương thức cụ thể đã lỗi thời trên tất cả thiết bị bắt đầu từ Android 10.
Hạn chế quyền truy cập vào nội dung trên màn hình
Để bảo vệ nội dung màn hình, Android 10 ngăn chặn quyền truy cập im lặng vào
nội dung trên màn hình của thiết bị bằng cách thay đổi phạm vi của
READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
và
Quyền CAPTURE_SECURE_VIDEO_OUTPUT
. Kể từ Android 10,
là quyền truy cập bằng chữ ký
.
Các ứng dụng cần truy cập vào nội dung trên màn hình của thiết bị phải sử dụng API
MediaProjection
. API này sẽ hiển thị lời nhắc yêu cầu người dùng đồng ý.
Số sê-ri của thiết bị USB
Nếu ứng dụng của bạn nhắm đến Android 10 trở lên, thì ứng dụng đó sẽ không đọc được sê-ri
số điện thoại cho đến khi người dùng cấp cho ứng dụng của bạn quyền truy cập vào thiết bị USB
hoặc phụ kiện.
Để tìm hiểu thêm về cách làm việc với thiết bị USB, hãy xem hướng dẫn về cách định cấu hình máy chủ USB.
Wi-Fi
Các ứng dụng nhắm đến Android 10 trở lên không thể bật hoặc tắt Wi-Fi. Chiến lược phát hành đĩa đơn
WifiManager.setWifiEnabled()
luôn trả về false
.
Nếu bạn cần nhắc người dùng bật và tắt Wi-Fi, hãy sử dụng bảng điều khiển cài đặt.
Các hạn chế đối với quyền truy cập trực tiếp vào mạng Wi-Fi đã định cấu hình
Để bảo vệ quyền riêng tư của người dùng, hãy định cấu hình danh sách mạng Wi-Fi theo cách thủ công
chỉ dành cho các ứng dụng hệ thống và chính sách thiết bị
bộ điều khiển (DPC). Một DPC nhất định có thể là chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ.
Nếu ứng dụng của bạn nhắm đến Android 10 trở lên và không phải là ứng dụng hệ thống hoặc DPC, thì các phương thức sau sẽ không trả về dữ liệu hữu ích:
- Phương thức
getConfiguredNetworks()
luôn trả về một danh sách trống. - Mỗi phương thức thao tác mạng trả về một giá trị số nguyên –
addNetwork()
vàupdateNetwork()
– luôn trả về -1. - Mỗi thao tác mạng trả về một giá trị boolean –
removeNetwork()
,reassociate()
!enableNetwork()
,disableNetwork()
!reconnect()
, vàdisconnect()
—luôn luôn sẽ trả vềfalse
.
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
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 7.0 中提供的一些主要安全增强功能:
- 文件级加密:在文件级进行加密,而不是将整个存储区域作为单个单元进行加密。这种加密方式可以更好地隔离和保护设备上的不同用户和资料(例如个人资料和工作资料)。
- 直接启动:通过文件级加密实现,允许特定应用(例如,闹钟和无障碍功能)在设备已开机但未解锁的情况下运行。
- 验证启动:现在,验证启动会被严格强制执行,从而使遭到入侵的设备无法启动;验证启动支持纠错功能,有助于更可靠地防范非恶意数据损坏。
- SELinux。更新后的 SELinux 配置和更高的 Seccomp 覆盖率有助于进一步锁定应用沙盒并减小受攻击面。
- 库加载顺序随机化和改进的 ASLR。 增大随机性降低了某些代码重用攻击的有效性。
- 内核加固:通过将内核内存的各个分区标记为只读,限制内核对用户空间地址的访问,并进一步减小现有的受攻击面,为更高版本的内核添加额外的内存保护。
- APK 签名方案 v2:引入了一种全文件签名方案,该方案有助于加快验证速度并增强完整性保证。
- 可信 CA 存储区。为了使应用更容易控制对其安全网络流量的访问,对于 API 级别为 24 及以上的应用,由用户安装的证书颁发机构以及通过 Device Admin API 安装的证书颁发机构在默认情况下不再受信任。此外,所有新的 Android 设备必须搭载相同的可信 CA 存储区。
- 网络安全配置。通过声明式配置文件来配置网络安全设置和传输层安全协议 (TLS)。
Android 6
Mỗi bản phát hành Android đều có hàng chục tính năng bảo mật nâng cao để bảo vệ người dùng. Dưới đây là một số tính năng bảo mật nâng cao chính hiện có trên Android 6.0:
- Quyền khi bắt đầu chạy. Ứng dụng yêu cầu cấp quyền khi bắt đầu chạy thay vì được cấp quyền tại thời điểm cài đặt ứng dụng. Người dùng có thể bật và tắt quyền cho cả giai đoạn M và giai đoạn trước M của chúng tôi.
- Xác minh quy trình khởi động. Một tập hợp các bước kiểm tra bằng mật mã của hệ thống được tiến hành trước khi để đảm bảo điện thoại hoạt động tốt từ trình tải khởi động cho đến hệ điều hành.
- Bảo mật được tách biệt bằng phần cứng. Lớp trừu tượng hoá phần cứng (HAL) mới do API vân tay, Màn hình khoá, Mã hoá thiết bị và Chứng chỉ máy khách sử dụng để bảo vệ khoá khỏi bị xâm phạm hạt nhân và/hoặc các cuộc tấn công vật lý cục bộ
- Vân tay. Giờ đây, bạn có thể mở khoá thiết bị chỉ bằng một thao tác chạm. Nhà phát triển cũng có thể thực hiện tận dụng các API mới để sử dụng vân tay nhằm khoá và mở khoá khoá mã hoá.
- Sử dụng thẻ SD. Bạn có thể sử dụng phương tiện có thể tháo rời cho một thiết bị và mở rộng bộ nhớ có sẵn cho dữ liệu cục bộ của ứng dụng, ảnh, video, v.v., nhưng vẫn được bảo vệ bằng phương thức mã hoá cấp khối.
- Lưu lượng truy cập qua văn bản rõ ràng. Nhà phát triển có thể dùng StrictMode mới để đảm bảo ứng dụng của họ không dùng văn bản thô.
- Tăng cường hệ thống. Củng cố hệ thống bằng các chính sách do SELinux thực thi. Việc này mang đến trải nghiệm tốt hơn sự tách biệt giữa người dùng, cơ chế lọc IOML, giảm mối đe doạ đối với dịch vụ tiếp xúc, siết chặt hơn nữa miền SELinux và truy cập /proc cực kỳ hạn chế.
- Kiểm soát quyền truy cập USB: Người dùng phải xác nhận để cho phép USB truy cập vào các tệp, bộ nhớ hoặc chức năng khác trên điện thoại. Chế độ mặc định hiện là chỉ tính phí với quyền truy cập vào bộ nhớ yêu cầu người dùng phê duyệt rõ ràng.
Android 5
5
每个 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 trở xuống
每个 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 的某些设备可能也会包含这些修复程序。
Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.3:
- Android sandbox reinforced with SELinux. This release strengthens the Android sandbox using the SELinux mandatory access control system (MAC) in the Linux kernel. SELinux reinforcement is invisible to users and developers, and adds robustness to the existing Android security model while maintaining compatibility with existing apps. To ensure continued compatibility this release allows the use of SELinux in a permissive mode. This mode logs any policy violations, but will not break apps or affect system behavior.
- No
setuid
orsetgid
programs. Added support for filesystem capabilities to Android system files and removed allsetuid
orsetgid
programs. This reduces root attack surface and the likelihood of potential security vulnerabilities. - ADB authentication. Starting in Android 4.2.2, connections to ADB are authenticated with an RSA keypair. This prevents unauthorized use of ADB where the attacker has physical access to a device.
- Restrict Setuid from Android Apps.
The
/system
partition is now mounted nosuid for zygote-spawned processes, preventing Android apps from executingsetuid
programs. This reduces root attack surface and the likelihood of potential security vulnerabilities. - Capability bounding.
Android zygote and ADB now use
prctl(PR_CAPBSET_DROP)
to drop unnecessary capabilities prior to executing apps. This prevents Android apps and apps launched from the shell from acquiring privileged capabilities. - AndroidKeyStore Provider. Android now has a keystore provider that allows apps to create exclusive use keys. This provides apps with an API to create or store private keys that cannot be used by other apps.
- KeyChain
isBoundKeyAlgorithm
. Keychain API now provides a method (isBoundKeyType
) that allows apps to confirm that system-wide keys are bound to a hardware root of trust for the device. This provides a place to create or store private keys that can't be exported off the device, even in the event of a root compromise. NO_NEW_PRIVS
. Android zygote now usesprctl(PR_SET_NO_NEW_PRIVS)
to block addition of new privileges prior to execution app code. This prevents Android apps from performing operations that can elevate privileges through execve. (This requires Linux kernel version 3.5 or greater).FORTIFY_SOURCE
enhancements. EnabledFORTIFY_SOURCE
on Android x86 and MIPS and fortifiedstrchr()
,strrchr()
,strlen()
, andumask()
calls. This can detect potential memory corruption vulnerabilities or unterminated string constants.- Relocation protections. Enabled read only relocations (relro) for statically linked executables and removed all text relocations in Android code. This provides defense in depth against potential memory corruption vulnerabilities.
- Improved EntropyMixer. EntropyMixer now writes entropy at shutdown or reboot, in addition to periodic mixing. This allows retention of all entropy generated while devices are powered on, and is especially useful for devices that are rebooted immediately after provisioning.
- Security fixes. Android 4.3 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 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 4.2:
- App verification: Users can choose to enable Verify Apps and have apps screened by an app verifier, prior to installation. App verification can alert the user if they try to install an app that might be harmful; if an app is especially bad, it can block installation.
- More control of premium SMS: Android provides a notification if an app attempts to send SMS to a short code that uses premium services that might cause additional charges. The user can choose whether to allow the app to send the message or block it.
- Always-on VPN: VPN can be configured so that apps won't have access to the network until a VPN connection is established. This prevents apps from sending data across other networks.
- Certificate pinning: The Android core libraries now support certificate pinning. Pinned domains receive a certificate validation failure if the certificate doesn't chain to a set of expected certificates. This protects against possible compromise of certificate authorities.
- Improved display of Android permissions: Permissions are organized into groups that are more easily understood by users. During review of the permissions, the user can click on the permission to see more detailed information about the permission.
- installd hardening: The
installd
daemon does not run as the root user, reducing potential attack surface for root privilege escalation. - init script hardening: init scripts now apply
O_NOFOLLOW
semantics to prevent symlink related attacks. FORTIFY_SOURCE
: Android now implementsFORTIFY_SOURCE
. This is used by system libraries and apps to prevent memory corruption.- ContentProvider default configuration: Apps that target API
level 17 have
export
set tofalse
by default for each Content Provider, reducing default attack surface for apps. - Cryptography: Modified the default implementations of SecureRandom and Cipher.RSA to use OpenSSL. Added SSL Socket support for TLSv1.1 and TLSv1.2 using OpenSSL 1.0.1
- Security fixes: Upgraded open source libraries with security fixes include WebKit, libpng, OpenSSL, and LibXML. Android 4.2 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 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)