Các tính năng nâng cao về bảo mật

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

每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:

  • Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
  • 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
  • Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接
  • 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划
  • 新增了对多个 IMEI 的支持
  • 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
  • 移动网络连接
  • 在 Android 安全中心添加了相关文档
  • 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。

请查看完整的 AOSP 版本说明以及 Android 开发者功能和变更列表

Android 13

每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 13 中提供的一些主要安全增强功能:

  • Android 13 添加了对多文档呈现的支持。 通过这个新的 Presentation Session 接口,应用可以执行多文档呈现,而现有 API 无法做到这一点。如需了解详情,请参阅身份凭据
  • 在 Android 13 中,当且仅当源自外部应用的 intent 与其声明的 intent 过滤器元素匹配时,这些 intent 才会传送到导出的组件。
  • Open Mobile API (OMAPI) 是一种标准 API,用于与设备的安全元件进行通信。在 Android 13 之前,只有应用和框架模块可以访问此接口。通过将其转换为供应商稳定版接口,HAL 模块还能够通过 OMAPI 服务与安全元件进行通信。 如需了解详情,请参阅 OMAPI 供应商稳定版接口
  • 从 Android 13-QPR 开始,共享 UID 被废弃。 使用 Android 13 或更高版本的用户应在其清单中添加 `android:sharedUserMaxSdkVersion="32"` 行。此条目可防止新用户获取共享 UID。如需详细了解 UID,请参阅应用签名
  • Android 13 添加了对密钥库对称加密基元的支持,例如支持 AES(高级加密标准)、HMAC(密钥哈希消息认证码)以及非对称加密算法(包括椭圆曲线加密、RSA2048、RSA4096 和曲线 25519 加密)
  • Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免通知的运行时权限。这可让用户控制他们会看到哪些权限通知。
  • 针对请求访问所有设备日志的应用,添加了在每次使用时显示提示的功能,以便用户允许或拒绝授予访问权限。
  • 推出了 Android 虚拟化框架 (AVF),它使用标准化 API 将不同的 Hypervisor 整合到一个框架下。 它提供安全、私密的执行环境,以便执行通过 Hypervisor 隔离的工作负载。
  • 引入了 APK 签名方案 v3.1 所有使用 apksigner 的新密钥轮替都将默认使用 v3.1 签名方案,以便将 Android 13 及更高版本作为轮替目标。

请查看完整的 AOSP 版本说明以及 Android 开发者功能和变更列表

Android 12

每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 12 中提供的一些主要安全增强功能:

  • Android 12 引入了 BiometricManager.Strings API,它为使用 BiometricPrompt 进行身份验证的应用提供本地化的字符串。这些字符串旨在感知设备,并更明确地指定可以使用哪些身份验证类型。Android 12 还支持屏下指纹传感器
  • 添加了对屏下指纹传感器的支持
  • 引入了 Fingerprint Android 接口定义语言 (AIDL)
  • 支持新的 Face AIDL
  • 引入了 Rust 作为平台开发语言
  • 添加了可供用户仅授权应用访问其大致位置信息的选项
  • 当应用使用摄像头或麦克风时,现在状态栏上会显示隐私指示标志
  • Android 的 Private Compute Core (PCC)
  • 添加了用于停用 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ư. 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:

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> cho ACCESS_FINE_LOCATION hoặc ACCESS_COARSE_LOCATION, hệ thống sẽ tự động thêm phần tử <uses-permission> cho ACCESS_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ặc ACCESS_COARSE_LOCATION, hệ thống sẽ tự động thêm ACCESS_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_LOCATIONACCESS_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ướclocation.
    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, đặt targetSdkVersion hoặc compileSdkVersion đến 29 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ớ:

