สรุปสั้น

เซิร์ฟเวอร์ลินุกซ์ที่เปิดใช้ KSMBD ซึ่งเป็นเซิร์ฟเวอร์ SMB ที่ฝังอยู่ในเคอร์เนล เสี่ยงต่อช่องโหว่รันโค้ดจากระยะไกล (RCE) 2 รายการที่โครงการ Zero Day Initiative (ZDI) ของบริษัท Trend Micro ให้คะแนน CVSS 9.0 ทั้งคู่ และถูกรายงานผ่านเมลลิงลิสต์สาธารณะของเคอร์เนลไปแล้ว ขณะที่ยังไม่มีการแก้ไขใน mainline kernel ช่องโหว่ ZDI-CAN-33774 ถูกกระตุ้นได้ก่อนการยืนยันตัวตนบนเครือข่าย จึงกระทบทุกเซิร์ฟเวอร์ที่รัน KSMBD บนพอร์ต 445 ส่วน ZDI-CAN-33549 ต้องอาศัยทรานสปอร์ต SMB Direct และการ์ดเครือข่ายที่รองรับ RDMA

ทั้งสองยังไม่มีเลข CVE เพราะโครงการเคอร์เนลออกเลข CVE หลังมีการแก้ไขใน stable tree แล้วเท่านั้น และแม้แพตช์จะเข้าสู่ mainline ก็มักใช้เวลาหลายสัปดาห์กว่าจะไปถึงเคอร์เนลของ distro ต่าง ๆ ช่วงนี้จึงเป็นช่องว่างที่รายละเอียดช่องโหว่เปิดเผยแล้วแต่ยังไม่มีทางแก้ ผู้ดูแลระบบควรตรวจว่าเปิด KSMBD อยู่หรือไม่ และปิดหรือจำกัดการเข้าถึงพอร์ต 445 จนกว่าจะมีแพตช์

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 22 ตุลาคม 2569 ว่ารายงานช่องโหว่ทั้งสองระบุว่าผู้ค้นพบคือ TrendAI ซึ่งเป็นเครื่องมือสแกนช่องโหว่ด้วย AI ของ Trend Micro เอกสารด้านความปลอดภัยของเคอร์เนลลินุกซ์ที่ปรับปรุงเมื่อเดือนพฤษภาคม 2569 ตามแนวทางของนาย Linus Torvalds ระบุว่าบั๊กที่พบด้วยเครื่องมือ AI ให้ถือว่าเป็นข้อมูลสาธารณะอยู่แล้วโดยนิยาม และควรส่งไปยังเมลลิงลิสต์ของนักพัฒนา subsystem นั้นโดยตรง ZDI ดูจะทำตามตรรกะนี้ โดยส่งรายงานเข้าเมลลิงลิสต์สาธารณะพร้อมกับอีเมลทีมความปลอดภัยของเคอร์เนลแบบส่วนตัว แต่ไม่แนบแพตช์มากับรายงานใดเลย

นาย Greg Kroah-Hartman ผู้ดูแล stable kernel ตอบรายงาน 3 ใน 5 ฉบับห่างกันเพียงไม่กี่วินาที โดยตอบรายงานเรื่องไดรเวอร์ GPU ของ VMware ว่า “ด้วยเหตุผลบางอย่างคุณส่งเรื่องนี้เข้าลิสต์สาธารณะ และไม่ได้แนบแพตช์มา เราจึงทำอะไรกับมันได้ไม่มาก” และอีก 17 วินาทีต่อมาก็ตอบรายงานเรื่องไดรเวอร์ NVMe ว่า “อีกแล้ว ไม่มีแพตช์ และส่งเข้าลิสต์สาธารณะ ช่วยแก้กระบวนการส่งรายงานด้วย”

ณ วันพฤหัสบดี ช่องโหว่ทั้งสองยังไม่มีการแก้ไขที่ระบุชื่อชัดเจนทั้งใน mainline และใน linux-next ซึ่งเป็น integration tree ที่ป้อนโค้ดเข้า mainline เว็บไซต์ Phoronix รายงานว่านาย Stefan Metzmacher ผู้ดูแล SMB Direct ส่งแพตช์แก้ ZDI-CAN-33549 เพื่อเข้ารอบพัฒนาเคอร์เนลถัดไปแล้ว แต่ข้อมูลนี้ยังไม่ได้รับการยืนยันจากแหล่งอื่น ส่วน ZDI-CAN-33774 ที่โจมตีได้โดยไม่ต้องยืนยันตัวตนยังไม่มีรายงานว่ามีแพตช์

รายละเอียดช่องโหว่

ZDI-CAN-33774 เป็น race condition ในขั้นตอนที่ KSMBD กำหนดตารางตัวจัดการ (handler table) ของโปรโตคอล ผู้โจมตีส่งแพ็กเก็ต SMB1 สั้น ๆ ชุดหนึ่งตามด้วยแพ็กเก็ต SMB2 ใน TCP write เดียวกัน ทำให้ worker นำตัวจัดการของ SMB2 มาประมวลผลข้อมูล SMB1 และอ่านเลยท้ายบัฟเฟอร์ที่สั้นกว่า ช่องโหว่นี้ไม่ต้องยืนยันตัวตน เซิร์ฟเวอร์ใดก็ตามที่รัน KSMBD บนพอร์ต 445 จึงอยู่ในขอบเขต และหากผู้โจมตีเข้าถึง share ได้ ก็มีเส้นทางไปสู่การเขียนเลยขอบบัฟเฟอร์ด้วย

