เคอร์เนล Linux 5.4 ได้รับแพตช์เพื่อจำกัดการเข้าถึงรูทไปยังเคอร์เนลภายใน

Linus Torvalds ได้รับการยอมรับ รวมอยู่ในเคอร์เนล Linux 5.4 รุ่นที่กำลังจะมาถึงคือชุดแพตช์ "ออกโรง" เสนอ เดวิด ฮาวเวลล์ส (หมวกแดง) และแมทธิว การ์เร็ตต์ (Matthew garrettretทำงานที่ Google) เพื่อจำกัดการเข้าถึงเคอร์เนลของผู้ใช้รูท ฟังก์ชันที่เกี่ยวข้องกับการล็อกจะรวมอยู่ในโมดูล LSM ที่โหลดเพิ่มเติม (โมดูลความปลอดภัยของลินุกซ์) ซึ่งวางสิ่งกีดขวางระหว่าง UID 0 และเคอร์เนล เพื่อจำกัดฟังก์ชันการทำงานระดับต่ำบางอย่าง

หากผู้โจมตีประสบความสำเร็จในการเรียกใช้โค้ดด้วยสิทธิ์รูท เขาสามารถรันโค้ดของเขาที่ระดับเคอร์เนลได้ เช่น โดยการแทนที่เคอร์เนลโดยใช้ kexec หรือหน่วยความจำการอ่าน/เขียนผ่าน /dev/kmem ผลที่ตามมาที่ชัดเจนที่สุดของกิจกรรมดังกล่าวอาจเป็นได้ บายพาส UEFI Secure Boot หรือการดึงข้อมูลที่ละเอียดอ่อนที่จัดเก็บในระดับเคอร์เนล

ในขั้นแรก ฟังก์ชันการจำกัดรูตได้รับการพัฒนาในบริบทของการเสริมสร้างการป้องกันการบูตที่ได้รับการตรวจสอบ และการแจกจ่ายได้ใช้แพตช์ของบุคคลที่สามเพื่อบล็อกการเลี่ยงผ่าน UEFI Secure Boot มาระยะหนึ่งแล้ว ในเวลาเดียวกันข้อจำกัดดังกล่าวไม่รวมอยู่ในองค์ประกอบหลักของเคอร์เนลเนื่องจาก ความขัดแย้ง ในการดำเนินการและกลัวว่าระบบที่มีอยู่จะหยุดชะงัก โมดูล “ล็อคดาวน์” ดูดซับแพตช์ที่ใช้ในการแจกจ่ายอยู่แล้ว ซึ่งได้รับการออกแบบใหม่ในรูปแบบของระบบย่อยแยกต่างหากที่ไม่เชื่อมโยงกับ 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” หรือตัวเลือกการประกอบ LOCK_DOWN_KERNEL_FORCE_*ซึ่งสามารถรับเอาค่า "ความซื่อสัตย์" และ "การรักษาความลับ" ได้ ในกรณีแรก คุณลักษณะที่อนุญาตให้ทำการเปลี่ยนแปลงกับเคอร์เนลที่ทำงานอยู่จากพื้นที่ผู้ใช้จะถูกบล็อก และในกรณีที่สอง ฟังก์ชันที่สามารถใช้เพื่อแยกข้อมูลที่ละเอียดอ่อนจากเคอร์เนลก็ถูกปิดใช้งานเช่นกัน

สิ่งสำคัญคือต้องทราบว่าการล็อกดาวน์จะจำกัดเฉพาะการเข้าถึงเคอร์เนลแบบมาตรฐานเท่านั้น แต่ไม่ได้ป้องกันการแก้ไขอันเป็นผลมาจากการใช้ประโยชน์จากช่องโหว่ เพื่อบล็อกการเปลี่ยนแปลงเคอร์เนลที่ทำงานอยู่เมื่อมีการใช้ช่องโหว่โดยโครงการ Openwall กำลังพัฒนา โมดูลแยกต่างหาก แอลเคอาร์จี (ตัวป้องกันรันไทม์เคอร์เนล Linux)

ที่มา: opennet.ru

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