Để 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àitruy 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.

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 APIGoogle 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ộ đếmbướ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:

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.SERIAL API(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。

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

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ố tính năng bảo mật nâng cao chính hiện có trên Android 5:

  • Được mã hoá theo mặc định. Trên các thiết bị đi kèm với L ngay từ đầu, tính năng mã hoá toàn bộ ổ đĩa được bật theo mặc định để cải thiện khả năng bảo vệ dữ liệu trên các thiết bị bị mất hoặc bị đánh cắp. Bạn có thể mã hoá các thiết bị cập nhật lên L trong phần Cài đặt > Bảo mật .
  • Cải thiện tính năng mã hoá toàn bộ đĩa. Mật khẩu của người dùng là được bảo vệ khỏi các cuộc tấn công brute force bằng scrypt và, có sẵn, khoá sẽ được liên kết với kho khoá phần cứng để ngăn chặn cuộc tấn công ra ngoài thiết bị. Như mọi khi, khoá bí mật màn hình Android và khoá mã hoá thiết bị sẽ không được gửi ra khỏi thiết bị hoặc hiển thị cho bất kỳ ứng dụng nào.
  • Hộp cát Android được tăng cường bằng SELinux . Android ngay bây giờ yêu cầu SELinux trong chế độ thực thi cho tất cả các miền. SELinux là một hệ thống kiểm soát truy cập (MAC) bắt buộc trong nhân Linux được sử dụng để tăng cường mô hình bảo mật kiểm soát truy cập tuỳ ý (DAC) hiện tại. Lớp mới này cung cấp biện pháp bảo vệ bổ sung trước các lỗ hổng bảo mật tiềm ẩn.
  • Smart Lock. Android hiện có các trustlet giúp tăng tính linh hoạt khi mở khoá thiết bị. Ví dụ: trustlet có thể cho phép tự động mở khoá thiết bị khi ở gần một thiết bị tin cậy khác (thông qua NFC, Bluetooth) hoặc khi thiết bị được một người có khuôn mặt được tin cậy sử dụng.
  • Nhiều người dùng, hồ sơ bị hạn chế và chế độ khách cho điện thoại và máy tính bảng. Android hiện cung cấp cho nhiều người dùng trên điện thoại và có một chế độ khách có thể dùng để giúp bạn dễ dàng truy cập tạm thời vào mà không cấp quyền truy cập vào dữ liệu và ứng dụng của bạn.
  • Cập nhật WebView mà không cần OTA. Giờ đây, bạn có thể cập nhật WebView độc lập với khung và không cần hệ thống OTA. Điều này cho phép phản hồi nhanh hơn các vấn đề bảo mật tiềm ẩn trong WebView.
  • Cập nhật thuật toán mã hoá cho HTTPS và TLS/SSL. TLSv1.2 và TLSv1.1 hiện đã được bật, tính năng Bảo mật chuyển tiếp hiện được ưu tiên, AES-GCM hiện đã được bật và các bộ thuật toán mật mã yếu (MD5, 3DES và bộ thuật toán mật mã xuất) hiện đã bị tắt. Hãy xem https://developer.android.com/reference/javax/net/ssl/SSLSocket.html để biết thêm thông tin chi tiết.
  • Xoá tính năng hỗ trợ trình liên kết không phải PIE. Android hiện yêu cầu tất cả các tệp thực thi được liên kết linh động để hỗ trợ PIE (các tệp thực thi độc lập với vị trí). Điều này giúp cải thiện việc triển khai tính năng bố cục không gian địa chỉ ngẫu nhiên (ASLR) của Android.
  • Cải tiếnFORTIFY_SOURCE. Thư viện sau đây các hàm hiện triển khai biện pháp bảo vệ FORTIFY_SOURCE: stpcpy(), stpncpy(), read(), recvfrom() FD_CLR(), FD_SET()FD_ISSET(). Chiến dịch này cung cấp biện pháp bảo vệ chống lại các lỗ hổng bảo mật làm hỏng bộ nhớ liên quan đến các hàm đó.
  • Bản sửa lỗi bảo mật. Android 5.0 cũng bao gồm các bản sửa lỗi cho Các lỗ hổng bảo mật dành riêng cho Android. Thông tin về những lỗ hổng bảo mật này được cung cấp cho các thành viên của Open Handset Alliance và có các bản sửa lỗi tại Dự án nguồn mở Android. Để tăng cường bảo mật, một số thiết bị có cài đặt các phiên bản Android cũng có thể bao gồm các bản sửa lỗi này.

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 的某些设备可能也会包含这些修复程序。

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. Sau đây là một số tính năng bảo mật nâng cao hiện có trong Android 4.3:

  • Hộp cát Android được củng cố 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) của SELinux trong nhân Linux. SELinux tăng cường mà người dùng và nhà phát triển không nhìn thấy, đồng thời tăng thêm tính mạnh mẽ vào mô hình bảo mật Android hiện có mà 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 chính sách nhưng sẽ không làm hỏng ứng dụng hoặc ảnh hưởng đến hoạt động của hệ thống.
  • Không có chương trình setuid hoặc setgid. Bổ sung tính năng hỗ trợ các chức năng của hệ thống tệp vào tệp hệ thống Android và xoá tất cả chương trình setuid hoặc setgid. Chiến dịch này giảm bề mặt tấn công gốc và giảm thiểu khả năng bảo mật lỗ hổng bảo mật.
  • Xác thực ADB. Kể từ Android 4.2.2, các kết nối đến ADB là được xác thực bằng cặp khoá RSA. Điều này giúp 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 thực tế vào thiết bị.
  • Hạn chế Setuid trong các ứ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 ứng dụng Android thực thi các chương trình setuid. Điều này giúp giảm thiểu bề mặt tấn công gốc nguy cơ gặp phải 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) để thả khả 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.
  • 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 đáng tin cậy phần cứng cho thiết bị. Điều này mang lại 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 thư mục gốc.
  • NO_NEW_PRIVS. Android zygote hiện sử dụng prctl(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. Chiến dịch này ngăn ứng dụng Android thực hiện các thao tác có thể nâng cao đặc quyền thông qua người thực thi. (Đ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 cho FORTIFY_SOURCE. Đã bật FORTIFY_SOURCE trên Android x86 và MIPS và tăng cường strchr(), strrchr(), strlen(), và umask() cuộc gọi. Việc này có thể phát hiện các lỗ hổng tiềm ẩn về hỏng bộ nhớ 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.
  • Các 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 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 implements FORTIFY_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 to false 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 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ố biện pháp bảo mật các tính năng nâng cao đượ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 vùng đệm ngăn xếp vượt mức (-fstack-protector)
  • safety_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 bảo mật miễn phí hai lần và để ngăn các cuộc tấn công hợp nhất phân đoạn. Các cuộc tấn công hợp nhất phân đoạn là một cách phổ biến để khai thác lỗi 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
  • Các biện pháp bảo vệ lỗ hổng bảo mật chuỗi định dạng (-Wformat-security -Werror=format-security)
  • No eXecute (NX) dựa trên phần cứng để ngăn việc 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 đặc quyền huỷ tham chiếu con trỏ rỗng chuyển lên cấp trên (nâng cao hơn 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 (Vị trí thực thi độc lập)
  • Chuyển vị trí chỉ đọc / liên kết ngay lập tức (-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)