คำตอบการวิจัย
ประเด็นสำคัญ ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6] ต้นตอคือ Race Condition ในกระบวนการล้างแคชของ vGIC ITS ก่อให้เกิด Use After Free ซึ่งกระทบเคอร์เนลที่สร้างขึ้นระหว่างปลายเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 [1][5] ผู้ให้บริการคลาวด์ที่ใช้ ARM64 แบบผู้เช่าหลายราย (Multi Tenant) เช่น AWS Graviton ต้องรีบอัปเดตแพตช์ทันที หรือปิดการใช้งาน Virtual ITS ในเคอร์เนลสำหรับ Guest ที่ไม่น่าไว้วางใจเป็นการชั่วคราว [5][6] What is the CVE-2026-46316 ("ITScape") vulnerability in Linux KVM/arm64's vGIC-ITS emulation, including its root cause as a race condition i ITScape is the first publicly documented guest-to-host escape exploit for KVM on arm64. AI พรอมต์ Create a landscape editorial hero image for this Studio Global article: What is the CVE-2026-46316 ("ITScape") vulnerability in Linux KVM/arm64's vGIC-ITS emulation, including its root cause as a race condition i. Article summary: Here is the full breakdown of **CVE-2026-46316 ("ITScape")**, based on the available evidence.. Topic tags: general, general web, user generated, government. Reference image context from search candidates: Reference image 1: visual subject "| CVE-2026-7572An off-by-one error (CWE-193) in the ConsumeUnit16Array and ConsumeUnit64Array functions in Velocidex Velociraptor before version 0.76.5 on Windows and Linux allows" source context "Latest Linux Vulnerabilities" Reference image 2: visual subject "# CVE-2026-23425: Linux Kernel Privilege Escalation Flaw. CVE-2026-23425 is a privilege escalation vulnerability in the Linux kernel affecting KVM ARM64 ID register i
openai.com ช่องโหว่แบบ Use-After-Free ในระบบย่อย KVM/arm64 ของเคอร์เนล Linux นี้ทำให้เครื่องเสมือน (Guest VM) ที่ถูกสร้างขึ้นมาอย่างแนบเนียนสามารถหลบหนีออกจากแซนด์บ็อกซ์และเข้าควบคุมเครื่องแม่ข่าย (Host) ได้อย่างสมบูรณ์ โดยมีรหัสประจำตัวคือ CVE-2026-46316 และถูกขนานนามว่า ITScape นี่คือช่องโหว่ที่สามารถใช้โจมตีเพื่อหนีออกจาก Guest ไปยัง Host ได้เป็นครั้งแรกที่มีการบันทึกไว้อย่างเป็นทางการสำหรับ KVM บนสถาปัตยกรรม arm64 ซึ่งนับเป็นเหตุการณ์สำคัญที่ทำให้ผู้ให้บริการคลาวด์ ARM แบบ Multi-Tenant ทุกรายต้องรีบดำเนินการแก้ไขอย่างเร่งด่วน
ช่องโหว่นี้ถูกเปิดเผยโดยนักวิจัยด้านความปลอดภัย ฮยอนวู คิม (Hyunwoo Kim) ในช่วงต้นเดือนมิถุนายน 2026 โดยไม่ใช่แค่ข้อกังวลในทางทฤษฎีเท่านั้น แต่ยังมีโค้ดพิสูจน์แนวคิด (Proof-of-Concept) ที่ใช้งานได้จริงเผยแพร่อยู่บน GitHub ซึ่งกระตุ้นให้เกิด Race Condition โดยการส่งคำสั่ง DISCARD ITS ผ่าน vCPU หลาย ๆ เธรดพร้อมกันในขณะที่แคชแปลที่อยู่ของ LPI กำลังถูกล้าง ผลกระทบคือการที่เครื่องโฮสต์ถูกยึดครองจากภายใน VM ที่ไม่น่าไว้วางใจได้อย่างสมบูรณ์
คนยังถาม คำตอบสั้น ๆ สำหรับ "ITScape: ช่องโหว่หนีออกจาก Guest สู่ Host ครั้งแรกของโลกบน KVM/arm64" คืออะไร ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6]
ประเด็นสำคัญที่ต้องตรวจสอบก่อนคืออะไร? ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6] ต้นตอคือ Race Condition ในกระบวนการล้างแคชของ vGIC ITS ก่อให้เกิด Use After Free ซึ่งกระทบเคอร์เนลที่สร้างขึ้นระหว่างปลายเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 [1][5]
ฉันควรทำอย่างไรต่อไปในทางปฏิบัติ? ผู้ให้บริการคลาวด์ที่ใช้ ARM64 แบบผู้เช่าหลายราย (Multi Tenant) เช่น AWS Graviton ต้องรีบอัปเดตแพตช์ทันที หรือปิดการใช้งาน Virtual ITS ในเคอร์เนลสำหรับ Guest ที่ไม่น่าไว้วางใจเป็นการชั่วคราว [5][6]
คำตอบการวิจัย
ประเด็นสำคัญ ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6] ต้นตอคือ Race Condition ในกระบวนการล้างแคชของ vGIC ITS ก่อให้เกิด Use After Free ซึ่งกระทบเคอร์เนลที่สร้างขึ้นระหว่างปลายเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 [1][5] ผู้ให้บริการคลาวด์ที่ใช้ ARM64 แบบผู้เช่าหลายราย (Multi Tenant) เช่น AWS Graviton ต้องรีบอัปเดตแพตช์ทันที หรือปิดการใช้งาน Virtual ITS ในเคอร์เนลสำหรับ Guest ที่ไม่น่าไว้วางใจเป็นการชั่วคราว [5][6] What is the CVE-2026-46316 ("ITScape") vulnerability in Linux KVM/arm64's vGIC-ITS emulation, including its root cause as a race condition i ITScape is the first publicly documented guest-to-host escape exploit for KVM on arm64. AI พรอมต์ Create a landscape editorial hero image for this Studio Global article: What is the CVE-2026-46316 ("ITScape") vulnerability in Linux KVM/arm64's vGIC-ITS emulation, including its root cause as a race condition i. Article summary: Here is the full breakdown of **CVE-2026-46316 ("ITScape")**, based on the available evidence.. Topic tags: general, general web, user generated, government. Reference image context from search candidates: Reference image 1: visual subject "| CVE-2026-7572An off-by-one error (CWE-193) in the ConsumeUnit16Array and ConsumeUnit64Array functions in Velocidex Velociraptor before version 0.76.5 on Windows and Linux allows" source context "Latest Linux Vulnerabilities" Reference image 2: visual subject "# CVE-2026-23425: Linux Kernel Privilege Escalation Flaw. CVE-2026-23425 is a privilege escalation vulnerability in the Linux kernel affecting KVM ARM64 ID register i
openai.com ช่องโหว่แบบ Use-After-Free ในระบบย่อย KVM/arm64 ของเคอร์เนล Linux นี้ทำให้เครื่องเสมือน (Guest VM) ที่ถูกสร้างขึ้นมาอย่างแนบเนียนสามารถหลบหนีออกจากแซนด์บ็อกซ์และเข้าควบคุมเครื่องแม่ข่าย (Host) ได้อย่างสมบูรณ์ โดยมีรหัสประจำตัวคือ CVE-2026-46316 และถูกขนานนามว่า ITScape นี่คือช่องโหว่ที่สามารถใช้โจมตีเพื่อหนีออกจาก Guest ไปยัง Host ได้เป็นครั้งแรกที่มีการบันทึกไว้อย่างเป็นทางการสำหรับ KVM บนสถาปัตยกรรม arm64 ซึ่งนับเป็นเหตุการณ์สำคัญที่ทำให้ผู้ให้บริการคลาวด์ ARM แบบ Multi-Tenant ทุกรายต้องรีบดำเนินการแก้ไขอย่างเร่งด่วน
ช่องโหว่นี้ถูกเปิดเผยโดยนักวิจัยด้านความปลอดภัย ฮยอนวู คิม (Hyunwoo Kim) ในช่วงต้นเดือนมิถุนายน 2026 โดยไม่ใช่แค่ข้อกังวลในทางทฤษฎีเท่านั้น แต่ยังมีโค้ดพิสูจน์แนวคิด (Proof-of-Concept) ที่ใช้งานได้จริงเผยแพร่อยู่บน GitHub ซึ่งกระตุ้นให้เกิด Race Condition โดยการส่งคำสั่ง DISCARD ITS ผ่าน vCPU หลาย ๆ เธรดพร้อมกันในขณะที่แคชแปลที่อยู่ของ LPI กำลังถูกล้าง ผลกระทบคือการที่เครื่องโฮสต์ถูกยึดครองจากภายใน VM ที่ไม่น่าไว้วางใจได้อย่างสมบูรณ์
คนยังถาม คำตอบสั้น ๆ สำหรับ "ITScape: ช่องโหว่หนีออกจาก Guest สู่ Host ครั้งแรกของโลกบน KVM/arm64" คืออะไร ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6]
ประเด็นสำคัญที่ต้องตรวจสอบก่อนคืออะไร? ITScape (CVE 2026 46316) คือช่องโหว่หลุดออกจาก Guest VM สู่ Host ที่ร้ายแรงบน KVM/arm64 ทำให้ Guest ที่เป็นอันตรายสามารถรันโค้ดบนเครื่องโฮสต์ได้ด้วยสิทธิ์สูงสุด และมีโค้ดโจมตีที่ใช้งานได้จริงเผยแพร่แล้วบน GitHub [6] ต้นตอคือ Race Condition ในกระบวนการล้างแคชของ vGIC ITS ก่อให้เกิด Use After Free ซึ่งกระทบเคอร์เนลที่สร้างขึ้นระหว่างปลายเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 [1][5]
ฉันควรทำอย่างไรต่อไปในทางปฏิบัติ? ผู้ให้บริการคลาวด์ที่ใช้ ARM64 แบบผู้เช่าหลายราย (Multi Tenant) เช่น AWS Graviton ต้องรีบอัปเดตแพตช์ทันที หรือปิดการใช้งาน Virtual ITS ในเคอร์เนลสำหรับ Guest ที่ไม่น่าไว้วางใจเป็นการชั่วคราว [5][6]
ITScape คืออะไร? ITScape คือ Race Condition ที่เกิดขึ้นในส่วนของ Interrupt Translation Service ของ Virtual Generic Interrupt Controller (vGIC-ITS) ซึ่งทำงานภายในเคอร์เนล KVM โดย vGIC-ITS มีหน้าที่จัดการแปล Logical Processor Interrupt (LPI) สำหรับ Guest ที่ทำงานบน arm64 แบบเวอร์ช่วลไลซ์ เมื่อจำเป็นต้องล้างรายการในแคชแปลที่อยู่ (Translation Cache) เคอร์เนลจะทำการวนอ่านรายการและปล่อยการอ้างอิงของรายการเหล่านั้น จุดบกพร่องอยู่ที่ฟังก์ชันการล้างแคช (vgic_its_invalidate_cache) ได้ลดการอ้างอิงของ ทุกรายการที่ถูกวนอ่านเจอ ซึ่งรวมถึงรายการที่ถูกการทำงานอีกส่วนหนึ่ง (Concurrent Operation) ลบออกจากแคชไปแล้วด้วย
การปล่อยการอ้างอิงซ้ำซ้อนนี้ก่อให้เกิด Use-After-Free (UAF) แบบคลาสสิก: เส้นทางการทำงานสองเส้นทางสามารถเข้าถึงหน่วยความจำที่ถูกปล่อยคืนไปแล้วได้ ทำให้นักโจมตีมีช่วงเวลาในการจัดการฮีป (Heap) และในที่สุดก็สามารถเปลี่ยนทิศทางการทำงานของโปรแกรม (Control Flow) ในระดับเคอร์เนลของเครื่องโฮสต์ได้
ต้นตอของบั๊กอยู่ในฟังก์ชัน vgic_its_invalidate_cache() ซึ่งเดินเข้าไปในแคชแปลที่อยู่ของแต่ละ ITS ด้วย xa_for_each() และเรียก vgic_put_irq() บนพอยน์เตอร์ที่วนอ่านเจอ แทนที่จะเป็นค่าที่ส่งคืนมาอย่างปลอดภัยจาก xa_erase() การทำงานในบริบทที่แตกต่างกันสามารถเข้าสู่ฟังก์ชันนี้ได้ภายใต้ล็อกที่แตกต่างกัน ดังนั้น Race นี้จึงสามารถถูกเรียกใช้ได้ทั้งหมดจากภายใน Guest VM โดยการผสมผสานคำสั่ง ITS, การเขียนค่าไปยัง GITS_CTLR และการเคลียร์ EnableLPIs ใน Redistributor
ทำไมต้องสนใจ: การหนีออกจาก Guest สู่ Host ครั้งแรกของ KVM/arm64 แม้ว่าช่องโหว่ที่ใช้หนีจาก Guest ไปยัง Host จะพบได้ยาก แต่มันคือบั๊กในไฮเปอร์ไวเซอร์ที่อันตรายที่สุด เพราะมันทำลายกำแพงการแยกส่วนที่ระบบคลาวด์คอมพิวติงต้องพึ่งพา ช่องโหว่หลบหนีจาก KVM ที่เคยเปิดเผยต่อสาธารณะก่อนหน้านี้มุ่งเป้าไปที่ x86 โดยมักจะผ่าน QEMU หรือโค้ดเฉพาะของ AMD ITScape เป็นช่องโหว่แรกที่สามารถใช้โจมตีได้จริง ซึ่งแสดงให้เห็นถึงการเจาะทะลวงจาก Guest VM บน arm64 ที่ไม่มีสิทธิ์พิเศษใด ๆ ผ่าน โค้ดภายในเคอร์เนล KVM โดยตรง โดยไม่ต้องพึ่งพาบั๊กในอีมูเลเตอร์ใน userspace เลย
สำหรับผู้ให้บริการคลาวด์ที่ใช้เครื่องแม่ข่าย Graviton, Ampere Altra หรือโฮสต์ KVM บน arm64 ใด ๆ ก็ตามที่รับเวิร์กโหลดแบบ Multi-Tenant Guest VM สามารถ:
อ่านและเขียนหน่วยความจำเคอร์เนลของเครื่องโฮสต์ได้ตามอำเภอใจ
ยกระดับสิทธิ์เพื่อรันโค้ดใน Ring 0 บนเครื่องโฮสต์
ขยายผลไปยัง VM, คอนเทนเนอร์อื่น ๆ หรือเครือข่ายของโฮสต์
ทีมความปลอดภัยส่วนใหญ่ให้คะแนนความรุนแรงของช่องโหว่นี้สูงกว่า CVSS 9.0 ซึ่งสะท้อนถึงระดับความร้ายแรงวิกฤต
รายละเอียดต้นตอของปัญหา โค้ดที่มีช่องโหว่อยู่ในขั้นตอนการล้างแคชแปลที่อยู่ของ LPI เมื่อเคอร์เนลต้องการล้างรายการในแคช มันจะวนอ่าน XArray ด้วย xa_for_each() และเรียก vgic_put_irq() เพื่อปล่อยจำนวนการอ้างอิงในแต่ละรายการ ปัญหาคือ xa_for_each() อาจคืนค่ารายการที่ถูกลบไปแล้วโดยการทำงานอื่นที่ขนานกัน เช่น คำสั่ง DISCARD ITS ที่ส่งมาจาก vCPU อีกตัวหนึ่ง ลูปการล้างแคชก็ยังคงลดการอ้างอิงของรายการที่ถูกลบไปแล้วนั้น ทำให้เกิดการปล่อยการอ้างอิงซ้ำซ้อน (Double-Put) และท้ายที่สุดคือ Use-After-Free
ก่อนหน้านี้มีช่องโหว่ในโค้ดส่วนเดียวกันคือ CVE-2024-26598 ซึ่งได้แก้ไขปัญหา UAF ในเส้นทางการเรียกดูแคชบางส่วน โดยการเพิ่มจำนวนอ้างอิงภายใน vgic_its_check_cache() ก่อนปล่อยล็อก แต่การแก้ไขนั้นไม่ได้ครอบคลุมถึงเส้นทางการล้างแคช ทำให้ยังคงสามารถใช้ประโยชน์จาก Race นี้ผ่านลำดับขั้นตอนอื่นได้
แพตช์แก้ไข แพตช์จาก upstream ได้แก้ไข vgic_its_invalidate_cache() เพื่อให้ vgic_put_irq() ถูกเรียกใช้เฉพาะกับค่าที่ส่งคืนมาจาก xa_erase() เท่านั้น ไม่ใช่กับทุกรายการที่ iterator วนอ่านเจอ ข้อความของ commit ระบุว่า: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry"
เวอร์ชันที่ได้รับผลกระทบ
เริ่มมีปัญหา: ปลายเดือนเมษายน 2024 เมื่อมีการเพิ่ม LPI Translation Cache เข้าไปใน KVM/arm64
ช่วงเวลาที่มีช่องโหว่: เคอร์เนล upstream ที่สร้างขึ้นระหว่างประมาณเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026
แก้ไขแล้ว: แพตช์ upstream ถูก commit ในช่วงต้นเดือนมิถุนายน 2026 และรวมอยู่ในเคอร์เนลเสถียรรุ่น 6.x ล่าสุดและ Backport ของดิสทริบิวชันต่างๆ
โค้ดพิสูจน์แนวคิด (Proof-of-Concept Exploit) ฮยอนวู คิม เผยแพร่โค้ดโจมตีที่ใช้งานได้จริงบน GitHub ต่อสาธารณะ เมื่อประมาณวันที่ 9-10 มิถุนายน 2026 โดยใน Repository ประกอบด้วยซอร์สโค้ดฉบับเต็ม, คำแนะนำการทำซ้ำทีละขั้นตอน, และคำอธิบายทางเทคนิคของเทคนิคการโจมตี โค้ดนี้กระตุ้นให้เกิด Race โดยการประสานงานเธรดของ vCPU เพื่อส่งคำสั่ง DISCARD และค้นหาแคชแปลที่อยู่ของ LPI ไปพร้อม ๆ กัน ซึ่งจะทำให้เกิด Use-After-Free อย่างแม่นยำเพื่อรันโค้ดบนเครื่องโฮสต์
การที่ PoC ที่เชื่อถือได้ถูกเปิดเผยต่อสาธารณะ หมายความว่าสแกนเนอร์หาช่องโหว่ทั่วไปและนักโจมตีในโลกจริงสามารถนำช่องโหว่นี้ไปใช้เป็นอาวุธได้โดยง่ายดาย ทำให้ช่วงเวลาระหว่างการเปิดเผยข้อมูลและการโจมตีจริงสั้นลงอย่างมาก
การบรรเทาผลกระทบเร่งด่วนสำหรับผู้ให้บริการคลาวด์ ARM64 หากคุณดำเนินการโครงสร้างพื้นฐาน KVM บน arm64 แบบ Multi-Tenant — ไม่ว่าจะเป็น AWS Graviton, Ampere Altra หรือแพลตฟอร์มอื่น ๆ ที่คล้ายคลึงกัน — จงถือว่านี่คือรอบการอัปเดตแพตช์ฉุกเฉินทันที
อัปเดตเคอร์เนลของโฮสต์ตอนนี้ ติดตั้งเคอร์เนล -stable ล่าสุดที่มีแพตช์แก้ไขในช่วงต้นเดือนมิถุนายน 2026 หรือแพตช์ย้อนหลังจากดิสทริบิวชันของคุณ
ปิดการใช้งาน in-kernel vGIC-ITS สำหรับ Guest ที่ไม่น่าไว้วางใจ หากคุณไม่สามารถอัปเดตแพตช์ได้ทันที สำหรับ QEMU สามารถทำได้โดยบังคับให้การจำลอง GICv3 ITS ไปทำงานใน userspace หรือไม่เปิดเผยความสามารถ GICv3 ITS ให้กับผู้เช่าที่ไม่น่าไว้วางใจ
อย่าพึ่งการป้องกันจากภายใน Guest นี่คือบั๊กระดับไฮเปอร์ไวเซอร์ ไม่มีวิธีแก้ไขจากภายใน VM
ตรวจสอบระบบของคุณเพื่อหาเคอร์เนลที่มีช่องโหว่ โฮสต์ KVM บน arm64 ใด ๆ ที่รันเคอร์เนลที่สร้างขึ้นระหว่างเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 และมีการใช้งาน vGIC-ITS อยู่ในกลุ่มเสี่ยง
เฝ้าระวังร่องรอยการโจมตี จากการที่โค้ด PoC ถูกเผยแพร่สู่สาธารณะ มีความเป็นไปได้สูงที่จะมีการสแกนและพยายามโจมตีระบบ
An EPYC escape: Case-study of a KVM breakout - Project Zero
ITScape คืออะไร? ITScape คือ Race Condition ที่เกิดขึ้นในส่วนของ Interrupt Translation Service ของ Virtual Generic Interrupt Controller (vGIC-ITS) ซึ่งทำงานภายในเคอร์เนล KVM โดย vGIC-ITS มีหน้าที่จัดการแปล Logical Processor Interrupt (LPI) สำหรับ Guest ที่ทำงานบน arm64 แบบเวอร์ช่วลไลซ์ เมื่อจำเป็นต้องล้างรายการในแคชแปลที่อยู่ (Translation Cache) เคอร์เนลจะทำการวนอ่านรายการและปล่อยการอ้างอิงของรายการเหล่านั้น จุดบกพร่องอยู่ที่ฟังก์ชันการล้างแคช (vgic_its_invalidate_cache) ได้ลดการอ้างอิงของ ทุกรายการที่ถูกวนอ่านเจอ ซึ่งรวมถึงรายการที่ถูกการทำงานอีกส่วนหนึ่ง (Concurrent Operation) ลบออกจากแคชไปแล้วด้วย
การปล่อยการอ้างอิงซ้ำซ้อนนี้ก่อให้เกิด Use-After-Free (UAF) แบบคลาสสิก: เส้นทางการทำงานสองเส้นทางสามารถเข้าถึงหน่วยความจำที่ถูกปล่อยคืนไปแล้วได้ ทำให้นักโจมตีมีช่วงเวลาในการจัดการฮีป (Heap) และในที่สุดก็สามารถเปลี่ยนทิศทางการทำงานของโปรแกรม (Control Flow) ในระดับเคอร์เนลของเครื่องโฮสต์ได้
ต้นตอของบั๊กอยู่ในฟังก์ชัน vgic_its_invalidate_cache() ซึ่งเดินเข้าไปในแคชแปลที่อยู่ของแต่ละ ITS ด้วย xa_for_each() และเรียก vgic_put_irq() บนพอยน์เตอร์ที่วนอ่านเจอ แทนที่จะเป็นค่าที่ส่งคืนมาอย่างปลอดภัยจาก xa_erase() การทำงานในบริบทที่แตกต่างกันสามารถเข้าสู่ฟังก์ชันนี้ได้ภายใต้ล็อกที่แตกต่างกัน ดังนั้น Race นี้จึงสามารถถูกเรียกใช้ได้ทั้งหมดจากภายใน Guest VM โดยการผสมผสานคำสั่ง ITS, การเขียนค่าไปยัง GITS_CTLR และการเคลียร์ EnableLPIs ใน Redistributor
ทำไมต้องสนใจ: การหนีออกจาก Guest สู่ Host ครั้งแรกของ KVM/arm64 แม้ว่าช่องโหว่ที่ใช้หนีจาก Guest ไปยัง Host จะพบได้ยาก แต่มันคือบั๊กในไฮเปอร์ไวเซอร์ที่อันตรายที่สุด เพราะมันทำลายกำแพงการแยกส่วนที่ระบบคลาวด์คอมพิวติงต้องพึ่งพา ช่องโหว่หลบหนีจาก KVM ที่เคยเปิดเผยต่อสาธารณะก่อนหน้านี้มุ่งเป้าไปที่ x86 โดยมักจะผ่าน QEMU หรือโค้ดเฉพาะของ AMD ITScape เป็นช่องโหว่แรกที่สามารถใช้โจมตีได้จริง ซึ่งแสดงให้เห็นถึงการเจาะทะลวงจาก Guest VM บน arm64 ที่ไม่มีสิทธิ์พิเศษใด ๆ ผ่าน โค้ดภายในเคอร์เนล KVM โดยตรง โดยไม่ต้องพึ่งพาบั๊กในอีมูเลเตอร์ใน userspace เลย
สำหรับผู้ให้บริการคลาวด์ที่ใช้เครื่องแม่ข่าย Graviton, Ampere Altra หรือโฮสต์ KVM บน arm64 ใด ๆ ก็ตามที่รับเวิร์กโหลดแบบ Multi-Tenant Guest VM สามารถ:
อ่านและเขียนหน่วยความจำเคอร์เนลของเครื่องโฮสต์ได้ตามอำเภอใจ
ยกระดับสิทธิ์เพื่อรันโค้ดใน Ring 0 บนเครื่องโฮสต์
ขยายผลไปยัง VM, คอนเทนเนอร์อื่น ๆ หรือเครือข่ายของโฮสต์
ทีมความปลอดภัยส่วนใหญ่ให้คะแนนความรุนแรงของช่องโหว่นี้สูงกว่า CVSS 9.0 ซึ่งสะท้อนถึงระดับความร้ายแรงวิกฤต
รายละเอียดต้นตอของปัญหา โค้ดที่มีช่องโหว่อยู่ในขั้นตอนการล้างแคชแปลที่อยู่ของ LPI เมื่อเคอร์เนลต้องการล้างรายการในแคช มันจะวนอ่าน XArray ด้วย xa_for_each() และเรียก vgic_put_irq() เพื่อปล่อยจำนวนการอ้างอิงในแต่ละรายการ ปัญหาคือ xa_for_each() อาจคืนค่ารายการที่ถูกลบไปแล้วโดยการทำงานอื่นที่ขนานกัน เช่น คำสั่ง DISCARD ITS ที่ส่งมาจาก vCPU อีกตัวหนึ่ง ลูปการล้างแคชก็ยังคงลดการอ้างอิงของรายการที่ถูกลบไปแล้วนั้น ทำให้เกิดการปล่อยการอ้างอิงซ้ำซ้อน (Double-Put) และท้ายที่สุดคือ Use-After-Free
ก่อนหน้านี้มีช่องโหว่ในโค้ดส่วนเดียวกันคือ CVE-2024-26598 ซึ่งได้แก้ไขปัญหา UAF ในเส้นทางการเรียกดูแคชบางส่วน โดยการเพิ่มจำนวนอ้างอิงภายใน vgic_its_check_cache() ก่อนปล่อยล็อก แต่การแก้ไขนั้นไม่ได้ครอบคลุมถึงเส้นทางการล้างแคช ทำให้ยังคงสามารถใช้ประโยชน์จาก Race นี้ผ่านลำดับขั้นตอนอื่นได้
แพตช์แก้ไข แพตช์จาก upstream ได้แก้ไข vgic_its_invalidate_cache() เพื่อให้ vgic_put_irq() ถูกเรียกใช้เฉพาะกับค่าที่ส่งคืนมาจาก xa_erase() เท่านั้น ไม่ใช่กับทุกรายการที่ iterator วนอ่านเจอ ข้อความของ commit ระบุว่า: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry"
เวอร์ชันที่ได้รับผลกระทบ
เริ่มมีปัญหา: ปลายเดือนเมษายน 2024 เมื่อมีการเพิ่ม LPI Translation Cache เข้าไปใน KVM/arm64
ช่วงเวลาที่มีช่องโหว่: เคอร์เนล upstream ที่สร้างขึ้นระหว่างประมาณเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026
แก้ไขแล้ว: แพตช์ upstream ถูก commit ในช่วงต้นเดือนมิถุนายน 2026 และรวมอยู่ในเคอร์เนลเสถียรรุ่น 6.x ล่าสุดและ Backport ของดิสทริบิวชันต่างๆ
โค้ดพิสูจน์แนวคิด (Proof-of-Concept Exploit) ฮยอนวู คิม เผยแพร่โค้ดโจมตีที่ใช้งานได้จริงบน GitHub ต่อสาธารณะ เมื่อประมาณวันที่ 9-10 มิถุนายน 2026 โดยใน Repository ประกอบด้วยซอร์สโค้ดฉบับเต็ม, คำแนะนำการทำซ้ำทีละขั้นตอน, และคำอธิบายทางเทคนิคของเทคนิคการโจมตี โค้ดนี้กระตุ้นให้เกิด Race โดยการประสานงานเธรดของ vCPU เพื่อส่งคำสั่ง DISCARD และค้นหาแคชแปลที่อยู่ของ LPI ไปพร้อม ๆ กัน ซึ่งจะทำให้เกิด Use-After-Free อย่างแม่นยำเพื่อรันโค้ดบนเครื่องโฮสต์
การที่ PoC ที่เชื่อถือได้ถูกเปิดเผยต่อสาธารณะ หมายความว่าสแกนเนอร์หาช่องโหว่ทั่วไปและนักโจมตีในโลกจริงสามารถนำช่องโหว่นี้ไปใช้เป็นอาวุธได้โดยง่ายดาย ทำให้ช่วงเวลาระหว่างการเปิดเผยข้อมูลและการโจมตีจริงสั้นลงอย่างมาก
การบรรเทาผลกระทบเร่งด่วนสำหรับผู้ให้บริการคลาวด์ ARM64 หากคุณดำเนินการโครงสร้างพื้นฐาน KVM บน arm64 แบบ Multi-Tenant — ไม่ว่าจะเป็น AWS Graviton, Ampere Altra หรือแพลตฟอร์มอื่น ๆ ที่คล้ายคลึงกัน — จงถือว่านี่คือรอบการอัปเดตแพตช์ฉุกเฉินทันที
อัปเดตเคอร์เนลของโฮสต์ตอนนี้ ติดตั้งเคอร์เนล -stable ล่าสุดที่มีแพตช์แก้ไขในช่วงต้นเดือนมิถุนายน 2026 หรือแพตช์ย้อนหลังจากดิสทริบิวชันของคุณ
ปิดการใช้งาน in-kernel vGIC-ITS สำหรับ Guest ที่ไม่น่าไว้วางใจ หากคุณไม่สามารถอัปเดตแพตช์ได้ทันที สำหรับ QEMU สามารถทำได้โดยบังคับให้การจำลอง GICv3 ITS ไปทำงานใน userspace หรือไม่เปิดเผยความสามารถ GICv3 ITS ให้กับผู้เช่าที่ไม่น่าไว้วางใจ
อย่าพึ่งการป้องกันจากภายใน Guest นี่คือบั๊กระดับไฮเปอร์ไวเซอร์ ไม่มีวิธีแก้ไขจากภายใน VM
ตรวจสอบระบบของคุณเพื่อหาเคอร์เนลที่มีช่องโหว่ โฮสต์ KVM บน arm64 ใด ๆ ที่รันเคอร์เนลที่สร้างขึ้นระหว่างเดือนเมษายน 2024 ถึงต้นเดือนมิถุนายน 2026 และมีการใช้งาน vGIC-ITS อยู่ในกลุ่มเสี่ยง
เฝ้าระวังร่องรอยการโจมตี จากการที่โค้ด PoC ถูกเผยแพร่สู่สาธารณะ มีความเป็นไปได้สูงที่จะมีการสแกนและพยายามโจมตีระบบ
An EPYC escape: Case-study of a KVM breakout - Project Zero