ช่องโหว่ L1TF กระทบระบบ Hypervisor ใครใช้รุ่นเก่าอาจจะต้องปิด Hyperthread

2018-08-15

อินเทลเผยแพร่ช่องโหว่ L1 Terminal Fault ที่เป็นชุดช่องโหว่ 3 รายการ เปิดทางให้แฮกเกอร์สามารถอ่านข้อมูลที่ไม่สามารถอ่านได้ตามปกติ โดยอาศัยคุณสมบัติ speculative execution หรือการรันคำสั่งแบบคาดเดาล่วงหน้าของซีพียู แบบเดียวกับ Spectre หรือ Meltdown

ช่องโหว่ L1TF คิดลึกกว่า Spectre/Meltdown ลงไปอีกขั้นด้วยการอาศัยกลไก page table ที่แปลงค่าตำแหน่งหน่วยความจำ ให้กลายเป็นค่า address จริงของฮาร์ดแวร์ โดยหากหน้า page นั้นๆ ไม่มีอยู่ในตัวซอฟต์แวร์ก็จะได้รับ exception เป็น page fault กลับขึ้นมา แต่ในความเป็นจริงซีพียูกลับอ่านค่าหน่วยความจำ ณ ตำแหน่งนั้นขึ้นมาล่วงหน้าแแล้ว เมื่อใช้เทคนิค FLUSH+RELOAD แบบเดียวกับ Meltdown ก็สามารถรู้ค่าของหน่วยความจำเป้าหมายได้

ช่องโหว่นี้มี 3 รูปแบบหลัก ได้แก่

  • เจาะทะลุการป้องกันของ SGX (CVE-2018-3615) คะแนน CVSS 7.9 สามารถแก้ไขได้ด้วยการอัพเดต microcode ในซีพียู
  • เจาะทะลุระบบปฎิบัติการและ system management mode (CVE-2018-3620) คะแนน CVSS 7.1 และสามารถแก้ไขได้ด้วยการอัพเดต microcode
  • เจาะทะลุระบบ hypervisor เพื่อเข้าไปอ่านค่าหน่วยความจำของเครื่องเสมือนอื่นบนคอร์ซีพียูเดียวกัน (CVE-2018-3646) คะแนน CVSS 7.1 ลดความเสี่ยงด้วยการอัพเดต microcode และควรเปิดใช้ฟีเจอร์ safe scheduling เพื่อให้แน่ใจว่าเครื่องเสมือนเดียวกันจะอยู่บนคอร์เดียวกันเสมอ ไม่ได้ใช้แคช L1 ปะปนกับใคร

ในกรณีของ Hyper-V ฟีเจอร์ป้องกันการใช้คอร์ปะปนกัน เรียกว่า core scheduler ปิดการทำงานเป็นค่าเริ่มต้น และรองรับเฉพาะ Windows Server 2016 ขึ้นไป ในกรณีที่ใช้ระบบ hypervisor ที่ไม่รองรับ ทางออกที่เหลือคือการปิด hyperthread ทิ้ง เพื่อให้ใช้ 1 คอร์ต่อ 1 เธรดเท่านั้น ซึ่งจะกระทบประสิทธิภาพเครื่องค่อนข้างมาก

ระหว่างนี้คงต้องรออัพเดตและสำรวจว่าระบบ hypervisor ใดรองรับการแก้ปัญหาแบบใดและเปิดใช้งานกันอย่างไรบ้าง

ที่มา – Intel, Oracle, Microsoft Technet

Topics: