GWP-ASan และ KFENCE เป็นเครื่องมือตรวจหาหน่วยความจำแบบน่าจะเป็นสำหรับพื้นที่ผู้ใช้และเคอร์เนลตามลำดับ เมื่อเปิดใช้ จะมีการกันพื้นที่หน่วยความจําจํานวนเล็กน้อยด้วยหน้าหน่วยความจําเพิ่มเติมที่อยู่รอบๆ หน่วยความจําที่กําหนด ซึ่งช่วยให้ตรวจหาบัฟเฟอร์ที่ล้นและการนําไปใช้หลังจากมีการลบออกได้โดยมีค่าใช้จ่ายด้านประสิทธิภาพเพียงเล็กน้อย แม้จะมีอัตราตัวอย่างขนาดเล็กสำหรับการจัดสรรที่มีการป้องกัน แต่เมื่อนำไปใช้งานในวงกว้าง ก็จะตรวจหาข้อบกพร่องด้านความปลอดภัยของหน่วยความจำได้อย่างมีประสิทธิภาพ นับตั้งแต่เปิดตัว เครื่องมือเหล่านี้ได้ช่วยระบุข้อบกพร่องของแพลตฟอร์มจำนวนมาก และพิสูจน์แล้วว่าเป็นเครื่องมือที่มีประโยชน์ในการปรับปรุงความเสถียรและความปลอดภัย เราขอแนะนำให้ผู้ขายเปิดใช้ฟีเจอร์ดังกล่าวและตรวจสอบข้อบกพร่องที่ตรวจพบในอุปกรณ์ของผู้ใช้ปลายทางอย่างใกล้ชิด
นักพัฒนาแอปควรตรวจสอบการขัดข้องโดยดูที่ /data/tombstones
, logcat
หรือตรวจสอบไปป์ไลน์ของผู้ให้บริการ DropboxManager
เพื่อหาข้อบกพร่องของผู้ใช้ปลายทาง
ดูข้อมูลเพิ่มเติมได้ในเอกสารเกี่ยวกับการแก้ไขข้อบกพร่องของโค้ดที่มาพร้อมเครื่อง Android
การแก้ไขข้อบกพร่องโค้ดแพลตฟอร์ม Android เนทีฟGWP-ASan สำหรับตรวจหาข้อบกพร่องด้านความปลอดภัยของหน่วยความจำใน Userspace
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