รู้จัก "Januscape" บั๊กอายุ 16 ปีที่เพิ่งถูกค้นพบ

ช่องโหว่นี้ถูกตั้งชื่อเท่ๆ ว่า "Januscape" (หมายเลขรหัส CVE-2026-53359) เป็นบั๊กประเภท Use-After-Free ที่อยู่ในไฮเปอร์ไวเซอร์ KVM ของ Linux โดยปัญหามันซ่อนอยู่ในส่วนของโค้ด Shadow MMU (Memory Management Unit) ซึ่งเป็นส่วนที่ KVM ใช้ร่วมกันทั้งบนสถาปัตยกรรม Intel และ AMD x86

ความพีคคือ บั๊กนี้ถูกปล่อยทิ้งไว้โดยไม่มีใครสังเกตเห็นมาตั้งแต่ปี 2010 (ยุค Linux Kernel 2.6.36) คิดดูครับว่ารอดสายตานักพัฒนาได้ยังไงตั้ง 16 ปี

คนที่ไปเจอแจ็กพอตนี้คือ Hyunwoo Kin (@v4bel) นักวิจัยด้านความปลอดภัย ซึ่งเขาบอกว่านี่คือช่องโหว่ประเภท Guest-to-Host (จากเครื่องจำลองทะลุไปเครื่องจริง) ตัวแรกของโลกเลยก็ว่าได้ ที่สามารถเจาะได้พร้อมกันทั้งบนชิป Intel และ AMD โดยใช้ตัวจุดชนวน (Trigger) ตัวเดียวกัน

และแน่นอนว่าผลงานระดับนี้ เขาได้ส่งมันเข้าร่วมโปรแกรม kvmCTF ของ Google ซึ่งเป็นโครงการล่าเงินรางวัล (Bug Bounty) ที่ให้รางวัลสูงสุดถึง $250,000 (ประมาณ 8.5-9 ล้านบาท) สำหรับคนที่สามารถเจาะทะลุระบบ KVM จาก Guest ไป Host ได้สำเร็จ

มันทำงานยังไง?

ปกติแล้ว เวลา KVM จะรัน VM มันจะต้องสร้างตารางจัดการหน่วยความจำ (Page Tables) ของตัวเองขึ้นมาเพื่อจำลองพื้นที่ให้ VM และเพื่อความรวดเร็ว เวลา KVM ต้องการหน้าบันทึกข้อมูลหน่วยความจำใหม่ มันก็จะพยายามมองหาหน้าเก่าที่เคยใช้แล้วเอามาเวียนเทียนใช้ซ้ำ (Reuse)

จุดบกพร่องอยู่ตรงนี้ครับ: > KVM ดันตรวจสอบเพื่อนำกลับมาใช้ใหม่ โดยดูแค่ "ตำแหน่งที่อยู่บนหน่วยความจำ" (Memory Address) เพียงอย่างเดียว แต่ดัน "ลืมเช็กประเภท" ของหน้านั้นๆ ผลคือมันดึงเอาหน้าบันทึกข้อมูลผิดประเภทมาใช้งาน ทำให้บันทึกภายในของ KVM เกิดการสับสนและปนเปื้อน

  • เคสส่วนใหญ่: ตัว Kernel ของเครื่อง Host จะรู้ตัวว่าระบบเริ่มรวนและเกิดความเสียหาย มันจึงทำการ "ชัตดาวน์ตัวเองทันที" เพื่อความปลอดภัย ซึ่งตัว Code สาธิต (PoC) ที่ปล่อยออกมาในสาธารณะตอนนี้จะทำให้เกิดอาการนี้ครับ คือ Guest VM สามารถสั่งล่ม (Panic) เครื่อง Host ส่งผลให้ VM ตัวอื่นๆ ที่อยู่บนเครื่องฟิสิคัลเดียวกันดับตามกันไปหมด
  • เคสร้ายแรง: ถ้าระบบยังไม่ทันเคลียร์ข้อมูล แล้วมีคนเอาช่องโหว่นี้ไปเขียนโค้ดสั่งการต่อ (Exploit) แฮกเกอร์จะสามารถเขียนข้อมูลลงในหน่วยความจำที่พวกเขาไม่ควรมีสิทธิ์เข้าถึงได้ ซึ่งนักวิจัยระบุว่า เขามีโค้ด Exploit เต็มรูปแบบที่ยังไม่ได้เปิดเผยต่อสาธารณะ ซึ่งสามารถยกระดับไปถึงขั้นรันโค้ดในฐานะ Root บนเครื่อง Host ได้เลยครับ

ใครที่ได้รับผลกระทบจากบั๊กนี้บ้าง?

โค้ดที่มีช่องโหว่นี้อยู่กับ Linux มานานมาก ตั้งแต่เดือนสิงหาคม 2010 และเพิ่งจะได้รับการแก้ไข (Merge เข้า Mainline) ไปเมื่อวันที่ 19 มิถุนายน 2026 ที่ผ่านมานี้เอง

