ช่องโหว่ในกลไก MMIO ของโปรเซสเซอร์ Intel

Intel ได้เปิดเผยข้อมูลเกี่ยวกับการรั่วไหลของข้อมูลประเภทใหม่ผ่านโครงสร้างไมโครสถาปัตยกรรมของโปรเซสเซอร์ ซึ่งช่วยให้สามารถกำหนดข้อมูลที่ประมวลผลบนคอร์ CPU อื่นๆ ผ่านการจัดการกลไก MMIO (Memory Mapped Input Output) ตัวอย่างเช่น ช่องโหว่ทำให้สามารถดึงข้อมูลจากกระบวนการอื่นๆ, Intel SGX enclaves หรือเครื่องเสมือนได้ ช่องโหว่นี้เฉพาะกับ CPU ของ Intel เท่านั้น โปรเซสเซอร์จากผู้ผลิตรายอื่นไม่ได้รับผลกระทบจากช่องโหว่ดังกล่าว

ช่องโหว่ดังกล่าวปรากฏในซีพียู Intel ต่างๆ รวมถึงโปรเซสเซอร์ที่ใช้ Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake และ Rocketlake microarchitectures รวมถึง Xeon EP/EX, Scalable และโปรเซสเซอร์เซิร์ฟเวอร์ Atom บางตัว ในการโจมตี จำเป็นต้องมีการเข้าถึง MMIO ซึ่งสามารถได้รับในระบบเสมือนจริงที่ให้ความสามารถในการเข้าถึง MMIO สำหรับระบบแขกที่ควบคุมโดยผู้โจมตี อาจจำเป็นต้องมีการแก้ไขสำหรับระบบที่ใช้ Enclaves แบบแยก Intel SGX (Software Guard Extensions)

การบล็อกช่องโหว่นั้นจำเป็นต้องมีทั้งการอัปเดตไมโครโค้ดและการใช้วิธีการป้องกันซอฟต์แวร์เพิ่มเติมตามการใช้คำสั่ง VERW เพื่อล้างเนื้อหาของบัฟเฟอร์ไมโครสถาปัตยกรรมเมื่อส่งคืนจากเคอร์เนลไปยังพื้นที่ผู้ใช้หรือเมื่อถ่ายโอนการควบคุมไปยังระบบเกสต์ การป้องกันที่คล้ายกันยังใช้เพื่อป้องกันการโจมตีที่ระบุก่อนหน้านี้ของคลาส MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) และ TAA (Transactional Asynchronous Abort)

ในด้านไมโครโค้ด มีการเปลี่ยนแปลงที่จำเป็นในการใช้การป้องกันถูกเสนอในการอัพเดตไมโครโค้ดเดือนพฤษภาคมสำหรับ Intel CPU (IPU 2022.1) ในเคอร์เนล Linux การป้องกันการโจมตีประเภทใหม่รวมอยู่ในรุ่น 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 และ 4.9.319 ในการตรวจสอบความเสี่ยงของระบบต่อช่องโหว่ใน MMIO และประเมินกิจกรรมของกลไกการป้องกันบางอย่าง ไฟล์ “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” ได้ถูกเพิ่มลงในเคอร์เนล Linux เพื่อควบคุมการรวมการป้องกัน พารามิเตอร์การบูตเคอร์เนล "mmio_stale_data" ได้ถูกนำมาใช้ซึ่งสามารถรับค่า "เต็ม" (เปิดใช้งานการล้างบัฟเฟอร์เมื่อย้ายไปยังพื้นที่ผู้ใช้และใน VM), "เต็ม,nosmt" ( เป็น "เต็ม" + ปิดใช้งาน SMT/Hyper- Threads เพิ่มเติม) และ "ปิด" (ปิดใช้งานการป้องกัน) มีการแก้ไขแยกต่างหากสำหรับไฮเปอร์ไวเซอร์ Xen และระบบปฏิบัติการ Qubes

สาระสำคัญของระดับช่องโหว่ที่ระบุคือการดำเนินการบางอย่างนำไปสู่การคัดลอกหรือย้ายข้อมูลที่เหลืออยู่หลังจากการดำเนินการบนคอร์ CPU อื่นจากบัฟเฟอร์ไมโครสถาปัตยกรรมหนึ่งไปยังอีกบัฟเฟอร์หนึ่ง ช่องโหว่ใน MMIO ทำให้ข้อมูลที่เหลือนี้สามารถถ่ายโอนจากบัฟเฟอร์ไมโครสถาปัตยกรรมที่แยกได้ไปยังรีจิสเตอร์ที่มองเห็นได้ของแอปพลิเคชันหรือบัฟเฟอร์ CPU มีการระบุสามวิธีในการดึงข้อมูลที่เหลือผ่าน MMIO:

  • DRPW (การเขียนอุปกรณ์การลงทะเบียนบางส่วน, CVE-2022-21166) เป็นปัญหาเกี่ยวกับการจัดการการเขียนไปยังการลงทะเบียน MMIO บางตัวไม่ถูกต้อง หากขนาดของข้อมูลที่เขียนน้อยกว่าขนาดของรีจิสเตอร์ ข้อมูลที่เหลือจากบัฟเฟอร์การเติมจะถูกคัดลอกไปยังรีจิสเตอร์ด้วย เป็นผลให้กระบวนการที่เริ่มต้นการดำเนินการเขียนที่ไม่สมบูรณ์ไปยังการลงทะเบียน MMIO สามารถรับข้อมูลที่เหลืออยู่ในบัฟเฟอร์สถาปัตยกรรมไมโครจากการดำเนินการที่ดำเนินการบนคอร์ CPU อื่น ๆ
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) คือการรั่วไหลของข้อมูลที่เหลือจากบัฟเฟอร์การเติมที่ผูกกับเคอร์เนล ซึ่งเป็นผลมาจากการเคลื่อนที่จากบัฟเฟอร์ระดับกลางซึ่งมีอยู่ทั่วไปในเมล็ดทั้งหมด
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - ปัญหาคล้ายกับ SBDS แต่แตกต่างกันตรงที่ข้อมูลที่เหลืออาจจบลงในโครงสร้าง CPU ที่แอปพลิเคชันมองเห็นได้ ปัญหา SBDS และ SBDR ปรากฏเฉพาะบนโปรเซสเซอร์สำหรับระบบไคลเอนต์และบนตระกูลเซิร์ฟเวอร์ Intel Xeon E3

ช่องโหว่ในกลไก MMIO ของโปรเซสเซอร์ Intel


ที่มา: opennet.ru

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