Android ปรับปรุงความสามารถและข้อเสนอด้านความปลอดภัยอย่างต่อเนื่อง ดูรายการการปรับปรุงตามรุ่นในการนำทางด้านซ้าย
แอนดรอยด์ 14
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใน Android 14
- AddressSanitizer (HWASan) ที่มีการสนับสนุนฮาร์ดแวร์ เปิดตัวใน Android 10 คือเครื่องมือตรวจหาข้อผิดพลาดด้านหน่วยความจําที่คล้ายกับ AddressSanitizer Android 14 ได้รับการปรับปรุงที่สำคัญใน HWASan ดูวิธีป้องกัน ข้อบกพร่องไม่ให้ อัปเดตใน Android รุ่นต่างๆ HWAddressSanitizer
- ใน Android 14 เริ่มจากแอปที่แชร์ข้อมูลตำแหน่งกับบุคคลที่สาม กล่องโต้ตอบสิทธิ์รันไทม์ของระบบจะมีส่วนที่คลิกได้ซึ่งไฮไลต์ หลักปฏิบัติในการแชร์ข้อมูลของแอป รวมถึงข้อมูลต่างๆ เช่น สาเหตุที่แอปอาจตัดสินใจแชร์ข้อมูล กับบุคคลที่สาม
- Android 12 ได้เปิดตัวตัวเลือกในการปิดใช้การรองรับ 2G ที่ระดับโมเด็ม ซึ่งจะช่วยปกป้องผู้ใช้จากความเสี่ยงด้านความปลอดภัยที่มีอยู่เดิมจากรูปแบบการรักษาความปลอดภัยที่ล้าสมัยของ 2G ศึกษาวิธี การปิดใช้ 2G ที่สำคัญอาจเป็นปัญหาสำหรับลูกค้าองค์กร Android 14 จะเปิดใช้ฟีเจอร์ความปลอดภัยนี้ ใน Android Enterprise เพิ่มการสนับสนุนสำหรับผู้ดูแลระบบไอทีเพื่อจำกัดความสามารถของ อุปกรณ์เพื่อดาวน์เกรดเป็นการเชื่อมต่อ 2G
- เพิ่มการสนับสนุนเพื่อปฏิเสธการเชื่อมต่อเครือข่ายมือถือที่เข้ารหัส Null เพื่อให้มั่นใจว่า การรับส่งข้อมูลเสียงและ SMS ที่เปลี่ยนวงจรจะได้รับการเข้ารหัสและป้องกันจากพาสซีฟเสมอ การดักรับข้อมูลผ่านอากาศ (OTA) เรียนรู้ ข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมของ Android ในการเสริมสร้างการเชื่อมต่อเครือข่ายมือถือ
- เพิ่มการรองรับ IMEI หลายหมายเลข
- ตั้งแต่ Android 14 โหมด AES-HCTR2 คือโหมดการเข้ารหัสชื่อไฟล์ที่แนะนำ สำหรับอุปกรณ์ที่มีวิธีการเข้ารหัสแบบเร่ง
- การเชื่อมต่อเครือข่ายมือถือ
- เพิ่มเอกสารประกอบสำหรับ ศูนย์ความปลอดภัยของ Android
- หากแอปกำหนดเป้าหมายเป็น Android 14 และใช้การโหลดโค้ดแบบไดนามิก (DCL) ไฟล์ที่โหลดแบบไดนามิกทั้งหมดจะต้องทำเครื่องหมายเป็นอ่านอย่างเดียว มิฉะนั้น ระบบจะแสดงข้อยกเว้น เราขอแนะนำให้แอปหลีกเลี่ยงการโหลดโค้ดแบบไดนามิกทุกครั้งที่ทำได้ เนื่องจากการดำเนินการดังกล่าวจะเพิ่มความเสี่ยงอย่างมากที่แอปจะถูกแทรกโค้ดหรือมีการดัดแปลงโค้ด
โปรดดูบันทึกประจำรุ่นของ AOSP ฉบับเต็มและฟีเจอร์และรายการการเปลี่ยนแปลงของนักพัฒนาแอป Android
แอนดรอยด์ 13
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ การเพิ่มประสิทธิภาพด้านความปลอดภัยหลักๆ ที่มีให้ใช้งานใน Android 13 มีดังนี้
- Android 13 เพิ่มการรองรับการนำเสนอหลายเอกสาร อินเทอร์เฟซเซสชันการนำเสนอแบบใหม่นี้ช่วยให้แอปสามารถ การนำเสนอแบบหลายเอกสาร สิ่งที่เป็นไปไม่ได้เมื่อใช้ 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"` ในไฟล์ Manifest รายการนี้ป้องกันไม่ให้ผู้ใช้ใหม่ได้รับ UID ที่แชร์ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับ UID ที่ App Signing
- 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 ฟีเจอร์ และรายการการเปลี่ยนแปลง
แอนดรอยด์ 12
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ การเพิ่มประสิทธิภาพด้านความปลอดภัยหลักๆ ที่มีให้ใช้งานใน Android 12 มีดังนี้
- Android 12 เปิดตัว BiometricManager.Strings API ซึ่งให้บริการสตริงที่แปลแล้วสําหรับแอปที่ใช้ BiometricPrompt เพื่อตรวจสอบสิทธิ์ สตริงเหล่านี้มีไว้เพื่อรับรู้อุปกรณ์และระบุประเภทการตรวจสอบสิทธิ์ที่อาจใช้ ใช้ Android 12 ด้วย มีการรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
- เพิ่มการรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
- การแนะนำลายนิ้วมือภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL)
- การสนับสนุนสำหรับ ใบหน้าใหม่ AIDL
- ทำความรู้จักกับ Rust เป็นภาษาสำหรับการพัฒนาแพลตฟอร์ม
- ตัวเลือกสำหรับผู้ใช้เพื่อให้สิทธิ์เข้าถึงเฉพาะ เพิ่มสถานที่แล้ว
- เพิ่มสัญญาณบอกสถานะความเป็นส่วนตัวในแถบสถานะเมื่อแอปใช้กล้องหรือไมโครโฟน
- Private Compute Core (PCC) ของ Android
- เพิ่มตัวเลือกในการปิดใช้การรองรับ 2G
แอนดรอยด์ 11
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ดูรายการการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางอย่างที่มีใน Android 11 ได้ที่บันทึกประจำรุ่นของ Android
แอนดรอยด์ 10
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ Android 10 มีการเพิ่มประสิทธิภาพด้านความปลอดภัยและความเป็นส่วนตัวหลายประการ ดูรายการการเปลี่ยนแปลงทั้งหมดใน Android 10 ได้ในบันทึกประจำรุ่นของ Android 10
ความปลอดภัย
BoundsSanitizer
Android 10 ใช้ BoundsSanitizer (BoundSan) ในบลูทูธและโปรแกรมเปลี่ยนรหัส BoundSan ใช้โปรแกรมตรวจสอบขอบเขตของ UBSan เปิดใช้การลดความเสี่ยงนี้ในระดับของแต่ละโมดูล ซึ่งช่วยรักษาความปลอดภัยให้กับคอมโพเนนต์ที่สำคัญของ Android และไม่ควรปิดใช้ เปิดใช้ BoundSan ใน ตัวแปลงรหัสต่อไปนี้
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
หน่วยความจำสำหรับดำเนินการเท่านั้น
โดยค่าเริ่มต้น ระบบจะทำเครื่องหมายส่วนของโค้ดที่สั่งการได้สำหรับไบนารีของระบบ AArch64 ปฏิบัติการเท่านั้น (อ่านไม่ได้) เป็นการลดช่องโหว่จากโค้ดแบบทันท่วงที ใช้การโจมตีซ้ำ โค้ดที่ผสมผสานข้อมูลและการเขียนโค้ดเข้าด้วยกันและเขียนโค้ดอย่างมีจุดมุ่งหมาย ตรวจสอบส่วนเหล่านี้ (โดยไม่ต้องรีแมปส่วนหน่วยความจำก่อน อ่านได้) ไม่ทำงานอีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (ระดับ API 29 ขึ้นไป) จะได้รับผลกระทบหากแอปพยายามอ่านส่วนโค้ดของปฏิบัติการเท่านั้น หน่วยความจำ (XOM) ได้เปิดใช้ไลบรารีระบบในหน่วยความจำโดยไม่ได้ทำเครื่องหมาย ว่าอ่านได้ง่าย
การเข้าถึงเพิ่มเติม
เอเจนต์ความน่าเชื่อถือ ซึ่งเป็นกลไกพื้นฐานที่กลไกการตรวจสอบสิทธิ์ระดับ 3 เช่น Smart Lock นำมาใช้ จะขยายการปลดล็อกได้เฉพาะใน Android 10 เชื่อถือ ตัวแทนจะไม่สามารถปลดล็อกอุปกรณ์ที่ล็อกอยู่ได้อีกต่อไป ทำได้เพียงปลดล็อกอุปกรณ์อย่างเดียว ได้นานสูงสุด 4 ชั่วโมง
ตรวจสิทธิ์ด้วยใบหน้า
ใบหน้า การตรวจสอบสิทธิ์ช่วยให้ผู้ใช้ปลดล็อกอุปกรณ์ได้ง่ายๆ ด้วยการดูที่ หน้าอุปกรณ์ของตนเอง Android 10 เพิ่มการรองรับการตรวจสอบสิทธิ์ด้วยใบหน้าแบบใหม่ สแต็กที่สามารถประมวลผลเฟรมกล้องได้อย่างปลอดภัย ช่วยรักษาความปลอดภัยและความเป็นส่วนตัว ในระหว่างการตรวจสอบสิทธิ์ด้วยใบหน้าบนฮาร์ดแวร์ที่รองรับ Android 10 ยังมี วิธีง่ายๆ ในการใช้งานที่สอดคล้องกับนโยบาย เพื่อเปิดใช้การผสานรวมแอป ธุรกรรม เช่น ธนาคารออนไลน์ หรือบริการอื่นๆ
การดูแลจัดการจำนวนเต็มที่มีค่าเกิน
Android 10 เปิดใช้การกรองจำนวนเต็มที่เกิน (IntSan) ในโปรแกรมเปลี่ยนรหัสซอฟต์แวร์ ตรวจสอบประสิทธิภาพการเล่น เป็นที่ยอมรับได้สำหรับตัวแปลงรหัสใดๆ ที่ฮาร์ดแวร์ของอุปกรณ์ไม่รองรับ IntSan เปิดใช้ในตัวแปลงรหัสต่อไปนี้
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
คอมโพเนนต์ของระบบแบบโมดูล
Android 10 รวม Android บางส่วนเป็นโมดูล คอมโพเนนต์ของระบบ และช่วยให้สามารถอัปเดตภายนอก ของรอบการเผยแพร่ปกติของ Android โมดูลต่างๆ ได้แก่
- รันไทม์ของ Android
- Conscrypt
- DNS Resolver
- DocumentsUI
- ExtServices
- สื่อ
- ModuleMetadata
- การสร้างเครือข่าย
- PermissionController
- เวลา ข้อมูลโซน
OEMCrypto
Android 10 ใช้ OEMCrypto API เวอร์ชัน 15
Scudo
Scudo เป็น ตัวจัดสรรหน่วยความจำแบบไดนามิกในโหมดผู้ใช้ ได้รับการออกแบบมาให้ทนทานมากขึ้นกับ ที่เกี่ยวข้องกับฮีป ให้การจัดสรรมาตรฐาน C และ ค่าพื้นฐานเกี่ยวกับดีล และ ค่าดั้งเดิม C++
CallStack ของ Shadow
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_FINE_LOCATION
และ ACCESS_COARSE_LOCATION
สิทธิ์ ACCESS_BACKGROUND_LOCATION
จะมีผลกับ
สิทธิ์เข้าถึงตำแหน่งของแอปเมื่อทำงานในเบื้องหลัง ระบบจะถือว่าแอปเข้าถึงตำแหน่งในเบื้องหลัง เว้นแต่จะมีการดำเนินการตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
- กิจกรรมที่เป็นของแอปจะปรากฏขึ้น
- แอปกำลังใช้บริการที่ทำงานอยู่เบื้องหน้าซึ่งประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าเป็น
location
หากต้องการประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าสำหรับบริการในแอป ให้ตั้งค่าtargetSdkVersion
หรือcompileSdkVersion
ของแอปเป็น29
ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่บริการที่ทำงานอยู่เบื้องหน้าสามารถดําเนินการต่อที่ผู้ใช้เริ่มไว้ซึ่งจําเป็นต้องเข้าถึงตําแหน่ง
ที่จัดเก็บข้อมูลภายนอก
โดยค่าเริ่มต้น แอปที่กำหนดเป้าหมายเป็น Android 10 ขึ้นไปจะได้รับสิทธิ์เข้าถึงแบบจำกัดที่จัดเก็บข้อมูลภายนอก หรือพื้นที่เก็บข้อมูลที่กำหนดขอบเขต แอปดังกล่าวสามารถดู ไฟล์ประเภทต่อไปนี้ในอุปกรณ์จัดเก็บข้อมูลภายนอกโดยไม่ต้อง หากต้องการขอสิทธิ์จากผู้ใช้ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูล ให้ทำดังนี้
- ไฟล์ในไดเรกทอรีเฉพาะแอป ซึ่งเข้าถึงได้โดยใช้
getExternalFilesDir()
- รูปภาพ วิดีโอ และคลิปเสียงที่แอปสร้างขึ้นจากสื่อ Store
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลที่กำหนดขอบเขต รวมถึงวิธีแชร์ เข้าถึง และ แก้ไขไฟล์ที่บันทึกไว้ในอุปกรณ์จัดเก็บข้อมูลภายนอก โปรดดูคำแนะนำเกี่ยวกับวิธี เพื่อจัดการ ไฟล์ในพื้นที่เก็บข้อมูลภายนอกและสิทธิ์เข้าถึง และแก้ไขไฟล์สื่อ
การสุ่มที่อยู่ MAC
ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป ระบบจะส่งที่อยู่ MAC แบบสุ่มโดยค่าเริ่มต้น
หากแอปจัดการ Use Case ขององค์กร แพลตฟอร์มจะมี API สําหรับการดำเนินการต่างๆ ที่เกี่ยวข้องกับที่อยู่ MAC ดังนี้
- รับที่อยู่ MAC แบบสุ่ม: แอปและและแอปของเจ้าของอุปกรณ์
แอปเจ้าของโปรไฟล์สามารถเรียกที่อยู่ MAC แบบสุ่มที่กำหนดให้กับ
เครือข่ายที่ระบุโดยเรียกใช้
getRandomizedMacAddress()
- รับที่อยู่ MAC จริงจากโรงงาน: แอปเจ้าของอุปกรณ์สามารถเรียกข้อมูลที่อยู่ MAC ของฮาร์ดแวร์จริงของอุปกรณ์ได้โดยเรียก
getWifiMacAddress()
วิธีนี้มีประโยชน์ในการติดตามกลุ่มอุปกรณ์
ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้
ตั้งแต่ Android 10 เป็นต้นไป แอปต้องมีสิ่งต่อไปนี้
เป็นสิทธิ์เฉพาะบุคคล READ_PRIVILEGED_PHONE_STATE
สิทธิ์เพื่อ
เข้าถึงตัวระบุที่รีเซ็ตไม่ได้ของอุปกรณ์ ซึ่งมีทั้ง IMEI และ
หมายเลขซีเรียล
Build
TelephonyManager
หากแอปไม่มีสิทธิ์และคุณพยายามขอข้อมูล เกี่ยวกับตัวระบุที่รีเซ็ตไม่ได้อยู่แล้ว การตอบสนองของแพลตฟอร์มจะแตกต่างกันไปตาม เวอร์ชัน 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
เสมอ
แอนดรอยด์ 9
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ สำหรับรายการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใช้งาน Android 9 โปรดดู รุ่นของ Android หมายเหตุ
แอนดรอยด์ 8
Android ทุกรุ่นมีการเพิ่มประสิทธิภาพด้านความปลอดภัยหลายสิบรายการเพื่อปกป้อง ผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใน Android 8.0
- การเข้ารหัส เพิ่มการรองรับการลบคีย์ในโปรไฟล์งาน
- การเปิดเครื่องที่ได้รับการยืนยัน เพิ่มการเปิดเครื่องที่ได้รับการยืนยันโดย Android (AVB) โค้ดฐานการบูตที่รองรับการป้องกันการย้อนกลับเพื่อใช้ในบูตโหลดเดอร์ได้รับการยืนยันแล้วและเพิ่มลงใน AOSP แนะนำให้รองรับการบูตโหลดเดอร์สำหรับการป้องกันการย้อนกลับของ HLOS แนะนำให้ผู้ใช้ปลดล็อกบูตโหลดเดอร์ได้โดยการโต้ตอบกับอุปกรณ์
- หน้าจอล็อก เพิ่มการรองรับการใช้ฮาร์ดแวร์ป้องกันการงัดแงะเพื่อยืนยันข้อมูลเข้าสู่ระบบในหน้าจอล็อก
- KeyStore การรับรองคีย์ที่จำเป็นสำหรับอุปกรณ์ทั้งหมดที่มาพร้อมกับ Android 8.0 ขึ้นไป เพิ่มการรองรับการรับรองผ่านบัตรประจำตัวเพื่อปรับปรุงการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม
- แซนด์บ็อกซ์ กระชับมากขึ้น แซนด์บ็อกซ์คอมโพเนนต์จำนวนมากโดยใช้อินเทอร์เฟซมาตรฐานของ Project Treble ระหว่าง เฟรมเวิร์กและคอมโพเนนต์เฉพาะอุปกรณ์ ใช้การกรอง seccomp กับแอปทั้งหมดที่ไม่น่าเชื่อถือเพื่อลดพื้นที่การโจมตีของเคอร์เนล ตอนนี้ WebView จะทำงานในกระบวนการแยกต่างหากที่มีการเข้าถึงระบบส่วนอื่นๆ อย่างจำกัด
- การแข็งตัวของเคอร์เนล ใช้ hardened usercopy, การจําลอง PAN, อ่านอย่างเดียวหลังจากการเริ่มต้น และ KASLR
- การปิดช่องโหว่ User Space ติดตั้งใช้งาน CFI สําหรับกลุ่มสื่อกลาง การวางซ้อนแอปจะไม่บดบังหน้าต่างที่สําคัญของระบบอีกต่อไป และผู้ใช้สามารถ ปิด
- การอัปเดตระบบปฏิบัติการสตรีมมิง การอัปเดตที่เปิดใช้ บนอุปกรณ์ที่มีพื้นที่ในดิสก์ต่ำ
- ติดตั้งแอปที่ไม่รู้จัก ผู้ใช้ต้องอนุญาต สิทธิ์เพื่อติดตั้งแอปจากแหล่งที่มาที่ไม่ใช่ App Store ของบุคคลที่หนึ่ง
- ความเป็นส่วนตัว รหัส Android (SSAID) มีค่าที่แตกต่างกันสำหรับ
และผู้ใช้แต่ละคนบนอุปกรณ์ สําหรับแอปเว็บเบราว์เซอร์ รหัสไคลเอ็นต์ Widevine
แสดงผลค่าที่ต่างกันสำหรับชื่อแพ็กเกจแอปและต้นทางเว็บแต่ละรายการ
net.hostname
ว่างเปล่าและไคลเอ็นต์ dhcp จะไม่ส่ง ชื่อโฮสต์android.os.Build.SERIAL
ได้ถูกแทนที่ด้วยBuild.SERIAL
API ซึ่งได้รับการปกป้องโดยสิทธิ์ที่ผู้ใช้ควบคุม ปรับปรุงการสุ่มที่อยู่ MAC ในชิปเซ็ตบางรุ่น
แอนดรอยด์ 7
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ต่อไปนี้คือการเพิ่มประสิทธิภาพด้านความปลอดภัยที่สำคัญบางส่วนที่มีให้ใช้งานใน Android 7.0
- การเข้ารหัสตามไฟล์ การเข้ารหัสในระดับไฟล์ แทนการเข้ารหัสพื้นที่เก็บข้อมูลทั้งหมดให้เป็นหน่วยเดียว แยกและปกป้องผู้ใช้และโปรไฟล์ส่วนบุคคล (เช่น บัญชีส่วนบุคคลและ ทำงาน) ในอุปกรณ์
- Direct Boot เปิดใช้โดยการเข้ารหัสตามไฟล์, โดยตรง การเปิดเครื่องทำให้แอปบางแอป เช่น นาฬิกาปลุกและฟีเจอร์การช่วยเหลือพิเศษ ทำงานเมื่อเปิดอุปกรณ์แต่ไม่ได้ปลดล็อก
- การเปิดเครื่องที่ได้รับการยืนยัน ตอนนี้เราบังคับใช้การเปิดเครื่องที่ได้รับการยืนยันอย่างเข้มงวดเพื่อป้องกันไม่ให้อุปกรณ์ที่ถูกบุกรุกบูตเครื่องได้ โดยระบบจะรองรับการแก้ไขข้อผิดพลาดเพื่อปรับปรุงความน่าเชื่อถือจากการเสียหายของข้อมูลที่ไม่ใช่การโจมตี
- SELinux อัปเดตการกำหนดค่า SELinux และเพิ่มแล้ว การครอบคลุม seccomp จะล็อก Application Sandbox ออกไปอีก และลดการโจมตี แพลตฟอร์ม
- การสุ่มลําดับการโหลดไลบรารีและ ASLR ที่ปรับปรุงแล้ว การสุ่มที่เพิ่มขึ้นทำให้การโจมตีแบบใช้โค้ดซ้ำมีความน่าเชื่อถือน้อยลง
- การทำให้เคอร์เนลปลอดภัยยิ่งขึ้น เพิ่มการป้องกันหน่วยความจำเพิ่มเติมสำหรับเคอร์เนลรุ่นใหม่โดยการทำเครื่องหมายหน่วยความจำบางส่วนของเคิร์นเป็นอ่านอย่างเดียว จำกัดการเข้าถึงที่อยู่พื้นที่ผู้ใช้ของเคิร์น และลดพื้นที่การโจมตีที่มีอยู่
- APK Signature Scheme v2 เริ่มใช้ลายเซ็นทั้งไฟล์แล้ว ที่ช่วยเพิ่มความเร็วในการยืนยันและรับประกันความสมบูรณ์
- ร้านค้า CA ที่เชื่อถือได้ เพื่อให้แอปควบคุมได้ง่ายขึ้น เข้าถึงการจราจรของข้อมูลในเครือข่ายที่ปลอดภัย ผู้ออกใบรับรองที่ติดตั้งโดยผู้ใช้ และ API ที่ติดตั้งไว้ผ่าน Device Admin API จะไม่ได้รับการเชื่อถือโดยค่าเริ่มต้นอีกต่อไป สำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 24 ขึ้นไป นอกจากนี้ อุปกรณ์ Android ใหม่ทั้งหมดต้อง จัดส่งด้วยร้าน CA ที่เชื่อถือได้รายเดียวกัน
- การกำหนดค่าความปลอดภัยของเครือข่าย กำหนดค่าการรักษาความปลอดภัยของเครือข่ายและ TLS ผ่านไฟล์การกําหนดค่าแบบประกาศ
แอนดรอยด์ 6
Android ทุกเวอร์ชันมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ การเพิ่มประสิทธิภาพด้านความปลอดภัยหลักๆ ที่มีให้ใช้งานใน Android มีดังนี้ 6.0
- สิทธิ์รันไทม์ แอปขอสิทธิ์ที่ แทนการให้สิทธิ์ที่แอป ของเวลาติดตั้ง ผู้ใช้สามารถเปิดและปิดสิทธิ์สำหรับทั้งแอปเวอร์ชัน M และแอปเวอร์ชันก่อน M ได้
- การเปิดเครื่องที่ได้รับการยืนยัน ชุดการตรวจสอบการเข้ารหัสลับของระบบ ซอฟต์แวร์ดำเนินการก่อน เพื่อให้มั่นใจว่าโทรศัพท์ทำงานดีจาก Bootloader จนถึง ระบบปฏิบัติการ
- การรักษาความปลอดภัยแบบแยกฮาร์ดแวร์ เลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ใหม่ที่ใช้โดย Fingerprint API, หน้าจอล็อก, การเข้ารหัสอุปกรณ์ และใบรับรองไคลเอ็นต์เพื่อปกป้องคีย์จากการประนีประนอมเคอร์เนลและ/หรือการโจมตีทางกายภาพในเครื่อง
- ลายนิ้วมือ ตอนนี้คุณปลดล็อกอุปกรณ์ได้ด้วยการแตะเพียงครั้งเดียว นอกจากนี้ นักพัฒนาแอปยังสามารถ ใช้ประโยชน์จาก API ใหม่ในการใช้ลายนิ้วมือเพื่อล็อกและปลดล็อกคีย์การเข้ารหัส
- การใช้การ์ด SD คุณใช้สื่อแบบถอดออกได้กับอุปกรณ์และขยายพื้นที่เก็บข้อมูลที่มีอยู่สำหรับข้อมูลในเครื่องของแอป รูปภาพ วิดีโอ ฯลฯ ได้ แต่ข้อมูลดังกล่าวจะยังคงได้รับการปกป้องด้วยการเข้ารหัสระดับบล็อก
- การจราจรของข้อความที่ชัดเจน นักพัฒนาแอปสามารถใช้ StrictMode แบบใหม่ได้ เพื่อให้แน่ใจว่าแอปของพวกเขาจะไม่ใช้ ข้อความที่โอนหรือจัดเก็บได้โดยไม่ต้องเข้ารหัส
- การปิดช่องโหว่ของระบบ การปิดช่องโหว่ของระบบผ่านทางนโยบาย บังคับใช้โดย SELinux ซึ่งจะแยกผู้ใช้ออกจากกันได้ดียิ่งขึ้น กรอง IOCTL ลดภัยคุกคามจากบริการที่เปิดเผย เพิ่มความเข้มงวดของโดเมน SELinux และจำกัดการเข้าถึง /proc อย่างมาก
- การควบคุมการเข้าถึงผ่าน USB: ผู้ใช้ต้องยืนยันเพื่ออนุญาตให้ใช้ USB การเข้าถึงไฟล์ พื้นที่เก็บข้อมูล หรืออื่นๆ ในโทรศัพท์ ขณะนี้ค่าเริ่มต้นจะเป็นเรียกเก็บเงินเท่านั้นเมื่อมีสิทธิ์เข้าถึง ลงในพื้นที่เก็บข้อมูลที่ต้องมีการอนุมัติที่ชัดเจนจากผู้ใช้
แอนดรอยด์ 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 Open โปรเจ็กต์ต้นทาง เพื่อปรับปรุงการรักษาความปลอดภัย อุปกรณ์บางรุ่นที่ใช้เวอร์ชันก่อนหน้า ของ Android อาจรวมถึงการแก้ไขเหล่านี้
Android มีโมเดลการรักษาความปลอดภัยหลายชั้นตามที่อธิบายไว้ใน Android ภาพรวมด้านความปลอดภัย การอัปเดต Android แต่ละครั้งมีการปรับปรุงด้านความปลอดภัยหลายสิบรายการเพื่อปกป้องผู้ใช้ ตัวอย่างการรักษาความปลอดภัยมีดังนี้ การเพิ่มประสิทธิภาพที่เปิดตัวใน Android 4.2:
- การยืนยันแอป: ผู้ใช้สามารถเลือกเปิดใช้ "ยืนยันแอป" และขอให้ผู้ยืนยันแอปตรวจสอบแอปก่อนการติดตั้ง การยืนยันแอปสามารถแจ้งเตือนผู้ใช้หากพวกเขาพยายามติดตั้งแอปที่อาจ เป็นอันตราย หากแอปแย่เป็นพิเศษ แอปอาจบล็อกการติดตั้งได้
- ควบคุม SMS แบบพรีเมียมได้มากขึ้น: Android จะแสดงการแจ้งเตือนถ้า แอปพยายามส่ง SMS ไปยังรหัสสั้นๆ ที่ใช้บริการพรีเมียม ซึ่งอาจมีการเรียกเก็บเงินเพิ่มเติม ผู้ใช้เลือกได้ว่าจะอนุญาต เพื่อส่งข้อความหรือบล็อกข้อความดังกล่าว
- VPN แบบเปิดตลอดเวลา: คุณกำหนดค่า VPN ไม่ให้แอปเข้าถึงเครือข่ายได้จนกว่าจะสร้างการเชื่อมต่อ VPN ซึ่งจะช่วยป้องกันไม่ให้แอปส่งข้อมูลผ่านเครือข่ายอื่น
- การปักหมุดใบรับรอง: ขณะนี้ไลบรารีหลักของ Android รองรับแล้ว การปักหมุดใบรับรอง โดเมนที่ปักหมุดไว้จะได้รับการตรวจสอบใบรับรอง หากใบรับรองไม่ได้เชื่อมโยงกับชุดใบรับรองที่คาดไว้ ซึ่งจะช่วยป้องกันผู้ออกใบรับรองที่อาจถูกบุกรุก
- ปรับปรุงการแสดงสิทธิ์ใน Android: มีการจัดระเบียบสิทธิ์ต่างๆ ให้เป็นกลุ่มที่ผู้ใช้เข้าใจได้ง่ายขึ้น ระหว่างการตรวจสอบ ผู้ใช้คลิกสิทธิ์เพื่อดูรายละเอียดเพิ่มเติม ข้อมูลเกี่ยวกับสิทธิ์ดังกล่าว
- การเพิ่มความแข็งแกร่งของ installd: เดมอน
installd
จะไม่ทํางานในฐานะผู้ใช้รูท ซึ่งจะลดพื้นที่การโจมตีที่อาจเกิดขึ้นสําหรับการเพิ่มระดับสิทธิ์รูท - init Script Hardening: ขณะนี้สคริปต์ 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 eXe Workspace (NX) ที่อิงตามฮาร์ดแวร์เพื่อป้องกันการรันโค้ดบนสแต็กและฮีป
- mmap_min_addr ของ Linux เพื่อลดสิทธิ์การยกเลิกตัวชี้ที่เป็นค่าว่าง การส่งต่อ (ปรับปรุงเพิ่มเติมใน 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 (หลีกเลี่ยงการเปิดเผยที่อยู่เคอร์เนล)