1 คะแนน โดย GN⁺ 2025-05-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • พบช่องโหว่ความปลอดภัยใหม่บน Intel CPU ชื่อ Branch Privilege Injection อันเกิดจาก race condition ของ branch predictor
  • การโจมตีนี้เกิดขึ้นได้จาก การอัปเดตแบบ asynchronous และการซิงโครไนซ์ที่ไม่เพียงพอระหว่างโดเมนความปลอดภัย
  • มาตรการบรรเทาระดับฮาร์ดแวร์เดิมอย่าง eIBRS และ IBPB ใช้งานไม่ได้เมื่อเกิด race condition
  • Intel บรรเทาช่องโหว่นี้ด้วย microcode update ซึ่งมีผลให้ประสิทธิภาพลดลง
  • ช่องโหว่นี้ส่งผลกระทบต่อ Intel CPU ทุกตัวตั้งแต่ Gen 9 เป็นต้นไป และเกิดขึ้นได้ไม่ว่าระบบปฏิบัติการใด

ภาพรวมการโจมตี Branch Privilege Injection

  • Branch Privilege Injection เป็นช่องโหว่ความปลอดภัยที่นำการโจมตีแบบ branch target injection ตระกูล Spectre-BTI กลับมาใช้อีกครั้งด้วยวิธีใหม่
  • แม้การป้องกัน Spectre ระดับฮาร์ดแวร์บน Intel CPU จะมีประสิทธิภาพมานาน 6 ปี แต่งานวิจัยครั้งนี้พิสูจน์แล้วว่าสามารถหลบเลี่ยงได้ผ่าน race condition
  • ตัวทำนายสาขาทำงาน แบบ asynchronous กับ instruction stream ทำให้ในบางสถานการณ์เกิดการอัปเดตที่ล่าช้าออกไปหลายสิบถึงหลายร้อย cycle
  • หากมีการสลับสิทธิ์ระหว่างที่การอัปเดตของตัวทำนายสาขายังดำเนินอยู่ เช่น user-kernel, guest-hypervisor หรือมีการทำงานของ IBPB การอัปเดตนั้นอาจถูกผูกเข้ากับโหมดสิทธิ์ใหม่อย่างผิดพลาด
  • งานวิจัยเรียกสิ่งนี้ว่า Branch Predictor Race Condition ซึ่งทำให้สามารถรั่วไหลข้อมูลหน่วยความจำที่มีความอ่อนไหวได้

การสาธิตการโจมตีและผลกระทบ

  • ด้วยเทคนิคการโจมตีนี้ สามารถรั่วไหลหน่วยความจำตามต้องการบน Ubuntu 24.04 ที่ติดตั้งแพตช์ล่าสุดและใช้มาตรการบรรเทาเริ่มต้น ได้ที่ความเร็ว 5.6KiB/s
  • มีวิดีโอสาธิตความสำเร็จของการโจมตีบน Intel Raptor Lake (Gen 13)

มาตรการบรรเทาที่ได้รับผลกระทบ

  • eIBRS: กลไกความปลอดภัยที่นำมาใช้ใน Intel CPU ตั้งแต่ Gen 9 (Coffee Lake Refresh) เพื่อแยกการทำนาย indirect branch ตามโดเมนความปลอดภัย
  • IBPB: เนื่องจาก eIBRS ป้องกันได้เฉพาะการโจมตีระหว่างโดเมนความปลอดภัยระดับฮาร์ดแวร์ IBPB จึงมีหน้าที่ทำให้การทำนาย indirect branch ทั้งหมดเป็นโมฆะ เพื่อเพิ่มขอบเขตการป้องกัน เช่น สำหรับ virtual machine ที่ไม่น่าเชื่อถือ
  • ทั้งสองอย่างเป็นมาตรการบรรเทาที่แนะนำให้ใช้เป็นค่าเริ่มต้นด้านความปลอดภัยในสภาพแวดล้อมที่กำหนด

