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 điểm cải tiến về bảo mật để bảo vệ người dùng. Sau đây là một số điểm cải tiến lớn 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 đã bản địa hoá cho những ứng dụng 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ề những loại xác thực có thể được dùng. Android 12 cũng hỗ trợ cảm biến vân tay dưới màn hình
- Thêm 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 (AIDL) cho vân tay
- Hỗ trợ AIDL khuôn mặt mới
- Giới thiệu về Rust như một ngôn ngữ để phát triển nền tảng
- Đã thêm lựa chọn chỉ cấp quyền truy cập thông tin vị trí ước chừng cho người dùng
- 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 camera hoặc micrô
- Lõi điện toán riêng tư (PCC) của Android
- Thêm lựa 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
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ư. Hãy xem ghi chú phát hành Android 10 để biết 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. Phương pháp giảm thiểu này được bật ở cấp mô-đun. Tính năng này giúp bảo mật các thành phần quan trọng của Android và không được tắt. BoundSan được bật trong các bộ mã hoá và giải mã sau:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
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ăng cường bảo mật trước các cuộ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ớ ở chế độ 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à các cơ chế xác thực cấp ba (chẳng hạn như Smart Lock) sử dụng, chỉ có thể kéo dài thời gian mở khoá trong Android 10. Các tác nhân tin cậy không thể mở khoá thiết bị bị khoá nữa và chỉ có thể giữ cho thiết bị mở khoá trong tối đa 4 giờ.
Xác thực khuôn mặt
Tính năng xác thực bằng khuôn mặt cho phép người dùng mở khoá thiết bị chỉ bằng cách nhìn vào mặt trước của thiết bị. 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ý 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 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.
Xoá dữ liệu tràn số nguyên
Android 10 bật tính năng Xoá lỗi tràn số nguyên (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:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
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 Runtime
- Conscrypt
- Trình phân giải DNS
- DocumentsUI
- ExtServices
- Nội dung đa phương tiện
- ModuleMetadata
- 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à chế độ thiết bị đo lường
LLVM giúp bảo vệ khỏi việc ghi đè địa chỉ trả về (như
tràn bộ đệm ngăn xếp) bằng cách lưu địa chỉ trả về của một hàm vào một bản sao ShadowCallStack được phân bổ riêng trong prolog hàm của các hàm không phải lá và tải địa chỉ trả về từ bản sao ShadowCallStack trong epilog hàm.
WPA3 và Wi-Fi Enhanced Open
Android 10 hỗ trợ thêm các tiêu chuẩn bảo mật Wi-Fi Protected Access 3 (WPA3) và Wi-Fi Enhanced Open để tăng cường quyền riêng tư và khả năng chống lại các cuộc tấn công đã biết.
Quyền riêng tư
Quyền truy cập của ứ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) trở xuống, thì 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_LOCATIONhoặcACCESS_COARSE_LOCATION, hệ thống sẽ tự động thêm phần tử<uses-permission>choACCESS_BACKGROUND_LOCATIONtrong quá trình cài đặt. - Nếu ứng dụng của bạn yêu cầu
ACCESS_FINE_LOCATIONhoặcACCESS_COARSE_LOCATION, hệ thống sẽ tự động thêmACCESS_BACKGROUND_LOCATIONvào yêu cầu.
Hạn chế hoạt động ở chế độ nền
Kể từ Android 10, hệ thống sẽ đặt các quy tắc 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 nhiều 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 máy ảnh
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ó quyền CAMERA để truy cập vào siêu dữ liệu có thể dành riêng cho thiết bị có 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à trình chỉnh sửa phương thức nhập (IME) mặc định hoặc là ứng dụng hiện đang 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.
Không giống như quyền ACCESS_FINE_LOCATION
và ACCESS_COARSE_LOCATION, 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 coi là đang truy cập thông tin vị trí ở chế độ nền trừ phi đáp ứng một trong các điều kiện sau:
- Một hoạt động thuộc ứng dụng đang hiển thị.
- Ứ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.
Để khai báo loại dịch vụ trên nền trước cho một dịch vụ trong ứng dụng, hãy đặttargetSdkVersionhoặccompileSdkVersioncủa ứng dụng thành29trở 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 các thao tác do người dùng khởi tạo cần quyền truy cập thông tin vị trí.
Bộ nhớ ngoài
Theo mặc định, các ứng dụng nhắm đến Android 10 trở lên được cấp quyền truy cập có giới hạn 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 trong thiết bị bộ nhớ ngoài mà không cần yêu cầu người dùng cấp bất kỳ quyền nào 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 từ kho phương tiện.
Để 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 địa chỉ MAC ngẫu nhiên 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 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 chỉ định cho một mạng cụ thể bằng cách gọi
getRandomizedMacAddress(). - Nhận địa chỉ MAC thực tế, ban đầu: Ứ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 thức này rất hữu ích trong việc 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.
BuildTelephonyManager
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ì
SecurityExceptionsẽ xảy ra. - Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, phương thức này sẽ trả về
nullhoặc dữ liệu phần giữ chỗ nếu ứng dụng có quyềnREAD_PHONE_STATE. Nếu không,SecurityExceptionsẽ xảy ra.
Nhận dạng hoạt động thể chất
Android 10 ra mắt quyền khi bắt đầu chạy android.permission.ACTIVITY_RECOGNITION cho các ứ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, chẳng hạn như đi bộ, đi xe đạp hoặc di chuyển bằng 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ư API Nhận dạng hoạt động và API Google Fit, sẽ không cung cấp kết quả trừ khi người dùng đã cấp cho ứng dụng của bạn quyền này.
Chỉ có các cảm biến tích hợp trên thiết bị yêu cầu bạn khai báo quyền này là cảm biến đếm bước và trình phát hiện bước.
Nếu ứng dụng của bạn nhắm đến Android 9 (API cấp 28) trở xuống, thì hệ thống sẽ 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 của bạn đáp ứng từng điều kiện sau:
- 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, thì ứng dụng của bạn sẽ giữ lại quyền này 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 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 lớp 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á mối quan hệ tương đồng của người 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 tìm kiếm trên danh bạ của người dùng, thì kết quả sẽ 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 trên màn hình của người dùng, Android 10 ngăn chặn việc truy cập thầm 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 các quyền READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT và CAPTURE_SECURE_VIDEO_OUTPUT. Kể từ Android 10, các quyền này chỉ có quyền truy cập 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 của bạn không thể đọc số sê-ri cho đến khi người dùng cấp cho ứng dụng quyền truy cập vào thiết bị hoặc phụ kiện USB.
Để 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. Phương thức 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.
Hạn chế quyền truy cập trực tiếp vào các mạng Wi-Fi đã định cấu hình
Để bảo vệ quyền riêng tư của người dùng, việc định cấu hình thủ công danh sách mạng Wi-Fi chỉ được phép đối với các ứng dụng hệ thống và trình điều khiển chính sách thiết bị (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 trả vềfalse.
Android 9
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需 Android 9 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
Android 8
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能:
- 加密:在工作资料中增加了对撤销密钥 (evict key) 的支持。
- 验证启动:增加了 Android 启动时验证 (AVB)。支持回滚保护(用于引导加载程序)的启动时验证代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。
- 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。
- KeyStore:搭载 Android 8.0 及更高版本的所有设备都需要进行密钥认证。增加了 ID 认证支持,以改进零触摸注册计划。
- 沙盒:使用 Treble 计划的框架和设备特定组件之间的标准接口更紧密地对许多组件进行沙盒化处理。将 seccomp 过滤应用到了所有不信任的应用,以减少内核的攻击面。WebView 现在运行在一个独立的进程中,对系统其余部分的访问非常有限。
- 内核加固:实现了经过安全强化的 usercopy、PAN 模拟、初始化后变为只读以及 KASLR。
- 用户空间安全强化:为媒体堆栈实现了 CFI。 应用叠加层不能再遮盖系统关键窗口,并且用户可以关闭这些叠加层。
- 操作系统流式更新:在磁盘空间不足的设备上启用了更新。
- 安装未知应用:用户必须授予权限,系统才能从不是第一方应用商店的来源安装应用。
- 隐私权:对于设备上的每个应用和使用设备的每个用户,Android ID (SSAID) 都采用不同的值。对于网络浏览器应用,Widevine 客户端 ID 会针对每个应用软件包名称和网络来源返回不同的值。
net.hostname现在为空,并且 DHCP 客户端不再发送主机名。android.os.Build.SERIAL已被替换为Build.SERIALAPI(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。
Android 7
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 7.0 中提供的一些主要安全增强功能:
- 文件级加密:在文件级进行加密,而不是将整个存储区域作为单个单元进行加密。这种加密方式可以更好地隔离和保护设备上的不同用户和资料(例如个人资料和工作资料)。
- 直接启动:通过文件级加密实现,允许特定应用(例如,闹钟和无障碍功能)在设备已开机但未解锁的情况下运行。
- 验证启动:现在,验证启动会被严格强制执行,从而使遭到入侵的设备无法启动;验证启动支持纠错功能,有助于更可靠地防范非恶意数据损坏。
- SELinux。更新后的 SELinux 配置和更高的 Seccomp 覆盖率有助于进一步锁定应用沙盒并减小受攻击面。
- 库加载顺序随机化和改进的 ASLR。 增大随机性降低了某些代码重用攻击的有效性。
- 内核加固:通过将内核内存的各个分区标记为只读,限制内核对用户空间地址的访问,并进一步减小现有的受攻击面,为更高版本的内核添加额外的内存保护。
- APK 签名方案 v2:引入了一种全文件签名方案,该方案有助于加快验证速度并增强完整性保证。
- 可信 CA 存储区。为了使应用更容易控制对其安全网络流量的访问,对于 API 级别为 24 及以上的应用,由用户安装的证书颁发机构以及通过 Device Admin API 安装的证书颁发机构在默认情况下不再受信任。此外,所有新的 Android 设备必须搭载相同的可信 CA 存储区。
- 网络安全配置。通过声明式配置文件来配置网络安全设置和传输层安全协议 (TLS)。
Android 6
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 6.0 中提供的一些主要安全增强功能:
- 运行时权限:应用在运行时请求权限,而不是在安装时被授予权限。用户可以为 M 及更低版本的 Android 应用启用和停用权限。
- 验证启动:在执行系统软件之前,先对其进行一系列加密检查,以确保手机从引导加载程序到操作系统均处于正常状况。
- 硬件隔离安全措施:新的硬件抽象层 (HAL),Fingerprint API、锁定屏幕、设备加密功能和客户端证书可以利用它来保护密钥免遭内核入侵和/或现场攻击。
- 指纹:现在,只需触摸一下,即可解锁设备。开发者还可以借助新的 API 来使用指纹锁定和解锁加密密钥。
- 加装 SD 卡:可将移动媒体设备加装到设备上,以便扩展可用存储空间来存放本地应用数据、照片、视频等内容,但仍受块级加密保护。
- 明文流量:开发者可以使用新的 StrictMode 来确保其应用不会使用明文。
- 系统加固:通过由 SELinux 强制执行的政策对系统进行加固。这可以实现更好的用户隔离和 IOCTL 过滤、降低可从设备/系统之外访问的服务面临的威胁、进一步强化 SELinux 域,以及高度限制对 /proc 的访问。
- USB 访问控制:必须由用户确认是否允许通过 USB 访问手机上的文件、存储空间或其他功能。现在,默认设置是“仅充电”,如果要访问存储空间,必须获得用户的明确许可。
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
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
setuidhoặ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ìnhsetuidhoặ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
/systemhiệ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_SOURCEtrê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 提供了一个多层安全模型,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 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ố điểm cải tiến về bảo mật được giới thiệu trong các phiên bản Android từ 1.5 đến 4.1:
- Android 1.5
- ProPolice để ngăn tình trạng tràn vùng đệm ngăn xếp (-fstack-protector)
- safe_iop để giảm tình trạng tràn số nguyên
- Các tiện ích mở rộng cho OpenBSD dlmalloc để ngăn chặn các lỗ hổng double free() và để ngăn chặn các cuộc tấn công hợp nhất đoạn. Các cuộc tấn công hợp nhất mảnh là một cách phổ biến để khai thác tình trạng hỏng vùng nhớ khối xếp.
- OpenBSD calloc để ngăn tình trạng tràn số nguyên trong quá trình phân bổ bộ nhớ
- Android 2.3
- Bảo vệ lỗ hổng chuỗi định dạng (-Wformat-security -Werror=format-security)
- Không thực thi (NX) dựa trên phần cứng để ngăn thực thi mã trên ngăn xếp và vùng nhớ khối xếp
- Linux mmap_min_addr để giảm thiểu việc tăng cường đặc quyền tham chiếu giá trị con trỏ rỗng (được cải tiến hơn nữa trong Android 4.1)
- Android 4.0
- Sắp xếp ngẫu nhiên bố cục không gian địa chỉ (ASLR) để sắp xếp ngẫu nhiên các vị trí chính trong bộ nhớ
- Android 4.1
- Hỗ trợ PIE (Tệp thực thi độc lập với vị trí)
- Di chuyển chỉ có thể đọc / liên kết tức thì (-Wl,-z,relro -Wl,-z,now)
- Bật dmesg_restrict (tránh rò rỉ địa chỉ hạt nhân)
- Bật kptr_restrict (tránh rò rỉ địa chỉ hạt nhân)