การเปลี่ยนแปลง OpenBSD เพื่อปกป้องหน่วยความจำกระบวนการเพิ่มเติม

Theo de Raadt ได้เพิ่มชุดแพตช์ลงในโค้ดเบส OpenBSD เพื่อปกป้องหน่วยความจำกระบวนการพื้นที่ผู้ใช้เพิ่มเติม นักพัฒนาได้รับการเสนอการเรียกระบบใหม่และฟังก์ชันไลบรารีที่เปลี่ยนรูปแบบได้ที่เกี่ยวข้องในชื่อเดียวกัน ซึ่งช่วยให้แก้ไขสิทธิ์การเข้าถึงเมื่อสะท้อนถึงหน่วยความจำ (การแมปหน่วยความจำ) หลังจากแก้ไขแล้ว สิทธิ์ที่ตั้งไว้สำหรับพื้นที่หน่วยความจำ เช่น ห้ามเขียนและดำเนินการ ไม่สามารถเปลี่ยนแปลงได้ในภายหลังผ่านการเรียกฟังก์ชัน mmap (), mprotect () และ munmap () ในภายหลัง ซึ่งเมื่อพยายามเปลี่ยนแปลง จะสร้างข้อผิดพลาด EPERM

มีการเสนอส่วน BSS ที่เปลี่ยนแปลงได้ใหม่ (.openbsd.mutable สัญลักษณ์เริ่มต้นบล็อกที่เปลี่ยนแปลงได้) เพื่อควบคุมความสามารถในการเปลี่ยนการอนุญาตหน่วยความจำแบบมิเรอร์สำหรับไฟล์อ็อบเจ็กต์ และมีการเพิ่มแฟล็กใหม่ PF_MUTABLE และ UVM_ET_IMMUTABLE เพิ่มการรองรับตัวเชื่อมโยงเพื่อกำหนดส่วน "openbsd.mutable" และวางไว้ในพื้นที่แยกต่างหากใน BSS ที่จัดแนวกับขอบเขตหน้าหน่วยความจำ ด้วยการเรียกฟังก์ชันที่เปลี่ยนรูปแบบได้ ทำให้สามารถทำเครื่องหมายพื้นที่ที่มิเรอร์ทั้งหมดว่าไม่เปลี่ยนรูปได้ ยกเว้นส่วนที่ทำเครื่องหมายเป็น "openbsd.mutable" ฟีเจอร์ใหม่นี้จะเปิดตัวให้กับผู้ใช้ในรุ่น OpenBSD 7.3

ที่มา: opennet.ru

เพิ่มความคิดเห็น