การวิเคราะห์เชิงลึกของ Branch Predictor Race Condition

  • เมื่อเกิด race condition ในตัวทำนายสาขา การรับประกันด้านความปลอดภัยของ eIBRS และ IBPB จะใช้ไม่ได้
  • เมื่อมีการสลับสิทธิ์ระหว่างการรัน instruction การอัปเดตการทำนายสาขาที่ยังค้างอยู่จะถูกโยงไปยังโดเมนความปลอดภัยใหม่อย่างผิดพลาด
  • แม้จะสั่งทำ IBPB แล้ว การอัปเดตการทำนายที่กำลังค้างอยู่ก็ไม่ถูกล้างและยังคงอยู่ใน predictor จนเกิดปัญหาด้านความปลอดภัย

มาตรการบรรเทาสำหรับ Branch Predictor Race Condition

  • Intel ได้พัฒนา microcode update สำหรับโปรเซสเซอร์ที่ได้รับผลกระทบ และยืนยันจากการทดลองบน Alder Lake ว่าสามารถบล็อกการโจมตีได้
  • เมื่อใช้มาตรการบรรเทานี้ ประสิทธิภาพบน Alder Lake ลดลงได้สูงสุด 2.7%
  • แนวทางบรรเทาเชิงซอฟต์แวร์ทางเลือกก็ถูกทดสอบเช่นกัน โดยพบ overhead ด้านประสิทธิภาพ 1.6% (Coffee Lake Refresh) ถึง 8.3% (Rocket Lake)
  • รายละเอียดเพิ่มเติมมีอยู่ในงานวิจัยฉบับเต็ม

ข้อมูลเพิ่มเติม

  • งานวิจัยหลักของ Branch Privilege Injection มีกำหนดนำเสนอที่ USENIX Security 2025
  • จะมีการบรรยายที่ Black Hat USA 2025 โดยเน้นการตรวจหาช่องโหว่และการ exploit
  • ซอร์สโค้ดสำหรับการโจมตีและการทดลองเผยแพร่บน github

FAQ

1. คอมพิวเตอร์ของฉันได้รับผลกระทบหรือไม่?

  • โปรเซสเซอร์ Intel ทุกตัวตั้งแต่ Gen 9 (Coffee Lake Refresh) เป็นต้นไป ได้รับผลกระทบจาก Branch Privilege Injection
  • ปรากฏการณ์ที่ IBPB ถูกทำให้ไร้ผลยังได้รับการยืนยันในผลิตภัณฑ์ตั้งแต่ Gen 7 (Kaby Lake) ด้วย

2. CPU ที่ไม่ใช่ Intel ได้รับผลกระทบด้วยหรือไม่?

  • จากการวิเคราะห์ ไม่พบปัญหานี้ในระบบ AMD และ ARM

3. มีผลเฉพาะ Linux หรือไม่?

  • PoC ถูกพัฒนาสำหรับ Linux แต่ปัญหาพื้นฐานอยู่ที่ฮาร์ดแวร์
  • ระบบปฏิบัติการทุกตัว ที่ทำงานบนฮาร์ดแวร์ดังกล่าวล้วนมีช่องโหว่

4. ควรรับมืออย่างไร?

  • แนะนำให้ติดตั้ง อัปเดตล่าสุด ของระบบปฏิบัติการและ BIOS