ZDI-CAN-33549 เป็น integer underflow ในเส้นทาง SMB Direct ของ KSMBD ไคลเอนต์สามารถส่ง RDMA buffer descriptor ที่ตัวแรกยาวกว่าขนาด payload ที่ประกาศไว้ ทำให้ตัวนับขนาดฝั่งเซิร์ฟเวอร์วนกลับ (wrap) และการคัดลอกหน่วยความจำครั้งถัดไปเขียนเลยท้ายบัฟเฟอร์ที่จองไว้ การโจมตีต้องมีองค์ประกอบครบ 3 อย่าง คืออินเทอร์เฟซที่รองรับ RDMA (ฮาร์ดแวร์จริงหรือไดรเวอร์ซอฟต์แวร์ rxe) share ของ KSMBD ที่เขียนได้ และไคลเอนต์ที่เจรจาใช้ SMB Direct

รายงานชุดเดียวกันของ ZDI ยังมีช่องโหว่เคอร์เนลอีก 3 รายการที่ไม่เกี่ยวกับ SMB และไม่กระทบเซิร์ฟเวอร์ KSMBD ได้แก่ ZDI-CAN-33367 การยกระดับสิทธิ์ภายในเครื่องใน networking stack (skb_zerocopy) ที่นักวิจัย p1r0x ค้นพบ ZDI-CAN-34068 การยกระดับสิทธิ์ในไดรเวอร์ GPU เสมือนของ VMware (vmwgfx) และ ZDI-CAN-34076 การเปิดเผยข้อมูลในไดรเวอร์ NVMe target (nvmet) นอกจากนี้ยังมีรายงานฉบับที่หก ZDI-CAN-32005 ซึ่งเป็น buffer overflow ใน ConnMan ดีมอนเครือข่ายที่แยกจากเคอร์เนล

ZDI IDส่วนประกอบประเภทCVSSกระทบ KSMBD
ZDI-CAN-33549KSMBD SMB Directรันโค้ดจากระยะไกล9.0ใช่ (ต้องใช้ SMB Direct + RDMA)
ZDI-CAN-33774KSMBD protocol dispatchรันโค้ดจากระยะไกล9.0ใช่ (ทุกการติดตั้ง KSMBD)
ZDI-CAN-33367Networking (skb_zerocopy)ยกระดับสิทธิ์ภายในเครื่อง7.8ไม่
ZDI-CAN-34068ไดรเวอร์ GPU VMware (vmwgfx)ยกระดับสิทธิ์ภายในเครื่อง8.8ไม่
ZDI-CAN-34076ไดรเวอร์ NVMe target (nvmet)เปิดเผยข้อมูล8.6ไม่

ผลกระทบ

ความเสี่ยงหลักตกอยู่กับเซิร์ฟเวอร์ไฟล์ อุปกรณ์ NAS และระบบฝังตัวที่เลือกใช้ KSMBD แทน Samba เพื่อประสิทธิภาพ เพราะ ZDI-CAN-33774 เปิดให้ผู้โจมตีที่เข้าถึงพอร์ต 445 ได้รันโค้ดในระดับเคอร์เนลโดยไม่ต้องมีบัญชี ซึ่งหมายถึงการยึดเครื่องได้ทั้งเครื่อง ส่วน ZDI-CAN-33549 จำกัดวงอยู่ในสภาพแวดล้อมศูนย์ข้อมูลหรือ HPC ที่ใช้ SMB Direct บนเครือข่าย RDMA แต่ระบบเหล่านี้มักเก็บข้อมูลปริมาณมากและสำคัญ ข้อดีคือ Red Hat Enterprise Linux ไม่ได้รวม KSMBD มาเป็นค่าเริ่มต้นตามเอกสารซัพพอร์ตของ Red Hat ทำให้วงกระทบในเซิร์ฟเวอร์องค์กรทั่วไปแคบลง

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

คำแนะนำ

  • ตรวจว่า KSMBD ทำงานอยู่หรือไม่ด้วย systemctl status ksmbd หรือ lsmod | grep ksmbd
  • หากไม่จำเป็นต้องใช้ ให้หยุดบริการและป้องกันการโหลดโมดูล เช่น systemctl disable --now ksmbd และใส่ blacklist ksmbd ใน /etc/modprobe.d/
  • หากต้องใช้ ให้บล็อกพอร์ต 445 จากอินเทอร์เน็ตและจำกัดให้เข้าถึงได้เฉพาะเครือข่ายหรือโฮสต์ที่ไว้วางใจ
  • ระบบที่ใช้ SMB Direct บน RDMA ให้พิจารณาปิด SMB Direct ชั่วคราว และตรวจสิทธิ์ของ share ที่เขียนได้
  • ติดตาม linux-next, stable tree และประกาศของ distro ที่ใช้ เพื่ออัปเดตเคอร์เนลทันทีเมื่อมีแพตช์และเลข CVE
  • เฝ้าระวังล็อกและทราฟฟิก SMB ที่ผิดปกติ เช่น แพ็กเก็ต SMB1 จำนวนมากตามด้วย SMB2 ในการเชื่อมต่อเดียวกัน หรือ kernel oops ที่เกี่ยวกับ ksmbd

แหล่งอ้างอิง