เมื่อเร็วๆ นี้ อินเทลได้ประกาศ ข่าวที่ ฉันตรวจพบช่องโหว่ สถาปัตยกรรมจุลภาค (รายการภายใต้ CVE-2023-28746) บนโปรเซสเซอร์ Intel Atom (E-core) รู้จักกันในชื่อ RFDS (Register File Data Sampling) และอันตรายของช่องโหว่นี้อยู่ที่การอนุญาตให้ระบุข้อมูลที่ใช้โดยกระบวนการที่เคยทำงานบนแกน CPU เดียวกันก่อนหน้านี้ได้
RFDS ถือเป็นช่องโหว่ที่ แบ่งปันความคล้ายคลึงกับการโจมตีด้วยการสุ่มตัวอย่างข้อมูล เช่นเดียวกับการสุ่มตัวอย่างข้อมูลทางสถาปัตยกรรมจุลภาค (MDS) มันแตกต่างกันในวิธีการเปิดเผยและข้อมูลที่ถูกเปิดเผย โดยจำกัดตัวเองอยู่เพียงข้อมูลจากบันทึกที่ล้าสมัย
เกี่ยวกับช่องโหว่
การระบุ “RFDS” ดำเนินการโดยวิศวกรของ Intel ในระหว่างการตรวจสอบภายใน แม้ว่าจะไม่มีการให้ข้อมูลโดยละเอียดก็ตาม วิศวกรของ Intel ใช้วิธีการหาผลประโยชน์ ได้ชี้ให้เห็นว่าผู้โจมตีไม่สามารถควบคุมการเลือกกระบวนการโดยเจตนาได้ สำหรับการดึงข้อมูล ซึ่งหมายความว่าการเปิดเผยข้อมูลที่มีอยู่สำหรับการกู้คืนนั้นเป็นแบบสุ่ม อย่างไรก็ตาม การใช้ประโยชน์จาก RFDS โดยผู้ไม่ประสงค์ดีที่สามารถรันโค้ดภายในระบบอาจนำไปสู่การอนุมานค่าข้อมูลลับที่เคยใช้ในบันทึก ซึ่งอาจส่งผลต่อความปลอดภัยและการรักษาความลับของข้อมูล
RFDS ถูกค้นพบว่าเป็นส่วนหนึ่งของงานตรวจสอบภายในที่ครอบคลุมของ Intel ในเรื่องความปลอดภัยทางสถาปัตยกรรมระดับไมโคร เช่นเดียวกับการโจมตีการดำเนินการชั่วคราวในการสุ่มตัวอย่างข้อมูล เช่น การสุ่มตัวอย่างข้อมูลทางสถาปัตยกรรมขนาดเล็ก (MDS) RFDS สามารถอนุญาตให้ผู้กระทำผิดที่สามารถรันโค้ดภายในระบบเพื่ออนุมานค่าข้อมูลลับที่อาจมีอยู่ ได้รับการปกป้องโดยกลไกทางสถาปัตยกรรม RFDS แตกต่างจากช่องโหว่ MDS ทั้งในวิธีการเปิดเผยข้อมูลและข้อมูลที่เปิดเผย (RFDS เปิดเผยเฉพาะข้อมูลบันทึกเก่าเท่านั้น) ทั้ง MDS และ RFDS เพียงอย่างเดียวไม่ให้ผู้ดำเนินการที่เป็นอันตรายสามารถเลือกข้อมูลที่จะอนุมานได้โดยใช้วิธีการเหล่านี้
เป็นที่กล่าวขวัญกันว่า การรั่วไหลเหล่านี้ส่งผลต่อการลงทะเบียนเวกเตอร์ ใช้ในการเข้ารหัส ฟังก์ชันคัดลอกหน่วยความจำ และการประมวลผลสตริง เช่นเดียวกับในฟังก์ชัน memcpy, strcmp และ strlen อีกด้วย การรั่วไหลเกิดขึ้นได้ผ่านรีจิสเตอร์เพื่อจัดเก็บตัวเลขทศนิยม และจำนวนเต็ม แม้ว่าจะมีการอัพเดตบ่อยขึ้นในระหว่างการปฏิบัติงาน แต่ก็ลดโอกาสที่จะเกิดการรั่วไหลผ่านข้อมูลเหล่านั้น ที่สำคัญ ข้อมูลตกค้างไม่ได้คงอยู่ในรีจิสเตอร์โดยตรง แต่สามารถแยกออกจากไฟล์รีจิสเตอร์ได้โดยใช้เทคนิคการโจมตีช่องทางด้านข้าง เช่น การขูดข้อมูลลงในแคช CPU
RFDS มีผลกับโปรเซสเซอร์ Atom เท่านั้น ขึ้นอยู่กับสถาปัตยกรรมไมโคร ทะเลสาบออลเดอร์ ทะเลสาบแร็ปเตอร์ ทรีมอนต์ โกลด์มอนต์ และเกรซมอนต์. โปรเซสเซอร์เหล่านี้ไม่รองรับโหมด HyperThreading ซึ่งจะจำกัดการรั่วไหลของข้อมูลให้เหลือเพียงเธรดการดำเนินการเดียวภายในแกน CPU ปัจจุบัน การเปลี่ยนแปลงเพื่อแก้ไขช่องโหว่นี้จะรวมอยู่ในการอัปเดตไมโครโค้ด microcode-20240312-staging
วิธีการป้องกัน ต่อความเปราะบางนี้ มีความคล้ายคลึงกับที่ใช้ เพื่อป้องกันการโจมตีที่ระบุก่อนหน้านี้ เช่น MDS, เอสอาร์ดีเอส, การโจมตี TAA, DRPW (การเขียนบางส่วนในการลงทะเบียนอุปกรณ์) และ SBDS (การสุ่มตัวอย่างข้อมูลบัฟเฟอร์ที่ใช้ร่วมกัน)
เพื่อป้องกันการรั่วไหลของเคอร์เนลและไฮเปอร์ไวเซอร์ นอกเหนือจากการอัปเดตไมโครโค้ดแล้ว จำเป็นต้องใช้วิธีการป้องกันซอฟต์แวร์ที่เกี่ยวข้องกับการใช้คำสั่ง VERW เพื่อล้างเนื้อหาของบัฟเฟอร์ไมโครสถาปัตยกรรมเมื่อส่งคืนจากเคอร์เนลไปยังพื้นที่ผู้ใช้หรือเมื่อถ่ายโอนการควบคุมไปยังระบบเกสต์ การป้องกันนี้ได้ถูกนำไปใช้ในไฮเปอร์ไวเซอร์ Xen และเคอร์เนล Linux แล้ว
หากต้องการเปิดใช้งานการป้องกันในเคอร์เนล Linux คุณสามารถใช้คำสั่ง “reg_file_data_sampling=on» เมื่อทำการโหลดเคอร์เนล ข้อมูลเกี่ยวกับช่องโหว่และการมีอยู่ของไมโครโค้ดที่จำเป็นสำหรับการป้องกันสามารถประเมินได้ในไฟล์ «/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling"
สุดท้ายนี้ หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณสามารถปรึกษา รายละเอียดตามลิงค์ต่อไปนี้