Android ปรับปรุงความสามารถและข้อเสนอด้านความปลอดภัยอย่างต่อเนื่อง ดูรายการการปรับปรุงตามรุ่นในการนําทางด้านซ้าย
Android 14
Android ทุกรุ่นมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใน Android 14
- AddressSanitizer ที่ได้รับการสนับสนุนจากฮาร์ดแวร์ (HWASan) ซึ่งเปิดตัวใน Android 10 เป็นเครื่องมือตรวจหาข้อผิดพลาดเกี่ยวกับหน่วยความจำที่คล้ายกับ AddressSanitizer Android 14 มีการปรับปรุง HWASan อย่างมาก ดูวิธีที่ HWAddressSanitizer ช่วยป้องกันไม่ให้ข้อบกพร่องปรากฏในรุ่น Android
- ใน Android 14 กล่องโต้ตอบสิทธิ์รันไทม์ของระบบจะมีส่วนใหม่ที่คลิกได้ซึ่งไฮไลต์แนวทางปฏิบัติด้านการแชร์ข้อมูลของแอป ซึ่งรวมถึงข้อมูลต่างๆ เช่น เหตุผลที่แอปอาจเลือกที่จะแชร์ข้อมูลกับบุคคลที่สาม
- Android 12 ได้เปิดตัวตัวเลือกในการปิดใช้การรองรับ 2G ที่ระดับโมเด็ม ซึ่งจะช่วยปกป้องผู้ใช้จากความเสี่ยงด้านความปลอดภัยที่มีอยู่เดิมจากรูปแบบการรักษาความปลอดภัยที่ล้าสมัยของ 2G Android 14 เปิดใช้ฟีเจอร์ด้านความปลอดภัยนี้ใน Android Enterprise เพื่อรองรับผู้ดูแลระบบไอทีในการจำกัดความสามารถของอุปกรณ์ที่มีการจัดการไม่ให้ดาวน์เกรดเป็นการเชื่อมต่อ 2G เนื่องจากตระหนักดีว่าการปิดใช้ 2G สำคัญกับลูกค้าองค์กรเพียงใด
- เพิ่มการรองรับเพื่อปฏิเสธการเชื่อมต่อมือถือที่เข้ารหัส Null เพื่อให้การรับส่งข้อมูลเสียงและ SMS แบบใช้วงจรสวิตช์ได้รับการเข้ารหัสและปกป้องจากการดักรับข้อมูลแบบแพสซีฟทางอากาศเสมอ ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมของ Android เพื่อเพิ่มความแข็งแกร่งให้กับการเชื่อมต่อมือถือ
- เพิ่มการรองรับ IMEI หลายรายการ
- ตั้งแต่ Android 14 เป็นต้นไป AES-HCTR2 เป็นโหมดการเข้ารหัสชื่อไฟล์ที่แนะนำสำหรับอุปกรณ์ที่มีคำสั่งการเข้ารหัสแบบเร่ง
- การเชื่อมต่อเครือข่ายมือถือ
- เพิ่มเอกสารประกอบสำหรับ Safety Center ของ Android
- หากแอปกำหนดเป้าหมายเป็น Android 14 และใช้การโหลดโค้ดแบบไดนามิก (DCL) ไฟล์ที่โหลดแบบไดนามิกทั้งหมดต้องทําเครื่องหมายเป็นแบบอ่านอย่างเดียว มิฉะนั้น ระบบจะแสดงข้อยกเว้น เราขอแนะนำให้แอปหลีกเลี่ยงการโหลดโค้ดแบบไดนามิกทุกครั้งที่ทำได้ เนื่องจากการดำเนินการดังกล่าวจะเพิ่มความเสี่ยงอย่างมากที่แอปจะถูกแทรกโค้ดหรือมีการดัดแปลงโค้ด
โปรดดูบันทึกประจำรุ่นของ AOSP แบบเต็ม และฟีเจอร์และรายการการเปลี่ยนแปลงของนักพัฒนาแอป Android
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
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ การปรับปรุงด้านความปลอดภัยที่สำคัญบางส่วนใน Android 12 มีดังนี้
- Android 12 เปิดตัว BiometricManager.Strings API ซึ่งมีสตริงที่แปลเป็นภาษาท้องถิ่นสำหรับแอปที่ใช้ BiometricPrompt เพื่อการตรวจสอบสิทธิ์ สตริงเหล่านี้มีไว้เพื่อให้อุปกรณ์รับรู้และ ระบุประเภทการตรวจสอบสิทธิ์ที่อาจใช้ได้อย่างเฉพาะเจาะจงมากขึ้น นอกจากนี้ Android 12 ยัง รองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผลด้วย
- เพิ่มการรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
- ข้อมูลเบื้องต้นเกี่ยวกับ Fingerprint Android Interface Definition Language (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 มีดังนี้
- การเข้ารหัส เพิ่มการรองรับการลบคีย์ในโปรไฟล์งาน
- การเปิดเครื่องที่ได้รับการยืนยัน เพิ่มการเปิดเครื่องที่ได้รับการยืนยันของ Android (AVB) โค้ดฐานการบูตที่ผ่านการยืนยันซึ่งรองรับการป้องกันการย้อนกลับเพื่อใช้ในบูตโหลดเดอร์เพิ่มลงใน AOSP แล้ว แนะนำให้รองรับการบูตโหลดเดอร์สำหรับการป้องกันการย้อนกลับของ HLOS แนะนำให้ผู้ใช้ปลดล็อกบูตโหลดเดอร์ได้โดยการโต้ตอบกับอุปกรณ์
- หน้าจอล็อก เพิ่มการรองรับการใช้ฮาร์ดแวร์ป้องกันการงัดแงะเพื่อยืนยันข้อมูลเข้าสู่ระบบในหน้าจอล็อก
- KeyStore การรับรองคีย์ที่จำเป็นสำหรับอุปกรณ์ทั้งหมดที่มาพร้อมกับ Android 8.0 ขึ้นไป เพิ่มการรองรับการรับรองผ่านบัตรประจำตัวเพื่อปรับปรุงการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม
- แซนด์บ็อกซ์ คอมโพเนนต์จำนวนมากมีความปลอดภัยมากขึ้นเนื่องจากใช้แซนด์บ็อกซ์โดยใช้อินเทอร์เฟซมาตรฐานของ Project Treble ระหว่างเฟรมเวิร์กกับคอมโพเนนต์เฉพาะอุปกรณ์ ใช้การกรอง seccomp กับแอปทั้งหมดที่ไม่น่าเชื่อถือเพื่อลดพื้นที่การโจมตีของเคอร์เนล ตอนนี้ WebView ทำงานในกระบวนการแยกต่างหากที่มีการเข้าถึงระบบส่วนอื่นๆ อย่างจำกัด
- การทำให้เคอร์เนลปลอดภัยยิ่งขึ้น ใช้ hardened usercopy, การจําลอง PAN, อ่านอย่างเดียวหลังจากการเริ่มต้น และ KASLR
- การทำให้พื้นที่ผู้ใช้มีความปลอดภัยมากขึ้น ติดตั้งใช้งาน CFI สําหรับกลุ่มสื่อกลาง การวางซ้อนของแอปจะไม่สามารถปกปิดหน้าต่างที่สำคัญต่อระบบได้อีกต่อไป และผู้ใช้จะมีวิธีปิดการวางซ้อนเหล่านั้น
- การอัปเดตระบบปฏิบัติการสตรีมมิง เปิดใช้การอัปเดตในอุปกรณ์ที่มีพื้นที่ดิสก์เหลือน้อย
- ติดตั้งแอปที่ไม่รู้จัก ผู้ใช้ต้องให้สิทธิ์เพื่อติดตั้งแอปจากแหล่งที่มาที่ไม่ใช่ App Store ของบุคคลที่หนึ่ง
- ความเป็นส่วนตัว รหัส Android (SSAID) จะมีค่าแตกต่างกันสำหรับแอปแต่ละแอปและผู้ใช้แต่ละรายในอุปกรณ์ สำหรับแอปเว็บเบราว์เซอร์ รหัสไคลเอ็นต์ Widevine จะแสดงผลค่าที่แตกต่างกันสำหรับชื่อแพ็กเกจแอปและต้นทางเว็บแต่ละรายการ
ตอนนี้
net.hostnameว่างเปล่าและไคลเอ็นต์ DHCP ไม่ได้ส่งชื่อโฮสต์อีกต่อไปandroid.os.Build.SERIALได้ถูกแทนที่ด้วยBuild.SERIALAPI ซึ่งได้รับการปกป้องโดยสิทธิ์ที่ผู้ใช้ควบคุม ปรับปรุงการสุ่มที่อยู่ MAC ในชิปเซ็ตบางรุ่น
Android 7
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 7.0:
- File-based encryption. Encrypting at the file level, instead of encrypting the entire storage area as a single unit, better isolates and protects individual users and profiles (such as personal and work) on a device.
- Direct Boot. Enabled by file-based encryption, Direct Boot allows certain apps such as alarm clock and accessibility features to run when device is powered on but not unlocked.
- Verified Boot. Verified Boot is now strictly enforced to prevent compromised devices from booting; it supports error correction to improve reliability against non-malicious data corruption.
- SELinux. Updated SELinux configuration and increased seccomp coverage further locks down the Application Sandbox and reduces attack surface.
- Library load-order randomization and improved ASLR. Increased randomness makes some code-reuse attacks less reliable.
- Kernel hardening. Added additional memory protection for newer kernels by marking portions of kernel memory as read-only, restricting kernel access to userspace addresses and further reducing the existing attack surface.
- APK signature scheme v2. Introduced a whole-file signature scheme that improves verification speed and strengthens integrity guarantees.
- Trusted CA store. To make it easier for apps to control access to their secure network traffic, user-installed certificate authorities and those installed through Device Admin APIs are no longer trusted by default for apps targeting API Level 24+. Additionally, all new Android devices must ship with the same trusted CA store.
- Network Security Config. Configure network security and TLS through a declarative configuration file.
Android 6
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ตัวอย่างการปรับปรุงด้านความปลอดภัยที่สำคัญที่มีใน Android 6.0 มีดังนี้
- สิทธิ์รันไทม์ แอปจะขอสิทธิ์เมื่อรันไทม์แทนที่จะได้รับการให้สิทธิ์เมื่อติดตั้งแอป ผู้ใช้สามารถเปิดและปิดสิทธิ์สำหรับทั้งแอปเวอร์ชัน M และแอปเวอร์ชันก่อน M ได้
- การเปิดเครื่องที่ได้รับการยืนยัน ระบบจะดำเนินการตรวจสอบการเข้ารหัสซอฟต์แวร์ของระบบก่อนดำเนินการเพื่อให้มั่นใจว่าโทรศัพท์ทำงานได้อย่างถูกต้องตั้งแต่บูตโหลดเดอร์ไปจนถึงระบบปฏิบัติการ
- ความปลอดภัยแบบแยกฮาร์ดแวร์ เลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ใหม่ที่ใช้โดย Fingerprint API, หน้าจอล็อก, การเข้ารหัสอุปกรณ์ และใบรับรองไคลเอ็นต์เพื่อปกป้องคีย์จากการประนีประนอมเคอร์เนลและ/หรือการโจมตีทางกายภาพในเครื่อง
- ลายนิ้วมือ ตอนนี้คุณปลดล็อกอุปกรณ์ได้ด้วยการแตะเพียงครั้งเดียว นอกจากนี้ นักพัฒนาแอปยังใช้ประโยชน์จาก API ใหม่เพื่อใช้ลายนิ้วมือในการล็อกและปลดล็อกคีย์การเข้ารหัสได้ด้วย
- การใช้การ์ด SD คุณใช้สื่อแบบถอดออกได้กับอุปกรณ์และขยายพื้นที่เก็บข้อมูลที่มีอยู่สำหรับข้อมูลในเครื่องของแอป รูปภาพ วิดีโอ ฯลฯ ได้ แต่ระบบจะยังคงเข้ารหัสในระดับบล็อก
- การเข้าชมแบบข้อความ นักพัฒนาแอปสามารถใช้ StrictMode ใหม่เพื่อให้แน่ใจว่าแอปของตนไม่ได้ใช้ข้อความที่ไม่มีการเข้ารหัส
- การทำให้ระบบปลอดภัย การทำให้ระบบมีความปลอดภัยมากขึ้นผ่านนโยบายที่บังคับใช้โดย SELinux ซึ่งจะแยกผู้ใช้ออกจากกันได้ดียิ่งขึ้น กรอง IOCTL ลดภัยคุกคามจากบริการที่เปิดเผย เพิ่มความเข้มงวดของโดเมน SELinux และจำกัดการเข้าถึง /proc อย่างมาก
- การควบคุมการเข้าถึงผ่าน USB: ผู้ใช้ต้องยืนยันเพื่ออนุญาตให้ USB เข้าถึงไฟล์ พื้นที่เก็บข้อมูล หรือฟังก์ชันอื่นๆ ในโทรศัพท์ ตอนนี้ค่าเริ่มต้นคือเรียกเก็บเงินเท่านั้นโดยมีสิทธิ์เข้าถึงพื้นที่เก็บข้อมูลซึ่งต้องได้รับอนุมัติจากผู้ใช้อย่างชัดเจน
Android 5
5.0
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใน Android 5.0
- เข้ารหัสโดยค่าเริ่มต้น ในอุปกรณ์ที่มาพร้อมกับ L โดยค่าเริ่มต้น ระบบจะเปิดใช้การเข้ารหัสดิสก์ทั้งเครื่องเพื่อปรับปรุงการปกป้องข้อมูลในอุปกรณ์ที่สูญหายหรือถูกขโมย อุปกรณ์ที่อัปเดตเป็น L จะเข้ารหัสได้ในการตั้งค่า > ความปลอดภัย
- การเข้ารหัสดิสก์เต็มรูปแบบที่ปรับปรุงใหม่ รหัสผ่านของผู้ใช้ได้รับการปกป้องจากการโจมตีด้วยวิธีถอดรหัสโดยใช้
scryptและระบบจะเชื่อมโยงคีย์กับที่เก็บคีย์ฮาร์ดแวร์ (หากมี) เพื่อป้องกันไม่ให้เกิดการโจมตีนอกอุปกรณ์ เช่นเดียวกับทุกครั้ง ระบบจะไม่ส่งข้อมูลลับของล็อกหน้าจอ Android และคีย์การเข้ารหัสของอุปกรณ์ออกจากอุปกรณ์หรือแสดงต่อแอปพลิเคชันใดๆ - แซนด์บ็อกซ์ของ Android ที่เสริมด้วย SELinux ตอนนี้ Android ต้องใช้ SELinux ในโหมดบังคับใช้สำหรับทุกโดเมน SELinux เป็นระบบการควบคุมการเข้าถึงแบบบังคับ (MAC) ในเคอร์เนล Linux ที่ใช้เสริมรูปแบบการรักษาความปลอดภัยแบบมีการพิจารณาการเข้าถึง (DAC) ที่มีอยู่ การป้องกันอีกชั้นนี้จะช่วยป้องกันช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น
- Smart Lock ตอนนี้ Android มี Trustlet ที่ให้ความยืดหยุ่นมากขึ้นในการปลดล็อกอุปกรณ์ ตัวอย่างเช่น Trustlet อาจอนุญาตให้ปลดล็อกอุปกรณ์โดยอัตโนมัติเมื่ออยู่ใกล้กับอุปกรณ์ที่เชื่อถืออีกเครื่องหนึ่ง (ผ่าน NFC, บลูทูธ) หรือมีการใช้งานโดยบุคคลที่มีใบหน้าที่เชื่อถือได้
- โหมดผู้ใช้หลายคน โปรไฟล์ที่ถูกจำกัด และโหมดผู้มาเยือนสำหรับโทรศัพท์และแท็บเล็ต ตอนนี้ Android รองรับผู้ใช้หลายคนในโทรศัพท์ และมีโหมดผู้มาเยือนที่สามารถใช้เพื่อมอบสิทธิ์เข้าถึงอุปกรณ์ชั่วคราวได้อย่างง่ายดายโดยไม่ต้องให้สิทธิ์เข้าถึงข้อมูลและแอปของคุณ
- การอัปเดต WebView โดยไม่ใช้ OTA ตอนนี้ WebView อัปเดตได้โดยไม่ขึ้นอยู่กับเฟรมเวิร์กและไม่ต้อง OTA ของระบบ ซึ่งจะช่วยให้ตอบสนองต่อปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นใน WebView ได้เร็วขึ้น
- การเข้ารหัสที่อัปเดตสำหรับ HTTPS และ TLS/SSL ระบบได้เปิดใช้ TLSv1.2 และ TLSv1.1 แล้ว แนะนำให้ใช้การเข้ารหัสจากต้นทางถึงปลายทาง เปิดใช้ AES-GCM และปิดใช้ชุดการเข้ารหัสที่เปราะบาง (MD5, 3DES และชุดการเข้ารหัสการส่งออก) แล้ว ดูรายละเอียดเพิ่มเติมได้ที่ https://developer.android.com/reference/javax/net/ssl/SSLSocket.html
- นำการรองรับ linker ที่ไม่ใช่ PIE ออก ตอนนี้ Android กําหนดให้ไฟล์ปฏิบัติการที่ลิงก์แบบไดนามิกทั้งหมดต้องรองรับ PIE (ไฟล์ปฏิบัติการที่ไม่ขึ้นกับตําแหน่ง) ซึ่งจะช่วยปรับปรุงการใช้งานการทำให้ที่อยู่แบบสุ่ม (ASLR) ของพื้นที่ที่อยู่ของ Android
- การปรับปรุง 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 มีดังนี้
- แซนด์บ็อกซ์ของ Android ที่เสริมด้วย SELinux ตอนนี้ Android ใช้ SELinux ในโหมดบังคับใช้ SELinux เป็นระบบการควบคุมการเข้าถึง (MAC) ที่จำเป็นในเคอร์เนล Linux ซึ่งใช้เพื่อเสริมรูปแบบการรักษาความปลอดภัยแบบมีการควบคุมการเข้าถึงแบบมีการพิจารณา (DAC) ที่มีอยู่ ซึ่งจะช่วยป้องกันช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น
- VPN ต่อผู้ใช้ ในอุปกรณ์ที่มีผู้ใช้หลายคน ตอนนี้ระบบจะใช้ VPN ต่อผู้ใช้แต่ละราย ซึ่งจะช่วยให้ผู้ใช้กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดในเครือข่ายผ่าน VPN ได้โดยไม่ส่งผลต่อผู้ใช้รายอื่นในอุปกรณ์
- การรองรับผู้ให้บริการ ECDSA ใน AndroidKeyStore ตอนนี้ Android มีผู้ให้บริการคีย์สโตร์ที่อนุญาตให้ใช้อัลกอริทึม ECDSA และ DSA
- คำเตือนการตรวจสอบอุปกรณ์ Android จะแสดงคำเตือนให้ผู้ใช้ทราบหากมีการเพิ่มใบรับรองลงในที่เก็บใบรับรองของอุปกรณ์ซึ่งอาจอนุญาตให้ตรวจสอบการรับส่งข้อมูลในเครือข่ายที่เข้ารหัส
- FORTIFY_SOURCE ตอนนี้ Android รองรับ FORTIFY_SOURCE ระดับ 2 แล้ว และระบบจะคอมไพล์โค้ดทั้งหมดด้วยการป้องกันเหล่านี้ FORTIFY_SOURCE ได้รับการปรับปรุงให้ทำงานร่วมกับ clang ได้
- การปักหมุดใบรับรอง Android 4.4 จะตรวจหาและป้องกันการใช้ใบรับรอง Google ที่เป็นการฉ้อโกงซึ่งใช้ในการสื่อสาร SSL/TLS ที่ปลอดภัย
- การแก้ไขความปลอดภัย Android 4.4 ยังมีการแก้ไขช่องโหว่เฉพาะของ Android ด้วย เราได้แจ้งข้อมูลเกี่ยวกับช่องโหว่เหล่านี้ให้สมาชิก Open Handset Alliance ทราบแล้ว และการแก้ไขมีอยู่ในโครงการโอเพนซอร์ส Android อุปกรณ์บางรุ่นที่ใช้ Android เวอร์ชันเก่าอาจมีการแก้ไขเหล่านี้ด้วยเพื่อปรับปรุงความปลอดภัย
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ การปรับปรุงด้านความปลอดภัยบางส่วนที่มีให้ใช้งานใน Android 4.3 มีดังนี้
- แซนด์บ็อกซ์ของ Android ที่เสริมด้วย SELinux เวอร์ชันนี้ช่วยเพิ่มความแข็งแกร่งให้กับแซนด์บ็อกซ์ของ Android โดยใช้ SELinux ซึ่งเป็นระบบควบคุมการเข้าถึงแบบบังคับ (MAC) ในเคอร์เนล Linux ผู้ใช้และนักพัฒนาแอปจะไม่เห็นการเสริมความปลอดภัยของ SELinux และจะช่วยเพิ่มความเสถียรให้กับโมเดลการรักษาความปลอดภัยที่มีอยู่ของ Android ไปพร้อมๆ กับคงความเข้ากันได้กับแอปที่มีอยู่ เวอร์ชันนี้อนุญาตให้ใช้ SELinux ในโหมดอนุญาตเพื่อให้มั่นใจว่ายังคงใช้งานร่วมกันได้ โหมดนี้จะบันทึกการละเมิดนโยบายทั้งหมด แต่ไม่ทำให้แอปขัดข้องหรือส่งผลต่อลักษณะการทํางานของระบบ
- ไม่มีโปรแกรม
setuidหรือsetgidเพิ่มการรองรับความสามารถของระบบไฟล์ให้กับไฟล์ระบบ Android และนำโปรแกรมsetuidหรือsetgidทั้งหมดออก ซึ่งจะช่วยลดพื้นที่การโจมตีรูทและโอกาสที่จะมีช่องโหว่ด้านความปลอดภัย - การตรวจสอบสิทธิ์ ADB ตั้งแต่ Android 4.2.2 เป็นต้นไป การเชื่อมต่อกับ ADB จะได้รับการรับรองด้วยคู่คีย์ RSA ซึ่งจะช่วยป้องกันการใช้ ADB โดยไม่ได้รับอนุญาตในกรณีที่ผู้โจมตีเข้าถึงอุปกรณ์ได้
- จำกัด Setuid จากแอป Android
ตอนนี้ระบบได้เมานต์พาร์ติชัน
/systemแบบ nosuid สําหรับกระบวนการที่เกิดจาก zygote ซึ่งป้องกันไม่ให้แอป Android เรียกใช้โปรแกรมsetuidซึ่งจะช่วยลดพื้นที่การโจมตีของรูทและโอกาสที่จะมีช่องโหว่ด้านความปลอดภัย - การกำหนดขีดจำกัดความสามารถ
ตอนนี้ zygote ของ Android และ ADB ใช้
prctl(PR_CAPBSET_DROP)เพื่อยกเลิกความสามารถที่ไม่จำเป็นก่อนที่จะเรียกใช้แอป ซึ่งจะช่วยป้องกันไม่ให้แอป Android และแอปที่เปิดจากเชลล์ได้รับความสามารถที่มีสิทธิ์ - ผู้ให้บริการ AndroidKeyStore ตอนนี้ Android มีผู้ให้บริการคีย์สโตร์ที่อนุญาตให้แอปสร้างคีย์ที่มีการใช้งานเฉพาะได้ ซึ่งจะช่วยให้แอปมี API ในการสร้างหรือจัดเก็บคีย์ส่วนตัวที่แอปอื่นๆ ไม่สามารถใช้ได้
- KeyChain
isBoundKeyAlgorithmตอนนี้ Keychain API มีเมธอด (isBoundKeyType) ที่ช่วยให้ผู้พัฒนาแอปยืนยันได้ว่าคีย์ทั้งระบบเชื่อมโยงกับรูทความน่าเชื่อถือของฮาร์ดแวร์สำหรับอุปกรณ์ ซึ่งจะเป็นพื้นที่สำหรับสร้างหรือจัดเก็บคีย์ส่วนตัวที่ไม่สามารถส่งออกจากอุปกรณ์ได้ แม้แต่ในกรณีที่มีการบุกรุกรูท NO_NEW_PRIVSตอนนี้ zygote ของ Android ใช้prctl(PR_SET_NO_NEW_PRIVS)เพื่อบล็อกการเพิ่มสิทธิ์ใหม่ก่อนการเรียกใช้โค้ดแอป ซึ่งจะช่วยป้องกันไม่ให้แอป Android ดําเนินการที่สามารถยกระดับสิทธิ์ผ่าน execve (ต้องใช้เคอร์เนล Linux เวอร์ชัน 3.5 ขึ้นไป)FORTIFY_SOURCEการเพิ่มประสิทธิภาพ เปิดใช้FORTIFY_SOURCEใน Android x86 และ MIPS และคำเรียก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 เพื่อลดจำนวนจำนวนเต็มที่ล้น
- ส่วนขยายสำหรับ dlmalloc ของ OpenBSD เพื่อป้องกันช่องโหว่ double free() และเพื่อป้องกันการโจมตีแบบรวมข้อมูล การโจมตีการรวมข้อมูลเป็นกลุ่มเป็นวิธีที่พบบ่อยในการใช้ประโยชน์จากการทุจริตของกอง
- OpenBSD calloc เพื่อป้องกันจำนวนเต็มล้นระหว่างการจัดสรรหน่วยความจำ
- Android 2.3
- การป้องกันช่องโหว่ของสตริงรูปแบบ (-Wformat-security -Werror=format-security)
- No eXecute (NX) ที่อิงตามฮาร์ดแวร์เพื่อป้องกันไม่ให้โค้ดทำงานบนสแต็กและกอง
- mmap_min_addr ของ Linux เพื่อลดการยกระดับสิทธิ์การอ้างอิง Null Pointer (ปรับปรุงเพิ่มเติมใน Android 4.1)
- Android 4.0
- Address Space Layout Randomization (ASLR) เพื่อสุ่มตำแหน่งของข้อมูลสำคัญในหน่วยความจำ
- Android 4.1
- การรองรับ PIE (Position Independent Executable)
- การเปลี่ยนตำแหน่งแบบอ่านอย่างเดียว / การเชื่อมโยงทันที (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict เปิดใช้ (หลีกเลี่ยงการเปิดเผยที่อยู่เคอร์เนล)
- เปิดใช้ kptr_restrict (หลีกเลี่ยงการเปิดเผยที่อยู่เคอร์เนล)