1 ความคิดเห็น

 
GN⁺ 2025-05-14
ความเห็นบน Hacker News
  • ในบทความที่เผยแพร่โดย Harvard มีการเปรียบเปรยอย่างมีไหวพริบว่าโชคร้ายสำหรับ John ที่ branch ต่าง ๆ ไปทำสัญญากับซาตานและกลศาสตร์ควอนตัมจนร่ายมนตร์อันตรายใส่โปรเซสเซอร์รุ่นถัด ๆ ไป และมนตร์นั้นก็ถูกจดจำในชื่ออย่าง "แรงดันไฟรั่วจากการสเกล" หรือ "ความร้อนสูญเปล่าที่เพิ่มขึ้น"

  • รู้สึกว่างานเขียนของ James Mickens สนุกเสมอ พร้อมยกมุกว่าหน่วย Mossad ที่ดูแลงานความมั่นคงไม่สนใจอะไรอย่าง HTTPS เพราะถ้าพวกเขาต้องการข้อมูล ก็จะส่งโดรนไปสลับโทรศัพท์ของคุณกับของเลียนแบบยูเรเนียม แล้วสุดท้ายก็ไปซื้อของใช้ของคุณจากงานขายทรัพย์สินผู้ล่วงลับเพื่อมาดูรูปเอง เป็นจินตนาการที่ชวนขำ

  • มีความเห็นว่าช่วงที่พูดถึงเมทริกซ์จำนวนมากนั้นให้ความหวังเล็กน้อย และเล่าว่าน้องชายของ John ค้นพบวิธีสอนให้เมทริกซ์เหล่านั้นพูดเหมือนคนได้

  • แชร์ลิงก์บล็อกของนักวิจัยและลิงก์งานวิจัย

  • ฝากความเห็นว่าได้เปลี่ยนลิงก์ข้างต้นจากข่าวประชาสัมพันธ์ของมหาวิทยาลัยเป็นโพสต์บล็อกของนักวิจัยแล้ว

  • เกี่ยวกับผลกระทบของช่องโหว่ใหม่นี้ นักวิจัยอธิบายว่าสามารถอ่านเนื้อหาหน่วยความจำทั้งหมดของ CPU ซ้ำ ๆ ได้ และทำความเร็วได้ถึง 5,000 ไบต์ต่อวินาที สุดท้ายหากการโจมตีสำเร็จ ข้อมูลทั้งหมดใน CPU ก็อาจรั่วไหลได้

  • บอกว่าอยากให้เปลี่ยน URL ของชื่อเรื่องเป็นลิงก์บล็อก

  • สรุปการทำงานของ branch predictor

    • การอัปเดตสถานะของตัวทำนายอาจเกิดขึ้นหลังจากคำสั่ง branch เสร็จสิ้น
    • ใน pipeline การ commit ผลลัพธ์กับการ commit การทำนายเป็นคนละอย่างกัน
    • คำสั่งเปลี่ยนสิทธิ์ก็เดินหน้าใน pipeline ได้โดยไม่ต้องรอสถานะการทำนาย ดังนั้นถ้าระดับสิทธิ์ไม่สอดคล้องกันก็อาจเกิดปัญหา
    • จุดที่ยากคือใน pipeline อาจไม่มี "ระดับสิทธิ์ปัจจุบัน" เพียงค่าเดียว
  • ดีใจที่ได้เห็นว่า Professor Kaveh Razavi เคยสอนคอร์ส hardware security ที่มหาวิทยาลัยของตน และคอร์สนั้นยอดเยี่ยมมาก

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

  • ถามว่ามีใครรู้ความสัมพันธ์ระหว่างการโจมตี Training Solo กับช่องโหว่นี้บ้างหรือไม่

  • สงสัยว่าทำไมคำอธิบายเรื่องแพตช์ไมโครโค้ดของชิปเซ็ตถึงพูดถึงแต่ Windows แล้วผู้ใช้ Linux จะเป็นอย่างไร

  • มีคำอธิบายว่า Linux kernel รองรับการโหลดไมโครโค้ดมานานแล้ว แต่ Intel ต้องแจกจ่ายไฟล์ไมโครโค้ดก่อน แต่ละดิสโทรจึงจะอัปเดตได้ และมันต้องถูกรวมมากับการอัปเดตระบบ

  • มีคำอธิบายว่า Intel เผยแพร่การอัปเดตไมโครโค้ดสำหรับ Linux บน github อยู่แล้ว ดังนั้นแต่ละดิสโทรจะดึงจากที่นั่นไปแจกจ่ายโดยอัตโนมัติ ส่วนช่องโหว่นี้แพตช์จริงแล้วหรือไม่ ตนไม่ใช่ผู้เชี่ยวชาญจึงไม่แน่ใจ

  • แชร์ลิงก์คำแนะนำด้านความปลอดภัยอย่างเป็นทางการของ Intel

  • มีความเห็นว่าสงสัยว่า CPU ของ AMD ก็มีช่องโหว่คล้ายกันหรือไม่ และชี้ว่ากลไกทางเทคนิคอย่าง branch prediction คือรากของช่องโหว่ด้านความปลอดภัยของ CPU จึงอยากรู้ว่า AMD หลีกเลี่ยงปัญหาแบบนี้ได้อย่างไร

  • ตอบโดยอ้างอิงสรุปจากบล็อกนักวิจัยว่า Branch Privilege Injection ครั้งนี้ไม่กระทบระบบ AMD และ ARM

  • ใจความคือ AMD ไม่ได้รอดพ้นปัญหาแบบนี้ไปทั้งหมด ช่องโหว่แต่ละตัวอย่าง Spectre และ Meltdown มีขอบเขตต่างกัน ครั้งนี้จำกัดอยู่ที่ Intel แต่ AMD ก็เคยได้รับผลกระทบจากช่องโหว่ตระกูลเดียวกัน เช่น Spectre

  • มีคำอธิบายแบบลงรายละเอียดเล็กน้อยว่า speculative execution เองไม่ใช่ช่องโหว่ แต่เป็นกลไกจำเป็นของ CPU สมัยใหม่ ความซับซ้อนภายในสูงจนยากจะค้นหาข้อบกพร่อง จึงเป็นไปได้ว่า AMD และ ARM ก็อาจมีบั๊กคล้ายกัน วิธีแก้แบบสมบูรณ์คือต้องยอมรับความจริงว่าไม่อาจแยกโค้ดออกจากกันได้อย่างเด็ดขาดบนระบบสมัยใหม่ และนั่นอาจเป็นเรื่องร้ายแรงต่อโมเดลธุรกิจของบริษัทยักษ์ใหญ่บางแห่ง

  • มีข้อเสนอว่ามาตรการรับมือช่องโหว่นี้อาจทำได้โดยเก็บระดับสิทธิ์แบบ snapshot ไว้ตอนอัปเดต branch prediction แล้วส่งค่านั้นต่อไปด้วย ซึ่งน่าจะแก้ได้คล้ายปัญหาที่พบในซอฟต์แวร์

  • มีการชี้แบบขำ ๆ ว่าถ้า branch predictor ของ CPU ตรวจสอบขอบเขตบัฟเฟอร์และข้อมูลสิทธิ์ของโค้ดได้โดยตรงก็คงป้องกันได้ง่ายกว่านี้ แต่ข้อมูลลักษณะนี้จำเป็นต้องเพิ่มข้อมูลสำคัญเข้าไปใน pointer

  • มีความเห็นว่าควรทำความเข้าใจขอบเขตของปัญหาให้ชัดกว่านี้ เพราะการโจมตีช่องโหว่ผ่าน speculative execution จริง ๆ แล้วต้องเตรียมการล่วงหน้าอย่างมาก และถ้าไม่มีสิทธิ์รันโค้ดโดยตรงก็แทบไม่มีความหมาย ไม่สามารถใช้ JS ใด ๆ ในเบราว์เซอร์เพื่อขโมยข้อมูลตามใจได้ และตนเองก็ปิดมาตรการบรรเทาทั้งหมดเพื่อเอาประสิทธิภาพ

  • แนะนำสถาปัตยกรรม CHERI

  • ชี้ว่าการเปลี่ยนแค่โครงสร้าง pointer ไม่พอ และพูดถึงวิธี segmentation ของ x86 รุ่นเก่าอย่าง 80286 ที่ให้ฮาร์ดแวร์กำกับข้อมูลขอบเขตของแต่ละการเข้าถึงหน่วยความจำจริง ๆ แม้ระบบแบบนั้นก็ยังต้องให้ซอฟต์แวร์จัดการข้อมูลขอบเขตอย่างถูกต้อง และสุดท้ายก็มีข้อจำกัดแบบเดียวกัน

  • ถามว่า ณ ตอนนี้มีการใช้แพตช์สำหรับช่องโหว่นี้หรือไมโครโค้ดที่เกี่ยวข้องในระบบปฏิบัติการหลักทั้งหมดแล้วหรือยัง

  • ตอบว่าใช่ โดยวันนี้ (13 พฤษภาคม) คือวันเปิดเผยข้อมูล