การปรับปรุงการรักษาความปลอดภัย

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

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 ยัง รองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผลด้วย
  • เพิ่มการรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล
  • ข้อมูลเบื้องต้นเกี่ยวกับ 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 เปิดใช้ในตัวแปลงรหัสต่อไปนี้

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

หน่วยความจําแบบเรียกใช้ได้อย่างเดียว

โดยค่าเริ่มต้น ส่วนโค้ดที่เรียกใช้งานได้สำหรับไบนารีของระบบ AArch64 จะมีการทำเครื่องหมายเป็น "เรียกใช้ได้อย่างเดียว" (อ่านไม่ได้) เพื่อลดความเสี่ยงจากการโจมตีด้วยโค้ดแบบทันท่วงที โค้ดที่ผสมข้อมูลและโค้ดเข้าด้วยกันและโค้ดที่ตรวจสอบส่วนเหล่านี้โดยเจตนา (โดยไม่แมปกลุ่มหน่วยความจำใหม่เป็น "อ่านได้" ก่อน) จะใช้งานไม่ได้อีกต่อไป แอปที่มี SDK เป้าหมายเป็น Android 10 (API ระดับ 29 ขึ้นไป) จะได้รับผลกระทบหากแอปพยายามอ่านส่วนโค้ดของไลบรารีระบบที่เปิดใช้ execute-only (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 ตัวอย่างข้อบังคับบางส่วน ได้แก่

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 และหมายเลขซีเรียล

หากแอปไม่มีสิทธิ์และคุณพยายามขอข้อมูลเกี่ยวกับตัวระบุที่รีเซ็ตไม่ได้อยู่ดี การตอบสนองของแพลตฟอร์มจะแตกต่างกันไปตามเวอร์ชัน 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.SERIAL API ซึ่งได้รับการปกป้องโดยสิทธิ์ที่ผู้ใช้ควบคุม ปรับปรุงการสุ่มที่อยู่ 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 และคีย์การเข้ารหัสของอุปกรณ์ออกจากอุปกรณ์หรือแสดงต่อแอปพลิเคชันใดๆ
  • แซนด์บ็อกซ์ของ 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 เวอร์ชันเก่าอาจมีการแก้ไขเหล่านี้ด้วยเพื่อปรับปรุงความปลอดภัย

Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.3:

  • Android sandbox reinforced with SELinux. This release strengthens the Android sandbox using the SELinux mandatory access control system (MAC) in the Linux kernel. SELinux reinforcement is invisible to users and developers, and adds robustness to the existing Android security model while maintaining compatibility with existing apps. To ensure continued compatibility this release allows the use of SELinux in a permissive mode. This mode logs any policy violations, but will not break apps or affect system behavior.
  • No setuid or setgid programs. Added support for filesystem capabilities to Android system files and removed all setuid or setgid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • ADB authentication. Starting in Android 4.2.2, connections to ADB are authenticated with an RSA keypair. This prevents unauthorized use of ADB where the attacker has physical access to a device.
  • Restrict Setuid from Android Apps. The /system partition is now mounted nosuid for zygote-spawned processes, preventing Android apps from executing setuid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • Capability bounding. Android zygote and ADB now use prctl(PR_CAPBSET_DROP) to drop unnecessary capabilities prior to executing apps. This prevents Android apps and apps launched from the shell from acquiring privileged capabilities.
  • AndroidKeyStore Provider. Android now has a keystore provider that allows apps to create exclusive use keys. This provides apps with an API to create or store private keys that cannot be used by other apps.
  • KeyChain isBoundKeyAlgorithm. Keychain API now provides a method (isBoundKeyType) that allows apps to confirm that system-wide keys are bound to a hardware root of trust for the device. This provides a place to create or store private keys that can't be exported off the device, even in the event of a root compromise.
  • NO_NEW_PRIVS. Android zygote now uses prctl(PR_SET_NO_NEW_PRIVS) to block addition of new privileges prior to execution app code. This prevents Android apps from performing operations that can elevate privileges through execve. (This requires Linux kernel version 3.5 or greater).
  • FORTIFY_SOURCE enhancements. Enabled FORTIFY_SOURCE on Android x86 and MIPS and fortified strchr(), strrchr(), strlen(), and umask() calls. This can detect potential memory corruption vulnerabilities or unterminated string constants.
  • Relocation protections. Enabled read only relocations (relro) for statically linked executables and removed all text relocations in Android code. This provides defense in depth against potential memory corruption vulnerabilities.
  • Improved EntropyMixer. EntropyMixer now writes entropy at shutdown or reboot, in addition to periodic mixing. This allows retention of all entropy generated while devices are powered on, and is especially useful for devices that are rebooted immediately after provisioning.
  • Security fixes. Android 4.3 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.

Android มีรูปแบบการรักษาความปลอดภัยหลายชั้นตามที่อธิบายไว้ในภาพรวมความปลอดภัยของ 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(避免内核地址泄露)