ธีโอ เดอ ราดท์
จากการเริ่มต้นทำงานกับ W^X เป็นที่ชัดเจนว่านี่เป็นเส้นทางที่ยาวนาน เนื่องจากมีแอปพลิเคชันจำนวนมากที่ใช้ JIT การใช้งาน JIT สามารถแบ่งออกได้เป็น XNUMX ประเภท:
- สลับหน่วยความจำระหว่างสถานะ W และ X โดยยอมรับ "ต้นทุน" ของการเรียกของระบบ
ปกป้อง . - การสร้างนามแฝงระหว่างคู่ของการแมป W และ X ของหน่วยความจำเดียวกัน
- ตัวเลือกที่ “สกปรก” ที่สุดต้องใช้โมเดลหน่วยความจำ W|X ที่ช่วยให้สามารถบันทึกและดำเนินการได้พร้อมกัน
ในปัจจุบัน มีโปรแกรมที่ใช้ตัวเลือกที่สามน้อยลงอย่างเห็นได้ชัด และยังมีอีกมากที่ใช้ตัวเลือกที่หนึ่งและสอง อย่างไรก็ตาม เนื่องจากจำเป็นต้องรันโปรแกรมด้วย W|X JIT (ส่วนใหญ่เป็น Chromium และ Iridum) จึงเพิ่มตัวเลือกการเมานต์ระบบไฟล์ "wxallowed" ซึ่งช่วยให้สามารถใช้หน่วยความจำพร้อมกันสำหรับทั้งการเขียนและการดำเนินการ ในกรณีที่ ELF ที่ปฏิบัติการได้ ไฟล์ถูกทำเครื่องหมายด้วยเครื่องหมาย "wxneeded" และแอปพลิเคชันเองก็ได้รับการปกป้องเพิ่มเติมโดยใช้กลไก
เพื่อให้การหาประโยชน์จากช่องโหว่ในแอปพลิเคชันดังกล่าวซับซ้อนยิ่งขึ้น จึงมีการเสนอกลไกเพิ่มเติม
กระบวนการ Chrome/อิริเดียมได้รับการปกป้องอย่างน่าเชื่อถืออยู่แล้วโดยใช้คำมั่นสัญญาและเปิดเผย แต่การลบความสามารถในการใช้งานออก เช่น การเรียกระบบ write(2) มีข้อได้เปรียบอย่างเห็นได้ชัด เนื่องจากจะสร้างปัญหาเพิ่มเติมให้กับผู้โจมตี อย่างไรก็ตาม ปัญหาอาจเกิดขึ้นได้หากการใช้งาน JIT ใช้การเรียกระบบดั้งเดิมจากหน่วยความจำ W|X อย่างไรก็ตาม มีเหตุผลที่หวังว่าจะไม่เป็นเช่นนั้น เนื่องจาก ABI มีการเปลี่ยนแปลงหลายครั้ง แต่ยังไม่มีใครรายงานปัญหาเลย
การเปลี่ยนแปลงนี้มีอยู่แล้วในภาพรวมปกติของสาขา OpenBSD-Current ทุกคนที่สนใจได้รับเชิญให้ทดสอบ
ข่าวที่เกี่ยวข้องกับการปรากฏตัวของโหมดใน Chrome/Iridium สมควรได้รับความคิดเห็นแยกต่างหากจาก Theo
ที่มา: opennet.ru