สรุปย่อ
วิดีโอนี้สรุปเกี่ยวกับคุณสมบัติ Memory Tagging Extension (MTE) ที่ Apple นำมาใช้ใน iPhone รุ่นใหม่ ซึ่งใช้สถาปัตยกรรม ARMv9A โดย MTE เป็นกลไกที่ช่วยตรวจจับและป้องกันการโจมตีที่เกิดจากข้อผิดพลาดในการจัดการหน่วยความจำ เช่น การเข้าถึงหน่วยความจำนอกขอบเขต หรือการใช้หน่วยความจำที่ถูกปล่อยไปแล้ว โดยใช้ฮาร์ดแวร์ในการตรวจสอบแท็กที่ตัวชี้และหน่วยความจำ เพื่อให้การโจมตีทำได้ยากขึ้นอย่างมาก
- MTE ช่วยลดความเสี่ยงจากการโจมตีที่เกิดจากข้อผิดพลาดในการจัดการหน่วยความจำ
- การใช้ฮาร์ดแวร์ช่วยให้การตรวจสอบมีประสิทธิภาพสูง และไม่ส่งผลกระทบต่อประสิทธิภาพของระบบมากนัก
- Apple มองว่า MTE เป็นการอัปเกรดที่สำคัญที่สุดสำหรับความปลอดภัยของหน่วยความจำในระบบปฏิบัติการสำหรับผู้บริโภค
บทนำ
Apple ได้เปิดตัว iPhone รุ่นใหม่ที่มีการเปลี่ยนแปลงด้านความปลอดภัยที่สำคัญคือการใช้ Memory Tagging Extension (MTE) ซึ่งเป็นคุณสมบัติที่อยู่ในสถาปัตยกรรม ARMv9A โดย Apple เรียกว่าการบังคับใช้ความสมบูรณ์ของหน่วยความจำ (Memory Integrity Enforcement) วิดีโอนี้จะสำรวจมาตรการนี้และอธิบายว่ามันทำให้การโจมตีอุปกรณ์ iOS ยากขึ้นได้อย่างไร
ข้อบกพร่องที่ทำให้หน่วยความจำเสียหาย
การโจมตีอุปกรณ์ iOS ส่วนใหญ่อาศัยข้อบกพร่องที่ทำให้หน่วยความจำเสียหาย ซึ่งเกิดจากตรรกะระบบที่ผิดพลาดที่ทำให้ผู้โจมตีสามารถเขียนข้อมูลนอกขอบเขตหน่วยความจำ หรือสร้างความสับสนให้กับวัตถุเพื่อทำลายข้อมูลสำคัญของกระบวนการและควบคุมระบบได้ แม้ว่า Apple จะพยายามแก้ไขข้อบกพร่องเหล่านี้อย่างต่อเนื่อง แต่ก็ไม่สามารถกำจัดออกไปได้อย่างสมบูรณ์ ดังนั้น Apple จึงมุ่งเน้นไปที่การทำให้การใช้ประโยชน์จากข้อบกพร่องเหล่านี้ทำได้ยากที่สุด
การบังคับใช้ความสมบูรณ์ของหน่วยความจำ
Apple ได้นำ Memory Integrity Enforcement (MIE) มาใช้เพื่อตรวจจับการเข้าถึงหน่วยความจำนอกขอบเขตหรือการใช้งานหน่วยความจำที่ถูกปล่อยไปแล้วโดยเร็วที่สุด และทำให้ระบบหยุดทำงานเพื่อป้องกันไม่ให้ผู้โจมตีใช้ประโยชน์จากช่องโหว่นี้ MIE ทำงานคล้ายกับ AddressSanitizer (ASan) ซึ่งเป็นเครื่องมือแก้ไขจุดบกพร่องที่ใช้ในการพัฒนาซอฟต์แวร์ แต่ MIE ใช้ประโยชน์จากคำสั่งฮาร์ดแวร์ใหม่ในสถาปัตยกรรม ARMV9A ทำให้มีประสิทธิภาพสูงกว่า ASan ที่ใช้ซอฟต์แวร์
รายละเอียดทางเทคนิคของ MTE
ฟีเจอร์ MTE ใช้คำสั่งฮาร์ดแวร์ใหม่ที่มีอยู่ในสถาปัตยกรรม ARMV9A ซึ่งใช้งานฟังก์ชันการทำงานของโปรแกรมทำความสะอาดที่อยู่ซอฟต์แวร์ แต่ในลักษณะที่ได้รับการสนับสนุนจากฮาร์ดแวร์ CPU ใหม่เหล่านี้มีวงจรในตัวเพื่อจัดการการตรวจสอบความเรียบร้อย คำสั่ง IRG จะแทรกแท็กสุ่มลงในตัวชี้ และคำสั่ง STG จะเขียนค่าแท็กจากบิตบนสุดของตัวชี้ลงในพื้นที่หน่วยความจำเงาส่วนตัวพิเศษที่สามารถเก็บแท็กได้ต่อเม็ดหน่วยความจำขนาด 16 ไบต์ เมื่อตัวชี้และหน่วยความจำที่สอดคล้องกันได้รับการแท็กแล้ว คำสั่งการเข้าถึงหน่วยความจำที่ดำเนินการในภายหลังจะทริกเกอร์ข้อยกเว้น หากพบว่าแท็กไม่ตรงกัน
การป้องกันการถูกแสวงหาประโยชน์
Apple ได้อัปเดตตรรกะการจัดสรรของตนเพื่อนำคำสั่ง MTE ใหม่เหล่านี้ไปใช้ ดังนั้นทุกครั้งที่มีการจัดสรร ตัวชี้และหน่วยความจำที่จัดสรรจะถูกแท็กทั้งคู่ และเมื่อการจัดสรรได้รับการปลดปล่อย หน่วยความจำจะถูกแท็กใหม่ด้วยค่าใหม่ สำหรับการใช้งานทั่วไปหลังจากแก้ไขจุดบกพร่อง โปรแกรมจะใช้ตัวชี้ที่อ้างอิงถึงหน่วยความจำที่ได้รับการปลดปล่อยแล้วโดยไม่ได้ตั้งใจ แต่ด้วยการเปิดใช้งาน MTE แล้ว สิ่งนี้จะไม่สามารถทำได้อีกต่อไป เนื่องจากการเข้าถึงหน่วยความจำบนตัวชี้ที่ถูกปลดปล่อยจะทำให้ฮาร์ดแวร์ ARM รับรู้ว่าตัวชี้และแท็กหน่วยความจำไม่ตรงกัน และจะเกิดการเรียกใช้ข้อยกเว้น
ข้อควรระวังและข้อสรุป
เนื่องจากแท็กหน่วยความจำมีขนาดเพียงสี่บิต จึงสามารถจัดสรรหน่วยความจำแยกกันโดยใช้แท็กเดียวกันได้ แต่สิ่งนี้ยังคงเป็นการป้องกันการโจมตีที่แข็งแกร่งพอสมควร เนื่องจากความน่าเชื่อถือจะลดลงเหลือ 1 ใน 16 โอกาสที่จะประสบความสำเร็จ Apple เชื่อว่าการบังคับใช้ความสมบูรณ์ของหน่วยความจำถือเป็นการอัปเกรดที่สำคัญที่สุดสำหรับความปลอดภัยของหน่วยความจำในประวัติศาสตร์ของระบบปฏิบัติการสำหรับผู้บริโภค และทีมวิจัยภายในของพวกเขาก็ไม่สามารถสร้างโซ่การโจมตีตัวอย่างใดๆ ขึ้นมาใหม่เพื่อหลีกเลี่ยงการบรรเทาปัญหานี้บน iOS ได้

