Linus Torvalds
หากผู้โจมตีประสบความสำเร็จในการเรียกใช้โค้ดด้วยสิทธิ์รูท เขาสามารถรันโค้ดของเขาที่ระดับเคอร์เนลได้ เช่น โดยการแทนที่เคอร์เนลโดยใช้ kexec หรือหน่วยความจำการอ่าน/เขียนผ่าน /dev/kmem ผลที่ตามมาที่ชัดเจนที่สุดของกิจกรรมดังกล่าวอาจเป็นได้
ในขั้นแรก ฟังก์ชันการจำกัดรูตได้รับการพัฒนาในบริบทของการเสริมสร้างการป้องกันการบูตที่ได้รับการตรวจสอบ และการแจกจ่ายได้ใช้แพตช์ของบุคคลที่สามเพื่อบล็อกการเลี่ยงผ่าน UEFI Secure Boot มาระยะหนึ่งแล้ว ในเวลาเดียวกันข้อจำกัดดังกล่าวไม่รวมอยู่ในองค์ประกอบหลักของเคอร์เนลเนื่องจาก
โหมด Lockdown จำกัดการเข้าถึง /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, โหมดดีบัก kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (โครงสร้างข้อมูลการ์ด), อินเทอร์เฟซ ACPI บางตัว และ CPU การลงทะเบียน MSR, การเรียก kexec_file และ kexec_load ถูกบล็อก, ห้ามใช้โหมดสลีป, การใช้ DMA สำหรับอุปกรณ์ PCI ถูกจำกัด, ห้ามนำเข้ารหัส ACPI จากตัวแปร EFI
ไม่อนุญาตให้จัดการกับพอร์ต I/O รวมถึงการเปลี่ยนหมายเลขอินเตอร์รัปต์และพอร์ต I/O สำหรับพอร์ตอนุกรม
ตามค่าเริ่มต้น โมดูลการล็อคจะไม่ทำงาน โมดูลจะถูกสร้างขึ้นเมื่อมีการระบุตัวเลือก SECURITY_LOCKDOWN_LSM ใน kconfig และเปิดใช้งานผ่านพารามิเตอร์เคอร์เนล “lockdown=” ไฟล์ควบคุม “/sys/kernel/security/lockdown” หรือตัวเลือกการประกอบ
สิ่งสำคัญคือต้องทราบว่าการล็อกดาวน์จะจำกัดเฉพาะการเข้าถึงเคอร์เนลแบบมาตรฐานเท่านั้น แต่ไม่ได้ป้องกันการแก้ไขอันเป็นผลมาจากการใช้ประโยชน์จากช่องโหว่ เพื่อบล็อกการเปลี่ยนแปลงเคอร์เนลที่ทำงานอยู่เมื่อมีการใช้ช่องโหว่โดยโครงการ Openwall
ที่มา: opennet.ru