การที่แฮกเกอร์จะโจมตีด้วยวิธีนี้ได้ ต้องเข้าเงื่อนไข 2 ข้อหลักๆ ครับ:

  1. แฮกเกอร์ต้องมีสิทธิ์เป็น Root อยู่ภายใน Guest VM (ซึ่งไม่ใช่เรื่องยากถ้าเป็นเคสเช่าบริการ Cloud Instance)
  2. เครื่อง Host ต้องเปิดใช้งาน Nested Virtualization (การทำ VM ซ้อน VM) เอาไว้ เพราะระบบนี้จะบังคับให้ KVM กลับไปใช้โค้ด Shadow MMU ตัวเก่าที่มีบั๊กนั่นเอง

ดังนั้น กลุ่มเสี่ยงที่สุดคือผู้ให้บริการคลาวด์ หรือสภาพแวดล้อมแบบ Multi-tenant (เครื่องเดียวแบ่งกันใช้หลายเจ้า) ที่เปิดให้ลูกค้าใช้ Nested Virtualization ได้ครับ

นอกจากนี้ ใน Linux บางค่าย เช่น RHEL ที่กำหนดให้สิทธิ์การเขียนไฟล์ /dev/kvm เป็นแบบสาธารณะ (0666) บั๊กนี้ก็อาจถูกใช้เพื่อยกระดับสิทธิ์ (Local Privilege Escalation) จากผู้ใช้ธรรมดาขึ้นเป็น Root บนเครื่องตัวเองได้อีกด้วย

ช่วงเวลามือขึ้นของนักวิจัย

สำหรับคุณ Hyunwoo Kim ช่วงนี้ถือเป็นช่วงท็อปฟอร์มมาก เพราะ Januscape ถือเป็นช่องโหว่ตัวที่ 3 ในรอบเวลาแค่ประมาณ 2 เดือนที่เขาค้นพบและเปิดเผยออกมา:

  • พฤษภาคม 2026: เปิดเผยช่องโหว่ Dirty Frag เจาะระบบ Page-cache เพื่อยึด Root บน Linux Distro หลักๆ
  • มิถุนายน 2026: เปิดเผยช่องโหว่ ITScape ซึ่งเป็นการเจาะทะลุ Guest-to-Host บนระบบ KVM/arm64 (ฝั่ง ARM)
  • กรกฎาคม 2026: เปิดเผย Januscape (รอบนี้เป็นฝั่ง x86 ทั้ง Intel และ AMD)

วิธีรับมือและแก้ไข

ข่าวดีคือผู้ดูแลระบบไม่ต้องรอลุ้นคะแนนความรุนแรง (CVSS Score) ครับ เพราะแพตช์แก้ไขอย่างเป็นทางการถูกปล่อยออกมาเรียบร้อยแล้วเมื่อวันที่ 4 กรกฎาคม 2026 ที่ผ่านมา โดยตัวแก้ไขเป็นเพียงโค้ดบรรทัดเดียวที่เพิ่มเข้าไปในฟังก์ชัน kvm_mmu_get_child_sp() เพื่อให้ระบบเช็กทั้งประเภท (Role) และตำแหน่งหน่วยความจำควบคู่กันไป

Linux Kernel เวอร์ชันเสถียรที่ได้รับการอุดรอยรั่วแล้ว ได้แก่:

  • 7.1.3
  • 6.18.38
  • 6.12.95
  • 6.6.144
  • 6.1.177
  • 5.15.211
  • 5.10.260

คำแนะนำสำหรับผู้ดูแลระบบ:

  1. ถ้าคุณรันเครื่อง Host x86 KVM และเปิดให้คนอื่นเช่าใช้งานโดยเปิด Nested Virtualization ไว้ ให้รีบตรวจสอบว่า Kernel ของคุณมี Commit หมายเลข 81ccda30b4e8 แล้วหรือยัง (แนะนำให้เช็กจาก Changelog ของค่าย OS ที่ใช้ อย่าดูแค่คำสั่ง uname -r เพราะบางค่ายใช้วิธี Backport โค้ดมาใส่ในเวอร์ชันเก่า)
  2. หากยังไม่สามารถอัปเดตแพตช์ได้ในทันที ให้ทำการปิดใช้งาน Nested Virtualization ไปก่อน โดยใช้คำสั่งเปลี่ยนค่าคอนฟิกเป็น kvm_intel.nested=0 หรือ kvm_amd.nested=0 เพื่อตัดเส้นทางโจมตีของแฮกเกอร์ครับ
เรื่องความปลอดภัยห้ามรอช้าครับ ใครมีเซิร์ฟเวอร์ในดูแล รีบไปเช็กและอัปเดตกันด่วนๆ เลยนะครับ ส่วนผม "ข่าวไอที" ต้องขอตัวไปเช็กระบบของตัวเองก่อนเหมือนกัน แล้วพบกันใหม่ในบทความหน้าครับ!

#ดรกฤษฎาแก้ววัดปริง #ไทยสมาร์ทซิตี้ #SmartCity #DRKRIT #สมาร์ทซิตี้คลิก