สรุปสั้น
กลุ่มนักวิชาการจาก VUSec และ Scuola Superiore Sant’Anna เปิดเผยรายละเอียดช่องโหว่ซีพียูตระกูล Spectre ตัวใหม่ที่กระทบเอนจิน Just-In-Time (JIT) ซึ่งมีอยู่ในเว็บเบราว์เซอร์ รันไทม์ของภาษาโปรแกรม และเคอร์เนลของระบบปฏิบัติการ โดยกระทบซีพียูหลายค่าย ช่องโหว่นี้ถูกตั้งชื่อว่า Branch Target Reuse หรือ BTR และจัดเป็น Spectre-v2 เวอร์ชันใหม่ แนวคิดหลักคือแม้ซีพียูสมัยใหม่จะกู้คืนความสอดคล้องของโค้ดในระดับสถาปัตยกรรมหลังมีการแก้โค้ดตัวเอง แต่กลับไม่จำเป็นต้องล้างค่าทำนายปลายทางของ branch แบบอ้อม (indirect branch) ที่ค้างอยู่เสมอ
ในเอนจิน JIT ค่าปลายทางที่ค้างเหล่านี้สามารถอยู่ต่อได้นานกว่าโค้ดเดิม และถูกนำกลับมาใช้อีกครั้งเมื่อแคชโค้ดถูกเติมใหม่ กลายเป็นช่องให้เกิดการทำงานเชิงคาดการณ์แบบ execute-after-free ที่แฮ็กเกอร์จี้ควบคุมทิศทางการทำงานไปยังโค้ดที่เพิ่งสร้างขึ้นในตำแหน่งเก่าที่ล้าสมัยได้ ซึ่งเลี่ยงมาตรการ hardening ของซอฟต์แวร์หรือไปแตะ gadget ที่วางเยื้องตำแหน่งได้ ทีมวิจัยทดสอบ BTR กับ SpiderMonkey ซึ่งเป็นเอนจิน JIT ของ Mozilla Firefox, GraalVM และ cBPF JIT ในเคอร์เนล Linux พบว่าได้รับผลกระทบทั้งหมดแต่มีลักษณะการเจาะและอัตราการรั่วของข้อมูลต่างกันมาก และได้สาธิตการดึง hash รหัสผ่าน root จากระบบ Intel ที่แพตช์ครบและเปิดการป้องกันค่าเริ่มต้นไว้ได้ภายในไม่กี่นาที
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 29 กันยายน 2569 ว่า Spectre คือกลุ่มช่องโหว่ความปลอดภัยของซีพียูที่ถูกค้นพบครั้งแรกในปี 2560 ซึ่งใช้ประโยชน์จาก speculative execution เทคนิคเพิ่มประสิทธิภาพที่หน่วยประมวลผลสมัยใหม่ใช้ทำนายและรันคำสั่งล่วงหน้า แฮ็กเกอร์สามารถหลอกให้ซีพียูทำงานเชิงคาดการณ์ที่เข้าถึงข้อมูลอ่อนไหว แล้วอนุมานข้อมูลนั้นออกมาผ่านช่องทางข้างเคียงจากการจับเวลาของแคช
Spectre-v2 เป็นชนิดหนึ่งที่โจมตีการทำนาย indirect branch ในหน่วยประมวลผลสมัยใหม่ โดยวางยากลไกทำนาย branch ให้โปรแกรมเหยื่อรัน indirect branch ที่ทำให้ซีพียูทำนายผิดและรันโค้ดหรือ gadget ที่แฮ็กเกอร์ควบคุมเชิงคาดการณ์ แม้ผลของการทำนายผิดจะถูกทิ้งไป แต่แฮ็กเกอร์ยังอนุมานได้ว่า speculative execution ของเหยื่อเข้าถึงอะไรจากการเปลี่ยนแปลงสถานะของแคช
นาย Cristiano Giuffrida หนึ่งในทีมวิจัยระบุกับ The Hacker News ว่า BTR เป็นตัวอย่างแรกของการโจมตี Spectre-v2 แบบ in-place ที่ใช้งานได้จริง คือใช้ indirect branch ตัวเดียวกันทั้งสำหรับการฝึกและการทดสอบ ซึ่งเดิมเชื่อกันว่าทำได้ยากเพราะการโจมตี Spectre-v2 แบบดั้งเดิมอาศัยการละเมิดปลายทางเชิง “พื้นที่” คือจี้ปลายทางของ branch หนึ่งไปยังอีก branch หนึ่ง แต่ BTR แสดงว่าสมมติฐานนี้ผิดเมื่อมองในเชิง “เวลา” ที่ branch และปลายทางคงเดิมแต่ “ความหมาย” ของโค้ดเบื้องหลังเปลี่ยนไป
รายละเอียดช่องโหว่
เงื่อนไขของ BTR คือแฮ็กเกอร์ต้องรันโค้ดแบบไม่มีสิทธิพิเศษในเอนจิน JIT ได้ และต้องการเปิดเผยข้อมูลอ่อนไหวจากสภาพแวดล้อมของโฮสต์ ลำดับการโจมตีเริ่มจากหลอกให้เอนจิน JIT จองก้อนหน่วยความจำสำหรับฝึก แล้วบังคับให้ branch เหยื่อกระโดดไปยังก้อนนั้นเพื่อแทรกค่าใน branch target buffer (BTB) ที่อ้างถึงจุดเข้าปัจจุบัน จากนั้นบังคับให้คืนก้อนฝึกและจองก้อนเป้าหมายที่ใช้ที่อยู่เดิมซ้ำบางส่วน
เมื่อแฮ็กเกอร์กระตุ้น indirect branch อีกครั้ง ซีพียูจะใช้ค่า BTB ที่ค้างและล้าสมัยแล้วกระโดดเชิงคาดการณ์ไปยังจุดเข้าของก้อนฝึกเก่า ผลลัพธ์คือการจี้ควบคุมทิศทางการทำงานและเปิดเผยข้อมูลลับ กุญแจสำคัญคือค่า BTB ที่ค้างต้องไม่ถูกล้างหรือแทนที่หลังเอนจิน JIT คืนก้อนฝึก และตัวทำนาย branch ต้องเลือกค่า BTB ที่ค้างนั้นมาทำนาย BTR ยังทำให้มาตรการป้องกันเดิมอย่าง Training Solo (CVE-2024-28956 และ CVE-2025-24495) ใช้ไม่ได้ผล แม้ขอบเขตจะจำกัดอยู่ที่เอนจิน JIT ก็ตาม
หลังการเปิดเผยอย่างมีความรับผิดชอบ มาตรการแก้ไข BTR ถูกปล่อยและผนวกเข้าเคอร์เนล Linux แล้วภายใต้ CVE-2026-64507 และ CVE-2026-64508 ส่วน GraalVM ขัดขวางการใช้พื้นที่ซ้ำด้วยการสุ่มตำแหน่งแคชโค้ด JIT และ Mozilla เคยพิจารณามาตรการแบบ IBPB แต่ขณะนี้ให้ความสำคัญกับการทำ site isolation ให้เสร็จก่อน การเปิดเผยนี้เกิดขึ้นเกือบสองเดือนหลังนักวิจัย MIT CSAIL เปิดเผยเทคนิค Interrupt Injection ที่ข้ามการป้องกัน Spectre-v2 และดึงหน่วยความจำเคอร์เนลจากระบบ Linux บน Intel และ AMD ได้
ผลกระทบ
BTR มีนัยสำคัญสามประการ ประการแรกคือการโจมตี Spectre-v2 แบบ in-place ทำได้จริงในเชิงเวลา ประการที่สองคือเอนจิน JIT จำเป็นต้องใช้กลไกแยกส่วนแบบ site isolation หรือมาตรการเฉพาะอย่าง IBPB ของ cBPF และประการที่สามคือซีพียูสมัยใหม่ไม่ได้ซิงค์โครงสร้างในระดับไมโครสถาปัตยกรรมที่จำเป็นทั้งหมดเมื่อโค้ดถูกเขียนทับ ซึ่งแก้ได้ยากเพราะการซิงค์ทุกอย่างมีต้นทุนสูง จึงเป็นไปได้ว่าจะมีปัญหาคล้าย BTR โผล่มาอีกในอนาคต ช่องโหว่ระดับฮาร์ดแวร์เช่นนี้มีผลต่อระบบจำนวนมากที่พึ่งเอนจิน JIT ทั้งในฝั่งเบราว์เซอร์และเคอร์เนล ทำให้การแพตช์เคอร์เนลให้ทันสมัยกลายเป็นเรื่องสำคัญ แม้ความเสี่ยงจริงจะขึ้นกับว่าแฮ็กเกอร์สามารถรันโค้ดในเอนจิน JIT เป้าหมายได้หรือไม่
คำแนะนำ
ผู้ดูแลระบบควรอัปเดตเคอร์เนล Linux ให้รวมแพตช์ของ CVE-2026-64507 และ CVE-2026-64508 โดยเร็ว โดยเฉพาะระบบที่เปิดให้โค้ดไม่น่าเชื่อถือรันในเอนจิน JIT เช่นเซิร์ฟเวอร์ที่รัน workload หลายผู้เช่า ผู้ใช้เบราว์เซอร์ควรอัปเดต Firefox เป็นเวอร์ชันล่าสุดและติดตามการเปิดใช้ site isolation ส่วนผู้ที่ใช้ GraalVM ควรอัปเดตให้ได้เวอร์ชันที่มีการสุ่มตำแหน่งแคชโค้ด JIT โดยทั่วไปแล้วการลดพื้นที่ที่ยอมให้โค้ดภายนอกรันในสภาพแวดล้อม JIT และการจำกัดสิทธิ์ของกระบวนการที่ไม่น่าเชื่อถือจะช่วยลดโอกาสที่ช่องโหว่ระดับ speculative execution จะถูกใช้ประโยชน์ได้จริง
