GWP-ASan และ KFENCE เป็นเครื่องมือตรวจจับหน่วยความจำความน่าจะเป็นสำหรับพื้นที่ผู้ใช้และเคอร์เนลตามลำดับ เมื่อเปิดใช้งาน การจัดสรรจำนวนเล็กน้อยจะได้รับการปกป้องด้วยเพจหน่วยความจำเพิ่มเติมที่ล้อมรอบหน่วยความจำที่จัดสรร ซึ่งช่วยให้สามารถตรวจจับบัฟเฟอร์ล้นและการใช้งานภายหลังที่ว่างโดยมีค่าใช้จ่ายด้านประสิทธิภาพเล็กน้อย แม้ว่าจะมีอัตราการสุ่มตัวอย่างเล็กน้อยสำหรับการจัดสรรที่มีการป้องกัน แต่เมื่อใช้งานในวงกว้าง ก็สามารถตรวจจับจุดบกพร่องด้านความปลอดภัยของหน่วยความจำได้อย่างมีประสิทธิภาพ นับตั้งแต่เปิดตัว เครื่องมือเหล่านี้ได้ช่วยระบุจุดบกพร่องของแพลตฟอร์มจำนวนมาก และได้พิสูจน์แล้วว่าเป็นเครื่องมือที่มีค่าสำหรับการปรับปรุงเสถียรภาพและความปลอดภัย เราสนับสนุนให้ผู้ขายเปิดใช้งานและติดตามข้อบกพร่องที่ตรวจพบบนอุปกรณ์ของผู้ใช้ปลายทางอย่างใกล้ชิด
นักพัฒนาควรตรวจสอบการมีอยู่ของข้อขัดข้องโดยการตรวจสอบ /data/tombstones
logcat
หรือโดยการตรวจสอบไปป์ไลน์ DropboxManager
ของผู้จำหน่ายเพื่อหาจุดบกพร่องของผู้ใช้
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารเกี่ยวกับการดีบักโค้ดเนทีฟของ Android
การดีบักโค้ดแพลตฟอร์ม Android ดั้งเดิมGWP-ASan สำหรับตรวจจับข้อบกพร่องด้านความปลอดภัยของหน่วยความจำผู้ใช้
GWP-ASan เปิดตัวใน Android 11 สำหรับการจัดสรรฮีปพื้นที่ผู้ใช้ เมื่อ GWP-ASan ตรวจพบข้อบกพร่อง ระบบจะบันทึกรายงานข้อขัดข้องด้วย Cause: [GWP-ASan]:
และยุติกระบวนการ รายงานข้อบกพร่องประกอบด้วยข้อมูลการจัดสรรและการจัดสรรเพิ่มเติมที่ช่วยให้ระบุสาเหตุที่แท้จริงได้ง่ายขึ้น
GWP-ASan จะเปิดใช้งานแบบสุ่มเมื่อเริ่มต้นระบบสำหรับ 1% ของกระบวนการหรือแอปของระบบ และสำหรับแอปพลิเคชันที่ตั้งค่า android:gwpAsanMode
ในไฟล์ AndroidManifest.xml
KFENCE สำหรับตรวจจับข้อบกพร่องด้านความปลอดภัยของหน่วยความจำเคอร์เนล
Android 12 เปิดตัว KFENCE สำหรับการจัดสรรฮีปเคอร์เนล เมื่อ KFENCE ตรวจพบจุดบกพร่อง ระบบจะบันทึกรายงานข้อขัดข้องที่ขึ้นต้นด้วย BUG: KFENCE,
ปิดใช้งานหน้าป้องกัน และดำเนินการต่อไป ซึ่งจะทำให้กลไกการตรวจจับจุดบกพร่องของเคอร์เนลมีผลกระทบต่อประสบการณ์ผู้ใช้น้อยที่สุด
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ KFENCE โปรดดูเอกสารประกอบที่ https://www.kernel.org