วิธีการปิดการใช้งานการป้องกัน Lockdown ใน Ubuntu เพื่อเลี่ยงผ่าน UEFI Secure Boot จากระยะไกล

อันเดรย์ โคโนวาลอฟ จาก Google ตีพิมพ์ วิธีปิดการใช้งานการป้องกันจากระยะไกล ออกโรงนำเสนอในแพ็คเกจเคอร์เนล Linux ที่มาพร้อมกับ Ubuntu (แนะนำทางเทคนิคตามทฤษฎี) ต้อง ทำงานร่วมกับเคอร์เนลของ Fedora และการแจกแจงอื่น ๆ ได้ แต่ไม่ได้ทดสอบ)

การล็อกจะจำกัดการเข้าถึงเคอร์เนลของผู้ใช้รูท และบล็อกเส้นทางบายพาส UEFI Secure Boot ตัวอย่างเช่น ในโหมดล็อคดาวน์ เข้าถึง /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, โหมดดีบัก kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (โครงสร้างข้อมูลการ์ด) บางส่วน อินเทอร์เฟซถูกจำกัด การลงทะเบียน ACPI และ MSR ของ CPU, การเรียกไปยัง kexec_file และ kexec_load ถูกบล็อก, ห้ามใช้โหมดสลีป, การใช้ DMA สำหรับอุปกรณ์ PCI ถูกจำกัด, ห้ามนำเข้ารหัส ACPI จากตัวแปร EFI, ห้ามจัดการกับพอร์ต I/O อนุญาต รวมถึงการเปลี่ยนหมายเลขอินเตอร์รัปต์และพอร์ต I/O สำหรับพอร์ตอนุกรม

กลไกการล็อกถูกเพิ่มลงในเคอร์เนลหลักของ Linux เมื่อเร็วๆ นี้ 5.4แต่ในเมล็ดที่ให้มาในการแจกแจงนั้นยังคงถูกนำมาใช้ในรูปแบบของแพทช์หรือเสริมด้วยแพทช์ ความแตกต่างประการหนึ่งระหว่างส่วนเสริมที่ให้มาในชุดการแจกจ่ายและการใช้งานที่สร้างไว้ในเคอร์เนลคือความสามารถในการปิดใช้งานการล็อคที่ให้มาหากคุณมีสิทธิ์เข้าถึงระบบทางกายภาพ

ใน Ubuntu และ Fedora คีย์ผสม Alt+SysRq+X มีไว้เพื่อปิดใช้งานการล็อคดาวน์ เป็นที่เข้าใจกันว่าการรวมกัน Alt+SysRq+X สามารถใช้ได้เฉพาะกับการเข้าถึงอุปกรณ์ทางกายภาพเท่านั้น และในกรณีของการแฮ็กระยะไกลและการเข้าถึงรูท ผู้โจมตีจะไม่สามารถปิดการใช้งานการล็อคดาวน์ได้ และตัวอย่างเช่น โหลด โมดูลที่มีรูทคิทที่ไม่ได้ลงนามแบบดิจิทัลในเคอร์เนล

Andrey Konovalov แสดงให้เห็นว่าวิธีการที่ใช้แป้นพิมพ์เพื่อยืนยันตัวตนของผู้ใช้นั้นไม่ได้ผล วิธีที่ง่ายที่สุดในการปิดการใช้งาน Lockdown คือการปิดระบบโดยทางโปรแกรม การจำลอง กด Alt+SysRq+X ผ่าน /dev/uinput แต่ตัวเลือกนี้ถูกบล็อกในตอนแรก ในเวลาเดียวกัน มีความเป็นไปได้ที่จะระบุวิธีการแทนที่ Alt+SysRq+X เพิ่มเติมอย่างน้อยสองวิธี

วิธีแรกเกี่ยวข้องกับการใช้อินเทอร์เฟซ "sysrq-trigger" - เพื่อจำลองอินเทอร์เฟซ เพียงเปิดใช้งานอินเทอร์เฟซนี้โดยการเขียน "1" ไปที่ /proc/sys/kernel/sysrq จากนั้นเขียน "x" ไปที่ /proc/sysrq-trigger ช่องโหว่ดังกล่าว ถูกกำจัด ในการอัปเดตเคอร์เนล Ubuntu เดือนธันวาคม และใน Fedora 31 เป็นที่น่าสังเกตว่านักพัฒนา ดังในกรณีของ /dev/uinput เริ่มแรก พยายามที่จะ บล็อกวิธีนี้ แต่การบล็อกไม่ทำงานเนื่องจาก ข้อผิดพลาด ในรหัส

วิธีที่สองเกี่ยวข้องกับการจำลองแป้นพิมพ์ผ่าน ยูเอสบี/ไอพี จากนั้นส่งลำดับ Alt+SysRq+X จากแป้นพิมพ์เสมือน เคอร์เนล USB/IP ที่มาพร้อมกับ Ubuntu จะถูกเปิดใช้งานตามค่าเริ่มต้น (CONFIG_USBIP_VHCI_HCD=m และ CONFIG_USBIP_CORE=m) และจัดเตรียมโมดูล usbip_core และ vhci_hcd ที่ลงนามแบบดิจิทัลที่จำเป็นสำหรับการดำเนินการ ผู้โจมตีก็ได้ เพื่อสร้าง อุปกรณ์ USB เสมือน เปิดตัว ตัวจัดการเครือข่ายบนอินเทอร์เฟซแบบย้อนกลับและเชื่อมต่อเป็นอุปกรณ์ USB ระยะไกลโดยใช้ USB/IP เกี่ยวกับวิธีการที่ระบุ รายงาน สำหรับนักพัฒนา Ubuntu แต่ยังไม่มีการแก้ไข

ที่มา: opennet.ru

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