- พบช่องโหว่ความปลอดภัยใหม่บน 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 ความคิดเห็น
ความเห็นบน Hacker News
ในบทความที่เผยแพร่โดย Harvard มีการเปรียบเปรยอย่างมีไหวพริบว่าโชคร้ายสำหรับ John ที่ branch ต่าง ๆ ไปทำสัญญากับซาตานและกลศาสตร์ควอนตัมจนร่ายมนตร์อันตรายใส่โปรเซสเซอร์รุ่นถัด ๆ ไป และมนตร์นั้นก็ถูกจดจำในชื่ออย่าง "แรงดันไฟรั่วจากการสเกล" หรือ "ความร้อนสูญเปล่าที่เพิ่มขึ้น"
รู้สึกว่างานเขียนของ James Mickens สนุกเสมอ พร้อมยกมุกว่าหน่วย Mossad ที่ดูแลงานความมั่นคงไม่สนใจอะไรอย่าง HTTPS เพราะถ้าพวกเขาต้องการข้อมูล ก็จะส่งโดรนไปสลับโทรศัพท์ของคุณกับของเลียนแบบยูเรเนียม แล้วสุดท้ายก็ไปซื้อของใช้ของคุณจากงานขายทรัพย์สินผู้ล่วงลับเพื่อมาดูรูปเอง เป็นจินตนาการที่ชวนขำ
มีความเห็นว่าช่วงที่พูดถึงเมทริกซ์จำนวนมากนั้นให้ความหวังเล็กน้อย และเล่าว่าน้องชายของ John ค้นพบวิธีสอนให้เมทริกซ์เหล่านั้นพูดเหมือนคนได้
แชร์ลิงก์บล็อกของนักวิจัยและลิงก์งานวิจัย
ฝากความเห็นว่าได้เปลี่ยนลิงก์ข้างต้นจากข่าวประชาสัมพันธ์ของมหาวิทยาลัยเป็นโพสต์บล็อกของนักวิจัยแล้ว
เกี่ยวกับผลกระทบของช่องโหว่ใหม่นี้ นักวิจัยอธิบายว่าสามารถอ่านเนื้อหาหน่วยความจำทั้งหมดของ CPU ซ้ำ ๆ ได้ และทำความเร็วได้ถึง 5,000 ไบต์ต่อวินาที สุดท้ายหากการโจมตีสำเร็จ ข้อมูลทั้งหมดใน CPU ก็อาจรั่วไหลได้
บอกว่าอยากให้เปลี่ยน URL ของชื่อเรื่องเป็นลิงก์บล็อก
สรุปการทำงานของ branch predictor
ดีใจที่ได้เห็นว่า 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 พฤษภาคม) คือวันเปิดเผยข้อมูล