GWP-ASan และ KFENCE

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

GWP-ASan

KFENCE สำหรับตรวจหาข้อบกพร่องด้านความปลอดภัยของหน่วยความจำเคอร์เนล

Android 12 ได้เปิดตัว KFENCE สำหรับการจองพื้นที่เก็บข้อมูลของเคอร์เนล เมื่อ KFENCE ตรวจพบข้อบกพร่อง ระบบจะบันทึกรายงานข้อขัดข้องโดยขึ้นต้นด้วย BUG: KFENCE, ปิดใช้หน้าป้องกันและดำเนินการต่อ ซึ่งจะเปิดใช้กลไกการตรวจหาข้อบกพร่องเคอร์เนลที่ส่งผลกระทบต่อประสบการณ์ของผู้ใช้น้อยที่สุด

ดูข้อมูลเพิ่มเติมเกี่ยวกับ KFENCE ได้ในเอกสารประกอบที่ https://www.kernel.org