Android ปรับปรุงความสามารถและข้อเสนอด้านความปลอดภัยอย่างต่อเนื่อง ดูรายการการปรับปรุงตามรุ่นในการนําทางด้านซ้าย
Android 14
每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:
- Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
- 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
- Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接。
- 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划。
- 新增了对多个 IMEI 的支持
- 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
- 移动网络连接
- 在 Android 安全中心添加了相关文档
- 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。
Android 13
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใน Android 13
- Android 13 เพิ่มการรองรับงานนำเสนอแบบหลายเอกสาร อินเทอร์เฟซเซสชันการนำเสนอแบบใหม่นี้ช่วยให้แอปนำเสนอเอกสารได้หลายรายการ ซึ่ง API ที่มีอยู่ไม่สามารถทำได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารระบุตัวตน
- ใน Android 13 ระบบจะนำส่ง Intent ที่มาจากแอปภายนอกไปยังคอมโพเนนต์ที่ส่งออกก็ต่อเมื่อ Intent ตรงกับองค์ประกอบ intent-filter ที่ประกาศไว้เท่านั้น
- Open Mobile API (OMAPI) คือ API มาตรฐานที่ใช้สื่อสารกับองค์ประกอบที่ปลอดภัยของอุปกรณ์ ก่อนที่จะมี Android 13 มีเพียงแอปและโมดูลเฟรมเวิร์กเท่านั้นที่มีสิทธิ์เข้าถึงอินเทอร์เฟซนี้ โมดูล HAL สามารถสื่อสารกับองค์ประกอบที่ปลอดภัยผ่านบริการ OMAPI ได้ด้วยเมื่อแปลงเป็นอินเทอร์เฟซที่เสถียรของผู้ให้บริการ ดูข้อมูลเพิ่มเติมได้ที่อินเทอร์เฟซที่ใช้งานจริงของผู้ให้บริการ OMAPI
- ระบบเลิกใช้งาน UID ที่แชร์แล้วใน Android 13-QPR ผู้ใช้ Android 13 ขึ้นไปควรใส่บรรทัด `android:sharedUserMaxSdkVersion="32"` ในไฟล์ Manifest รายการนี้ป้องกันไม่ให้ผู้ใช้ใหม่ได้รับ UID ที่แชร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ UID ได้ที่การรับรองแอป
- Android 13 เพิ่มการรองรับพื้นฐานการเข้ารหัสแบบสมมาตรของคีย์สโตร์ เช่น AES (มาตรฐานการเข้ารหัสขั้นสูง), HMAC (คีย์-แฮชรหัสการตรวจสอบข้อความ), และอัลกอริทึมการเข้ารหัสแบบไม่สมมาตร (รวมถึง Elliptic Curve, RSA2048, RSA4096 และ Curve 25519)
- Android 13 (API ระดับ 33) ขึ้นไปรองรับสิทธิ์รันไทม์สำหรับการส่งการแจ้งเตือนที่ไม่ได้รับการยกเว้นจากแอป ซึ่งช่วยให้ผู้ใช้ควบคุมการแจ้งเตือนสิทธิ์ที่ตนเห็นได้
- เพิ่มข้อความแจ้งแบบครั้งเดียวสำหรับแอปที่ขอสิทธิ์เข้าถึงบันทึกของอุปกรณ์ทั้งหมด ซึ่งช่วยให้ผู้ใช้สามารถอนุญาตหรือปฏิเสธการเข้าถึงได้
- ได้เปิดตัว Android Virtualization Framework (AVF) ซึ่งรวมไฮเปอร์วิซอร์ต่างๆ ไว้ในเฟรมเวิร์กเดียวด้วย API มาตรฐาน ซึ่งให้สภาพแวดล้อมการเรียกใช้ที่ปลอดภัยและเป็นส่วนตัวสําหรับการเรียกใช้เวิร์กโหลดที่แยกไว้โดยไฮเปอร์วิซอร์
- เปิดตัว APK Signature Scheme v3.1 การหมุนเวียนคีย์ใหม่ทั้งหมดที่ใช้ apksigner จะใช้รูปแบบลายเซ็น v3.1 โดยค่าเริ่มต้นเพื่อกำหนดเป้าหมายการหมุนเวียนสำหรับ Android 13 ขึ้นไป
โปรดดูบันทึกประจำรุ่นของ AOSP แบบเต็ม และฟีเจอร์และรายการการเปลี่ยนแปลงของนักพัฒนาแอป Android
Android 12
Android ทุกรุ่นมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ตัวอย่างการปรับปรุงด้านความปลอดภัยที่สำคัญๆ ใน Android 12 มีดังนี้
- Android 12 ขอแนะนำ BiometricManager.Strings API, ซึ่งมีสตริงที่แปลเป็นภาษาท้องถิ่นสำหรับแอปที่ใช้ BiometricPrompt ในการตรวจสอบสิทธิ์ สตริงเหล่านี้ออกแบบมาให้รับรู้ถึงอุปกรณ์และ ระบุประเภทการตรวจสอบสิทธิ์ที่อาจใช้ได้ละเอียดยิ่งขึ้น นอกจากนี้ Android 12 ยัง รองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
- เพิ่มการรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
- ขอแนะนำภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android สำหรับลายนิ้วมือ (AIDL)
- การรองรับ Face AIDL ใหม่
- ขอแนะนำ Rust เป็นภาษาสำหรับการพัฒนาแพลตฟอร์ม
- เพิ่มตัวเลือกให้ผู้ใช้ให้สิทธิ์เข้าถึงตำแหน่งโดยประมาณ เท่านั้น
- เพิ่มสัญญาณบอกความเป็นส่วนตัวในแถบสถานะเมื่อแอปใช้กล้องหรือไมโครโฟน
- Private Compute Core (PCC) ของ Android
- เพิ่มตัวเลือกเพื่อปิดใช้การรองรับ 2G
Android 11
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。如需查看 Android 11 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明。
Android 10
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ Android 10 มีการปรับปรุงด้านความปลอดภัยและความเป็นส่วนตัวหลายอย่าง ดูรายการการเปลี่ยนแปลงทั้งหมดใน Android 10 ได้ในบันทึกประจำรุ่นของ Android 10
ความปลอดภัย
BoundsSanitizer
Android 10 ใช้ BoundsSanitizer (BoundSan) ในบลูทูธและโปรแกรมเปลี่ยนรหัส BoundSan ใช้โปรแกรมตรวจสอบขอบเขตของ UBSan การลดความเสี่ยงนี้จะเปิดใช้งานในระดับโมดูล ซึ่งช่วยรักษาความปลอดภัยให้กับคอมโพเนนต์ที่สำคัญของ Android และไม่ควรปิดใช้ BoundSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
หน่วยความจําแบบเรียกใช้ได้อย่างเดียว
โดยค่าเริ่มต้น ส่วนโค้ดที่เรียกใช้งานได้สำหรับไบนารีของระบบ AArch64 จะมีการทำเครื่องหมายเป็น "เรียกใช้ได้อย่างเดียว" (อ่านไม่ได้) เพื่อลดความเสี่ยงจากการโจมตีด้วยโค้ดแบบทันท่วงที โค้ดที่ผสมข้อมูลและโค้ดเข้าด้วยกันและโค้ดที่ตรวจสอบส่วนเหล่านี้โดยเจตนา (โดยไม่แมปกลุ่มหน่วยความจำใหม่เป็น "อ่านได้" ก่อน) จะใช้งานไม่ได้อีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (API ระดับ 29 ขึ้นไป) จะได้รับผลกระทบหากแอปพยายามอ่านส่วนโค้ดของไลบรารีระบบที่เปิดใช้ execute-only (XOM) ในหน่วยความจำโดยไม่ทำเครื่องหมายส่วนนั้นว่าอ่านได้ก่อน
การเข้าถึงเพิ่มเติม
เอเจนต์ความน่าเชื่อถือ ซึ่งเป็นกลไกพื้นฐานที่กลไกการตรวจสอบสิทธิ์ระดับ 3 เช่น Smart Lock นำมาใช้ จะขยายการปลดล็อกได้เฉพาะใน Android 10 เอเจนต์ความน่าเชื่อถือจะปลดล็อกอุปกรณ์ที่ล็อกอยู่ไม่ได้อีกต่อไป และสามารถปลดล็อกอุปกรณ์ค้างไว้ได้สูงสุด 4 ชั่วโมงเท่านั้น
ตรวจสิทธิ์ด้วยใบหน้า
การตรวจสอบสิทธิ์ใบหน้าช่วยให้ผู้ใช้ปลดล็อกอุปกรณ์ได้ง่ายๆ เพียงมองไปที่ด้านหน้าของอุปกรณ์ Android 10 เพิ่มการรองรับสแต็กการตรวจสอบใบหน้าแบบใหม่ที่ประมวลผลเฟรมกล้องได้อย่างปลอดภัย เพื่อรักษาความปลอดภัยและความเป็นส่วนตัวในระหว่างการตรวจสอบใบหน้าในฮาร์ดแวร์ที่รองรับ นอกจากนี้ Android 10 ยังมีวิธีง่ายๆ ในการติดตั้งใช้งานที่เป็นไปตามข้อกำหนดด้านความปลอดภัยเพื่อเปิดใช้การผสานรวมแอปสำหรับธุรกรรมต่างๆ เช่น ธนาคารออนไลน์หรือบริการอื่นๆ
การดูแลจำนวนเต็มที่ล้น
Android 10 เปิดใช้การกรองจำนวนเต็มที่มีค่าเกิน (IntSan) ในโปรแกรมเปลี่ยนรหัสซอฟต์แวร์ ตรวจสอบว่าประสิทธิภาพการเล่นยอมรับได้สำหรับตัวแปลงรหัสที่ฮาร์ดแวร์ของอุปกรณ์ไม่รองรับ IntSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
คอมโพเนนต์ของระบบแบบโมดูล
Android 10 ทำให้คอมโพเนนต์ของระบบ Android บางรายการเป็นแบบโมดูลและทำให้อัปเดตคอมโพเนนต์เหล่านั้นได้นอกรอบการเผยแพร่ปกติของ Android ตัวอย่างข้อบังคับบางส่วน ได้แก่
- รันไทม์ของ Android
- Conscrypt
- DNS Resolver
- DocumentsUI
- ExtServices
- สื่อ
- ModuleMetadata
- การสร้างเครือข่าย
- PermissionController
- ข้อมูลเขตเวลา
OEMCrypto
Android 10 ใช้ OEMCrypto API เวอร์ชัน 15
Scudo
Scudo เป็นตัวจัดสรรหน่วยความจำแบบไดนามิกในโหมดผู้ใช้ที่ออกแบบมาให้มีความยืดหยุ่นมากขึ้นต่อช่องโหว่ที่เกี่ยวข้องกับกอง heap โดยจะมีนิพจน์พื้นฐานสำหรับการจองและการยกเลิกการจองแบบ C มาตรฐาน รวมถึงนิพจน์พื้นฐาน C++
ShadowCallStack
ShadowCallStack
(SCS) คือโหมดเครื่องมือวัดประสิทธิภาพ LLVM ที่ป้องกันไม่ให้มีการเขียนทับที่อยู่สำหรับส่งคืน (เช่น การเขียนทับบัฟเฟอร์สแต็ก) โดยบันทึกที่อยู่สำหรับส่งคืนของฟังก์ชันลงในอินสแตนซ์ ShadowCallStack ที่จัดสรรแยกต่างหากในส่วนนำหน้าของฟังก์ชันของฟังก์ชันที่ไม่ใช่ใบไม้ และโหลดที่อยู่สำหรับส่งคืนจากอินสแตนซ์ ShadowCallStack ในส่วนปิดท้ายของฟังก์ชัน
WPA3 และ Wi-Fi Enhanced Open
Android 10 เพิ่มการรองรับมาตรฐานความปลอดภัย Wi-Fi Protected Access 3 (WPA3) และ Wi-Fi Enhanced Open เพื่อความเป็นส่วนตัวที่ดีขึ้นและความแข็งแกร่งในการป้องกันการโจมตีที่ทราบ
ความเป็นส่วนตัว
การเข้าถึงแอปเมื่อกำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า
หากแอปของคุณทำงานบน Android 10 ขึ้นไปแต่กำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า แพลตฟอร์มจะใช้ลักษณะการทำงานต่อไปนี้
- หากแอปประกาศองค์ประกอบ
<uses-permission>สำหรับACCESS_FINE_LOCATIONหรือACCESS_COARSE_LOCATIONระบบจะเพิ่มองค์ประกอบ<uses-permission>สำหรับACCESS_BACKGROUND_LOCATIONโดยอัตโนมัติระหว่างการติดตั้ง - หากแอปขอ
ACCESS_FINE_LOCATIONหรือACCESS_COARSE_LOCATIONระบบจะเพิ่มACCESS_BACKGROUND_LOCATIONลงในคําขอโดยอัตโนมัติ
ข้อจำกัดของกิจกรรมในเบื้องหลัง
ตั้งแต่ Android 10 เป็นต้นไป ระบบจะจำกัดการเริ่มกิจกรรมจากเบื้องหลัง การเปลี่ยนแปลงลักษณะการทำงานนี้ช่วยลดการขัดจังหวะสำหรับผู้ใช้และช่วยให้ผู้ใช้ควบคุมสิ่งที่แสดงบนหน้าจอได้มากขึ้น ตราบใดที่แอปเริ่มกิจกรรมอันเป็นผลโดยตรงจากการโต้ตอบของผู้ใช้ แอปของคุณก็น่าจะไม่ได้รับผลกระทบจากข้อจำกัดเหล่านี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกที่แนะนําในการเริ่มกิจกรรมจากเบื้องหลังได้ที่คู่มือเกี่ยวกับวิธีแจ้งผู้ใช้เกี่ยวกับเหตุการณ์ที่มีเวลาจำกัดในแอป
ข้อมูลเมตาของกล้อง
Android 10 เปลี่ยนความกว้างของข้อมูลที่ getCameraCharacteristics()
method แสดงผลโดยค่าเริ่มต้น โดยเฉพาะอย่างยิ่ง แอปของคุณต้องมีสิทธิ์ CAMERA เพื่อเข้าถึงข้อมูลเมตาที่อาจเจาะจงอุปกรณ์ซึ่งรวมอยู่ในค่าที่แสดงผลของเมธอดนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ได้ที่ส่วนช่องกล้องที่ต้องใช้สิทธิ์
ข้อมูลคลิปบอร์ด
แอปของคุณจะเข้าถึงข้อมูลในคลิปบอร์ดใน Android 10 ขึ้นไปไม่ได้ เว้นแต่จะเป็นเครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) เริ่มต้นหรือเป็นแอปที่มีโฟกัสอยู่ในขณะนี้
ตำแหน่งของอุปกรณ์
Android 10 เปิดตัวสิทธิ์ ACCESS_BACKGROUND_LOCATION เพื่อรองรับการควบคุมเพิ่มเติมที่ผู้ใช้มีสิทธิ์ในการเข้าถึงข้อมูลตําแหน่งของแอป
สิทธิ์ ACCESS_BACKGROUND_LOCATION จะส่งผลต่อการเข้าถึงตำแหน่งของแอปเมื่อทำงานในเบื้องหลังเท่านั้น ซึ่งแตกต่างจากสิทธิ์ ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION
ระบบจะถือว่าแอปเข้าถึงตำแหน่งในเบื้องหลัง เว้นแต่จะมีการดำเนินการตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
- กิจกรรมที่เป็นของแอปจะปรากฏขึ้น
- แอปกำลังใช้บริการที่ทำงานอยู่เบื้องหน้าซึ่งประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าเป็น
location
หากต้องการประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าสำหรับบริการในแอป ให้ตั้งค่าtargetSdkVersionหรือcompileSdkVersionของแอปเป็น29ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่บริการที่ทำงานอยู่เบื้องหน้าสามารถดําเนินการต่อที่ผู้ใช้เริ่มไว้ซึ่งจําเป็นต้องเข้าถึงตําแหน่ง
ที่จัดเก็บข้อมูลภายนอก
โดยค่าเริ่มต้น แอปที่กำหนดเป้าหมายเป็น Android 10 ขึ้นไปจะได้รับสิทธิ์เข้าถึงแบบจำกัดที่จัดเก็บข้อมูลภายนอก หรือพื้นที่เก็บข้อมูลที่กำหนดขอบเขต แอปดังกล่าวจะดูไฟล์ประเภทต่อไปนี้ภายในอุปกรณ์จัดเก็บข้อมูลภายนอกได้โดยไม่ต้องขอสิทธิ์ใดๆ ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลจากผู้ใช้
- ไฟล์ในไดเรกทอรีเฉพาะแอป ซึ่งเข้าถึงได้โดยใช้
getExternalFilesDir() - รูปภาพ วิดีโอ และคลิปเสียงที่แอปสร้างขึ้นจากที่เก็บสื่อ
ดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลแบบจำกัดขอบเขต รวมถึงวิธีแชร์ เข้าถึง และแก้ไขไฟล์ที่บันทึกไว้ในอุปกรณ์จัดเก็บข้อมูลภายนอกได้จากคำแนะนำเกี่ยวกับวิธีจัดการไฟล์ในพื้นที่เก็บข้อมูลภายนอก และวิธีเข้าถึงและแก้ไขไฟล์สื่อ
การสุ่มที่อยู่ MAC
ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป ระบบจะส่งที่อยู่ MAC แบบสุ่มโดยค่าเริ่มต้น
หากแอปจัดการUse Case ขององค์กร แพลตฟอร์มจะมี API สําหรับการดำเนินการต่างๆ ที่เกี่ยวข้องกับที่อยู่ MAC ดังนี้
- รับที่อยู่ MAC แบบสุ่ม: แอปเจ้าของอุปกรณ์และแอปเจ้าของโปรไฟล์จะเรียกข้อมูลที่อยู่ MAC แบบสุ่มที่กำหนดให้กับเครือข่ายหนึ่งๆ ได้โดยเรียกใช้
getRandomizedMacAddress() - รับที่อยู่ MAC จริงจากโรงงาน: แอปเจ้าของอุปกรณ์สามารถเรียกข้อมูลที่อยู่ MAC ของฮาร์ดแวร์จริงของอุปกรณ์ได้โดยเรียก
getWifiMacAddress()วิธีนี้มีประโยชน์สำหรับการติดตามอุปกรณ์จํานวนมาก
ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้
ตั้งแต่ Android 10 เป็นต้นไป แอปต้องมีREAD_PRIVILEGED_PHONE_STATEสิทธิ์ที่มีอภิสิทธิ์เพื่อเข้าถึงตัวระบุที่รีเซ็ตไม่ได้ของอุปกรณ์ ซึ่งรวมถึงทั้งหมายเลข IMEI และหมายเลขซีเรียล
BuildTelephonyManager
หากแอปไม่มีสิทธิ์และคุณพยายามขอข้อมูลเกี่ยวกับตัวระบุที่รีเซ็ตไม่ได้อยู่ดี การตอบสนองของแพลตฟอร์มจะแตกต่างกันไปตามเวอร์ชัน SDK เป้าหมาย ดังนี้
- หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป ระบบจะแสดง
SecurityException - หากแอปกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า เมธอดนี้จะแสดง
nullหรือข้อมูลตัวยึดตำแหน่งหากแอปมีสิทธิ์READ_PHONE_STATEมิเช่นนั้นSecurityExceptionจะปรากฏขึ้น
การจดจำกิจกรรมการเคลื่อนไหวร่างกาย
Android 10 เปิดตัวandroid.permission.ACTIVITY_RECOGNITIONสิทธิ์รันไทม์สําหรับแอปที่ต้องตรวจจับจํานวนก้าวของผู้ใช้หรือจัดประเภทกิจกรรมการเคลื่อนไหวร่างกายของผู้ใช้ เช่น การเดิน การปั่นจักรยาน หรือการเคลื่อนที่ในยานพาหนะ ฟีเจอร์นี้ออกแบบมาเพื่อให้ผู้ใช้เห็นวิธีที่ระบบใช้ข้อมูลเซ็นเซอร์ของอุปกรณ์ในการตั้งค่า
ไลบรารีบางอย่างในบริการของ Google Play เช่น Activity Recognition API และ Google Fit API จะไม่แสดงผลลัพธ์เว้นแต่ผู้ใช้จะให้สิทธิ์นี้แก่แอปของคุณ
เซ็นเซอร์ในตัวเพียง 2 รายการในอุปกรณ์ที่คุณต้องประกาศสิทธิ์นี้ ได้แก่ เซ็นเซอร์ตัวนับก้าวและตัวตรวจจับก้าว
หากแอปกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า ระบบจะมอบสิทธิ์ android.permission.ACTIVITY_RECOGNITION ให้กับแอปโดยอัตโนมัติตามที่จำเป็น หากแอปเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด
- ไฟล์ Manifest มีสิทธิ์
com.google.android.gms.permission.ACTIVITY_RECOGNITION - ไฟล์ Manifest ไม่มีสิทธิ์
android.permission.ACTIVITY_RECOGNITION
หากระบบให้สิทธิ์ android.permission.ACTIVITY_RECOGNITION โดยอัตโนมัติ แอปของคุณจะยังคงมีสิทธิ์ดังกล่าวหลังจากอัปเดตแอปให้กำหนดเป้าหมายเป็น Android 10 อย่างไรก็ตาม ผู้ใช้สามารถเพิกถอนสิทธิ์นี้ได้ทุกเมื่อในการตั้งค่าระบบ
ข้อจํากัดของระบบไฟล์ /proc/net
ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป แอปจะเข้าถึง/proc/netไม่ได้ ซึ่งรวมถึงข้อมูลเกี่ยวกับสถานะเครือข่ายของอุปกรณ์ แอปที่ต้องเข้าถึงข้อมูลนี้ เช่น VPN ควรใช้คลาส NetworkStatsManager หรือ ConnectivityManager
นำกลุ่มสิทธิ์ออกจาก UI แล้ว
ตั้งแต่ Android 10 เป็นต้นไป แอปจะค้นหาวิธีจัดกลุ่มสิทธิ์ใน UI ไม่ได้
การนำความสัมพันธ์ของรายชื่อติดต่อออก
ตั้งแต่ Android 10 เป็นต้นไป แพลตฟอร์มจะไม่ติดตามข้อมูลความสัมพันธ์ของรายชื่อติดต่อ ดังนั้น หากแอปของคุณทำการค้นหารายชื่อติดต่อของผู้ใช้ ผลการค้นหาจะไม่จัดเรียงตามความถี่ของการโต้ตอบ
คำแนะนำเกี่ยวกับ ContactsProvider มีประกาศที่อธิบายช่องและวิธีการที่ล้าสมัยในอุปกรณ์ทุกเครื่องตั้งแต่ Android 10 เป็นต้นไป
จำกัดการเข้าถึงเนื้อหาในหน้าจอ
Android 10 ป้องกันไม่ให้เข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์โดยอัตโนมัติเพื่อปกป้องเนื้อหาบนหน้าจอของผู้ใช้ โดยเปลี่ยนขอบเขตของสิทธิ์ READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT และCAPTURE_SECURE_VIDEO_OUTPUT ตั้งแต่ Android 10 เป็นต้นไป สิทธิ์เหล่านี้จะเป็นสิทธิ์เข้าถึงลายเซ็นเท่านั้น
แอปที่ต้องเข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ควรใช้
MediaProjection
API ซึ่งจะแสดงข้อความแจ้งให้ผู้ใช้ให้ความยินยอม
หมายเลขซีเรียลของอุปกรณ์ USB
หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป แอปจะอ่านหมายเลขซีเรียลไม่ได้จนกว่าผู้ใช้จะให้สิทธิ์แอปเข้าถึงอุปกรณ์หรืออุปกรณ์เสริม USB
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับอุปกรณ์ USB ได้ที่คำแนะนำเกี่ยวกับวิธีกำหนดค่าโฮสต์ USB
Wi-Fi
แอปที่กำหนดเป้าหมายเป็น Android 10 ขึ้นไปจะเปิดหรือปิดใช้ Wi-Fi ไม่ได้ เมธอด WifiManager.setWifiEnabled() จะแสดงผลลัพธ์เป็น false เสมอ
หากต้องการแจ้งให้ผู้ใช้เปิดและปิดใช้ Wi-Fi ให้ใช้แผงการตั้งค่า
ข้อจำกัดในการเข้าถึงเครือข่าย Wi-Fi ที่กําหนดค่าไว้โดยตรง
การกำหนดค่ารายการเครือข่าย Wi-Fi ด้วยตนเองจะจำกัดไว้สำหรับแอประบบและตัวควบคุมนโยบายอุปกรณ์ (DPC) เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ DPC หนึ่งๆ อาจเป็นทั้งเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ก็ได้
หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป และไม่ใช่แอประบบหรือ DPC วิธีการต่อไปนี้จะไม่แสดงข้อมูลที่เป็นประโยชน์
- เมธอด
getConfiguredNetworks()จะแสดงผลรายการว่างเสมอ - วิธีการดําเนินการของเครือข่ายแต่ละรายการที่แสดงผลค่าจำนวนเต็ม
addNetwork()และupdateNetwork()จะแสดงผลเป็น -1 เสมอ - การดำเนินการแต่ละรายการของเครือข่ายที่แสดงผลค่าบูลีน ได้แก่
removeNetwork(),reassociate(),enableNetwork(),disableNetwork(),reconnect()และdisconnect()จะแสดงผล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 มีดังนี้
- การเข้ารหัสตามไฟล์ การเข้ารหัสที่ระดับไฟล์ แทนที่จะเข้ารหัสพื้นที่เก็บข้อมูลทั้งหมดเป็นหน่วยเดียว จะช่วยแยกและปกป้องผู้ใช้และโปรไฟล์แต่ละรายการ (เช่น ส่วนตัวและงาน) ในอุปกรณ์ได้ดียิ่งขึ้น
- Direct Boot Direct Boot เปิดใช้โดยการเข้ารหัสตามไฟล์ ซึ่งช่วยให้แอปบางแอป เช่น นาฬิกาปลุกและฟีเจอร์การช่วยเหลือพิเศษ ทำงานได้เมื่ออุปกรณ์เปิดอยู่แต่ไม่ปลดล็อก
- การเปิดเครื่องที่ได้รับการยืนยัน ตอนนี้เราบังคับใช้การเปิดเครื่องที่ได้รับการยืนยันอย่างเข้มงวดเพื่อป้องกันไม่ให้อุปกรณ์ที่ถูกบุกรุกบูตเครื่องได้ โดยระบบจะรองรับการแก้ไขข้อผิดพลาดเพื่อปรับปรุงความน่าเชื่อถือจากการเสียหายของข้อมูลที่ไม่ใช่การโจมตี
- SELinux การอัปเดตการกำหนดค่า SELinux และการเพิ่มการครอบคลุมของ seccomp จะช่วยล็อกแซนด์บ็อกซ์แอปพลิเคชันและลดพื้นที่การโจมตีได้มากขึ้น
- การสุ่มลําดับการโหลดไลบรารีและ ASLR ที่ปรับปรุงแล้ว ความเป็นแบบสุ่มที่มากขึ้นทำให้การโจมตีแบบใช้โค้ดซ้ำบางรายการมีความน่าเชื่อถือน้อยลง
- การทำให้เคอร์เนลปลอดภัยยิ่งขึ้น เพิ่มการป้องกันหน่วยความจำเพิ่มเติมสำหรับเคอร์เนลรุ่นใหม่โดยการทำเครื่องหมายหน่วยความจำบางส่วนของเคิร์นเป็นอ่านอย่างเดียว จำกัดการเข้าถึงที่อยู่พื้นที่ผู้ใช้ของเคิร์น และลดพื้นที่การโจมตีที่มีอยู่
- APK Signature Scheme v2 เปิดตัวรูปแบบลายเซ็นทั้งไฟล์ที่ช่วยเพิ่มความเร็วในการยืนยันและเพิ่มความมั่นใจในความสมบูรณ์
- ร้านค้า CA ที่เชื่อถือได้ เพื่อให้แอปควบคุมการเข้าถึงการรับส่งข้อมูลในเครือข่ายที่ปลอดภัยได้ง่ายขึ้น ระบบจะไม่เชื่อถือหน่วยงานที่รับรองที่ผู้ใช้ติดตั้งไว้และหน่วยงานที่รับรองที่ติดตั้งผ่าน Device Admin API โดยค่าเริ่มต้นอีกต่อไปสำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 24 ขึ้นไป นอกจากนี้ อุปกรณ์ 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.0
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 5.0 中提供的一些主要安全增强功能:
- 默认加密。在以开箱即用的方式搭载 L 的设备上,会默认启用全盘加密功能,以便更好地保护丢失设备或被盗设备上的数据。对于更新到 L 的设备,可以在设置 > 安全性部分进行加密。
- 经过改进的全盘加密功能。使用
scrypt保护用户密码免遭暴力破解攻击;在可能的情况下,该密钥会绑定到硬件密钥库,以防范来自设备外的攻击。 和以往一样,Android 屏幕锁定密钥和设备加密密钥不会被发送到设备以外,也不会提供给任何应用。 - 通过 SELinux 得到增强的 Android 沙盒。对于所有域,Android 现在都要求 SELinux 处于强制模式。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强现有的自主访问控制 (DAC) 安全模型。这个新的安全层为防范潜在的安全漏洞提供了额外的保护屏障。
- Smart Lock。Android 现在包含一些 Trustlet,它们可以提供更灵活的设备解锁方式。 例如,Trustlet 可让设备在靠近其他可信设备时自动解锁(通过 NFC、蓝牙),或让设备在用户拥有可信面孔时自动解锁。
- 面向手机和平板电脑的多用户功能、受限个人资料和访客模式。Android 现在为手机提供了多用户功能,并包含一个访客模式。利用访客模式,您可以让访客轻松地临时使用您的设备,而不向他们授予对您的数据和应用的访问权限。
- 不使用 OTA 的 WebView 更新方式。现在可以独立于框架对 WebView 进行更新,而且无需采用系统 OTA 方式。 这有助于更快速地应对 WebView 中的潜在安全问题。
- 经过更新的 HTTPS 和 TLS/SSL 加密功能。现在启用了 TLSv1.2 和 TLSv1.1,首选是正向加密,启用了 AES-GCM,停用了弱加密套件(MD5、3DES 和导出密码套件)。如需了解详情,请访问 https://developer.android.com/reference/javax/net/ssl/SSLSocket.html。
- 移除了非 PIE 链接器支持。Android 现在要求所有动态链接的可执行文件都要支持 PIE(位置无关可执行文件)。这有助于增强 Android 的地址空间布局随机化 (ASLR) 实现。
- FORTIFY_SOURCE 改进。以下 libc 函数现在实现了 FORTIFY_SOURCE 保护功能:
stpcpy()、stpncpy()、read()、recvfrom()、FD_CLR()、FD_SET()和FD_ISSET()。这有助于防范涉及这些函数的内存损坏漏洞。 - 安全修复程序。Android 5.0 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。
Android 4 และต่ำกว่า
每个 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 的某些设备可能也会包含这些修复程序。
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.3 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。此版本利用 Linux 内核中的 SELinux 强制访问权限控制系统 (MAC) 增强了 Android 沙盒。SELinux 强化功能(用户和开发者看不到它)可提高现有 Android 安全模型的可靠性,同时与现有应用保持兼容。为了确保持续兼容,此版本允许以宽容模式使用 SELinux。此模式会记录所有违反政策的行为,但不会中断应用,也不会影响系统行为。
- 没有
setuid或setgid程序。针对 Android 系统文件添加了对文件系统功能的支持,并移除了所有setuid或setgid程序。这可以减小 Root 攻击面,并降低出现潜在安全漏洞的可能性。 - ADB 身份验证。从 Android 4.2.2 起,开始使用 RSA 密钥对为 ADB 连接进行身份验证。这可以防止攻击者在实际接触到设备的情况下未经授权使用 ADB。
- 限制 Android 应用执行 SetUID 程序。
/system分区现在针对 Zygote 衍生的进程装载了 nosuid,以防止 Android 应用执行setuid程序。这可以减小 root 攻击面,并降低出现潜在安全漏洞的可能性。 - 功能绑定。在执行应用之前,Android Zygote 和 ADB 现在会先使用
prctl(PR_CAPBSET_DROP)舍弃不必要的功能。这可以防止 Android 应用和从 shell 启动的应用获取特权功能。 - AndroidKeyStore 提供程序。Android 现在有一个允许应用创建专用密钥的密钥库提供程序。该程序可以为应用提供一个用于创建或存储私钥的 API,其他应用将无法使用这些私钥。
- KeyChain
isBoundKeyAlgorithm。Keychain API 现在提供了一种方法 (isBoundKeyType),可让应用确认系统级密钥是否已绑定到设备的硬件信任根。该方法提供了一个用于创建或存储私钥的位置,即使发生 root 权限被窃取的情况,这些私钥也无法从设备中导出。 NO_NEW_PRIVS。Android Zygote 现在会在执行应用代码之前使用prctl(PR_SET_NO_NEW_PRIVS)禁止添加新权限。这可以防止 Android 应用执行可通过 execve 提升权限的操作。(此功能需要使用 3.5 或更高版本的 Linux 内核)。FORTIFY_SOURCE增强。在 Android x86 和 MIPS 上启用了FORTIFY_SOURCE,并增强了strchr()、strrchr()、strlen()和umask()调用。这可以检测潜在的内存损坏漏洞或没有结束符的字符串常量。- 重定位保护。针对静态关联的可执行文件启用了只读重定位 (relro) 技术,并移除了 Android 代码中的所有文本重定位技术。这可以纵深防御潜在的内存损坏漏洞。
- 经过改进的 EntropyMixer。除了定期执行混合操作之外,EntropyMixer 现在还会在关机或重新启动时写入熵。这样一来,便可以保留设备开机时生成的所有熵,而这对于配置之后立即重新启动的设备来说尤其有用。
- 安全修复程序。Android 4.3 中还包含针对 Android 特有漏洞的修复。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复。
Android มีรูปแบบการรักษาความปลอดภัยหลายชั้นตามที่อธิบายไว้ในภาพรวมความปลอดภัยของ Android การอัปเดต Android แต่ละครั้งมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยบางส่วนที่เปิดตัวใน Android 4.2
- การยืนยันแอป: ผู้ใช้สามารถเลือกเปิดใช้ "ยืนยันแอป" และขอให้ผู้ยืนยันแอปตรวจสอบแอปก่อนการติดตั้ง การยืนยันแอปสามารถแจ้งเตือนผู้ใช้หากพยายามติดตั้งแอปที่อาจเป็นอันตราย และสามารถบล็อกการติดตั้งได้หากแอปเป็นอันตรายมาก
- การควบคุม SMS แบบพรีเมียมมากขึ้น: Android จะแจ้งเตือนหากแอปพยายามส่ง SMS ไปยังรหัสสั้นที่ใช้บริการพรีเมียมซึ่งอาจทำให้เกิดค่าใช้จ่ายเพิ่มเติม ผู้ใช้เลือกได้ว่าจะอนุญาตให้แอปส่งข้อความหรือบล็อก
- VPN แบบเปิดตลอดเวลา: คุณสามารถกำหนดค่า VPN ไม่ให้แอปเข้าถึงเครือข่ายได้จนกว่าจะสร้างการเชื่อมต่อ VPN ซึ่งจะช่วยป้องกันไม่ให้แอปส่งข้อมูลผ่านเครือข่ายอื่น
- การปักหมุดใบรับรอง: ตอนนี้ไลบรารีหลักของ Android รองรับการปักหมุดใบรับรองแล้ว โดเมนที่ปักหมุดไว้จะได้รับการยืนยันใบรับรองไม่สําเร็จหากใบรับรองไม่ได้เชื่อมโยงกับชุดใบรับรองที่คาดไว้ ซึ่งจะช่วยป้องกันผู้ออกใบรับรองที่อาจถูกบุกรุก
- การแสดงสิทธิ์ของ Android ที่ได้รับการปรับปรุง: ระบบจะจัดระเบียบสิทธิ์เป็นกลุ่มต่างๆ ที่ผู้ใช้เข้าใจได้ง่ายขึ้น ในระหว่างการตรวจสอบสิทธิ์ ผู้ใช้สามารถคลิกสิทธิ์เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับสิทธิ์นั้นได้
- การทำให้ installd ทำงานได้ยากขึ้น: เดมอน
installdจะไม่ทำงานในฐานะผู้ใช้รูท ซึ่งจะลดพื้นที่การโจมตีที่อาจเกิดขึ้นสำหรับการเพิ่มระดับสิทธิ์รูท - การเพิ่มความแข็งแกร่งให้กับสคริปต์ init: ตอนนี้สคริปต์ init ใช้นิพจน์
O_NOFOLLOWเพื่อป้องกันการโจมตีที่เกี่ยวข้องกับสัญลักษณ์ลิงก์ FORTIFY_SOURCE: ตอนนี้ Android ใช้FORTIFY_SOURCEไลบรารีและแอปของระบบจะใช้สิ่งนี้เพื่อป้องกันความเสียหายของหน่วยความจำ- การกําหนดค่าเริ่มต้นของ ContentProvider: แอปที่กําหนดเป้าหมาย API ระดับ 17 จะมีการตั้งค่า
exportเป็นfalseโดยค่าเริ่มต้นสําหรับ Content Provider แต่ละรายการ ซึ่งจะลดพื้นที่การโจมตีเริ่มต้นสําหรับแอป - การเข้ารหัส: แก้ไขการใช้งานเริ่มต้นของ SecureRandom และ Cipher.RSA ให้ใช้ OpenSSL เพิ่มการรองรับ SSL Socket สำหรับ TLSv1.1 และ TLSv1.2 ใช้ OpenSSL 1.0.1
- การแก้ไขความปลอดภัย: ไลบรารีโอเพนซอร์สที่อัปเกรดแล้วพร้อมการแก้ไขความปลอดภัย ได้แก่ WebKit, libpng, OpenSSL และ LibXML นอกจากนี้ Android 4.2 ยังมีการแก้ไขช่องโหว่เฉพาะของ Android ด้วย เราได้แจ้งข้อมูลเกี่ยวกับช่องโหว่เหล่านี้ให้สมาชิกของ Open Handset Alliance ทราบแล้ว และสามารถดูการแก้ไขได้ในโครงการโอเพนซอร์ส Android อุปกรณ์บางรุ่นที่ใช้ Android เวอร์ชันเก่าอาจมีการแก้ไขเหล่านี้ด้วยเพื่อปรับปรุงความปลอดภัย
Android 提供了一个多层安全模型,Android 安全性概述中对该模型进行了介绍。每个 Android 更新版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 1.5 至 4.1 版中引入的一些安全增强功能:
- Android 1.5
- ProPolice:旨在防止堆栈缓冲区溢出 (-fstack-protector)
- safe_iop:旨在减少整数溢出
- OpenBSD dlmalloc 的扩展程序:旨在防范 double free() 漏洞和连续块攻击。连续块攻击是利用堆损坏的常见攻击方式。
- OpenBSD calloc:旨在防止在内存分配期间发生整数溢出
- Android 2.3
- 格式化字符串漏洞防护功能 (-Wformat-security -Werror=format-security)
- 基于硬件的 No eXecute (NX):旨在防止在堆栈和堆上执行代码
- Linux mmap_min_addr:旨在降低空指针解引用提权风险(在 Android 4.1 中得到了进一步增强)
- Android 4.0
- 地址空间布局随机化 (ASLR):旨在随机排列内存中的关键位置
- Android 4.1
- PIE(位置无关可执行文件)支持
- 只读重定位/立即绑定 (-Wl,-z,relro -Wl,-z,now)
- 启用了 dmesg_restrict(避免内核地址泄露)
- 启用了 kptr_restrict(避免内核地址泄露)