ช่องโหว่สองประการใน GRUB2 ที่อนุญาตให้คุณเลี่ยงผ่านการป้องกัน UEFI Secure Boot

มีการเปิดเผยข้อมูลเกี่ยวกับช่องโหว่สองรายการใน GRUB2 bootloader ซึ่งอาจนำไปสู่การเรียกใช้โค้ดเมื่อใช้แบบอักษรที่ออกแบบมาเป็นพิเศษและประมวลผลลำดับ Unicode บางอย่าง สามารถใช้ช่องโหว่เพื่อหลีกเลี่ยงกลไกการบูตที่ผ่านการตรวจสอบ UEFI Secure Boot

ช่องโหว่ที่ระบุ:

  • CVE-2022-2601 - บัฟเฟอร์ล้นในฟังก์ชัน grub_font_construct_glyph() เมื่อประมวลผลแบบอักษรที่ออกแบบมาเป็นพิเศษในรูปแบบ pf2 ซึ่งเกิดขึ้นเนื่องจากการคำนวณพารามิเตอร์ max_glyph_size ที่ไม่ถูกต้องและการจัดสรรพื้นที่หน่วยความจำที่เห็นได้ชัดว่าเล็กกว่าที่จำเป็น รองรับร่ายมนตร์
  • CVE-2022-3775 การเขียนนอกขอบเขตเกิดขึ้นเมื่อเรนเดอร์ลำดับ Unicode บางส่วนในฟอนต์ที่มีสไตล์เป็นพิเศษ ปัญหาอยู่ในโค้ดประมวลผลฟอนต์ และเกิดจากการขาดการตรวจสอบที่เหมาะสมเพื่อให้แน่ใจว่าความกว้างและความสูงของสัญลักษณ์ตรงกับขนาดของบิตแมปที่มีอยู่ ผู้โจมตีสามารถสร้างอินพุตในลักษณะที่ทำให้ส่วนท้ายของข้อมูลถูกเขียนไปที่ด้านนอกของบัฟเฟอร์ที่จัดสรร มีข้อสังเกตว่าแม้จะมีความซับซ้อนในการหาประโยชน์จากช่องโหว่ แต่ก็ไม่ได้ยกเว้นการนำปัญหามาสู่การเรียกใช้โค้ด

การแก้ไขได้รับการเผยแพร่เป็นแพตช์แล้ว สถานะของการกำจัดช่องโหว่ในการแจกแจงสามารถประเมินได้ในหน้าเหล่านี้: Ubuntu, SUSE, RHEL, Fedora, Debian เพื่อแก้ไขปัญหาใน GRUB2 การอัพเดตแพ็คเกจเพียงอย่างเดียวนั้นไม่เพียงพอ คุณจะต้องสร้างลายเซ็นดิจิทัลภายในใหม่และตัวติดตั้งอัพเดต, bootloaders, แพ็คเกจเคอร์เนล, เฟิร์มแวร์ fwupd และเลเยอร์ shim

ลีนุกซ์รุ่นส่วนใหญ่ใช้ชั้นชิมขนาดเล็กที่เซ็นชื่อแบบดิจิทัลโดย Microsoft สำหรับการตรวจสอบการบูทในโหมด UEFI Secure Boot เลเยอร์นี้จะตรวจสอบ GRUB2 ด้วยใบรับรองของตัวเอง ซึ่งช่วยให้นักพัฒนาระบบแจกจ่ายไม่จำเป็นต้องมีเคอร์เนลและการอัปเดต GRUB ทุกตัวที่ได้รับการรับรองโดย Microsoft ช่องโหว่ใน GRUB2 ช่วยให้คุณสามารถดำเนินการโค้ดของคุณได้ในขั้นตอนหลังจากการตรวจสอบชิมสำเร็จ แต่ก่อนที่จะโหลดระบบปฏิบัติการ ให้เข้าสู่ห่วงโซ่แห่งความไว้วางใจเมื่อโหมด Secure Boot ทำงานและได้รับการควบคุมเต็มรูปแบบเหนือกระบวนการบูตเพิ่มเติม รวมถึง โหลด OS อื่น ปรับเปลี่ยนระบบส่วนประกอบของระบบปฏิบัติการ และบายพาสการป้องกัน Lockdown

หากต้องการป้องกันช่องโหว่โดยไม่เพิกถอนลายเซ็นดิจิทัล การแจกจ่ายสามารถใช้กลไก SBAT (UEFI Secure Boot Advanced Targeting) ซึ่งได้รับการสนับสนุนสำหรับ GRUB2, shim และ fwupd ใน Linux เวอร์ชันยอดนิยมส่วนใหญ่ SBAT ได้รับการพัฒนาร่วมกับ Microsoft และเกี่ยวข้องกับการเพิ่มข้อมูลเมตาเพิ่มเติมให้กับไฟล์ปฏิบัติการของส่วนประกอบ UEFI ซึ่งรวมถึงข้อมูลเกี่ยวกับผู้ผลิต ผลิตภัณฑ์ ส่วนประกอบ และเวอร์ชัน ข้อมูลเมตาที่ระบุได้รับการรับรองด้วยลายเซ็นดิจิทัลและสามารถรวมแยกต่างหากในรายการส่วนประกอบที่อนุญาตหรือต้องห้ามสำหรับ UEFI Secure Boot

SBAT ช่วยให้คุณสามารถบล็อกการใช้ลายเซ็นดิจิทัลสำหรับหมายเลขเวอร์ชันส่วนประกอบแต่ละรายการได้โดยไม่ต้องเพิกถอนคีย์สำหรับ Secure Boot การบล็อกช่องโหว่ผ่าน SBAT ไม่จำเป็นต้องใช้รายการเพิกถอนใบรับรอง UEFI (dbx) แต่ดำเนินการในระดับการแทนที่คีย์ภายในเพื่อสร้างลายเซ็นและอัปเดต GRUB2, shim และสิ่งประดิษฐ์การบูตอื่น ๆ ที่จัดทำโดยการกระจาย ก่อนที่จะมีการเปิดตัว SBAT การอัปเดตรายการเพิกถอนใบรับรอง (dbx, UEFI Revocation List) ถือเป็นข้อกำหนดเบื้องต้นสำหรับการบล็อกช่องโหว่โดยสมบูรณ์ เนื่องจากผู้โจมตีไม่ว่าระบบปฏิบัติการที่ใช้จะเป็นอย่างไรก็ตาม สามารถใช้สื่อที่สามารถบู๊ตได้กับ GRUB2 เวอร์ชันเก่าที่มีช่องโหว่ ได้รับการรับรองโดยลายเซ็นดิจิทัล เพื่อประนีประนอม UEFI Secure Boot

ที่มา: opennet.ru

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