สรุปสั้น

นักวิจัยความปลอดภัยไซเบอร์จากบริษัท Exodus Intelligence เปิดเผยรายละเอียดทางเทคนิคและ exploit ทำงานได้จริงของช่องโหว่การคืนค่าหน่วยความจำ use-after-free ใน nftables ซึ่งเป็นระบบกรองแพ็กเก็ตของ Linux kernel ทำให้ผู้ใช้ในเครื่องทั่วไปสามารถยกระดับสิทธิ์เป็น root และสามารถทะลุทะลวงออกจาก container ทั้งหมดได้ ที่มีผลกระทบกับระบบปฏิบัติการ Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS และ Ubuntu 24.04 LTS ผู้ดูแลควรเช็ก security advisory ของดิสโทรของตน ทั้งนี้ Upstream Linux kernel แพตช์แล้วเมื่อ 5 กุมภาพันธ์ 2569 (commit f41c5d1) หากเครื่องยังไม่ได้ apt update && apt upgrade + reboot เลย จะมีความเปราะบางอยู่ ทั้งนี้ ยังไม่มีรายงานการโจมตีช่องโหว่นี้เป็นวงกว้าง และยังไม่พบผู้ก่อภัยคุกคามรายใดที่เกี่ยวข้องกับช่องโหว่นี้

รายละเอียดทางเทคนิคของช่องโหว่การคืนค่าหน่วยความจำ use-after-free ใน nftables ซึ่งเป็นระบบกรองแพ็กเก็ตของ Linux kernel รหัส CVE-2026-23111 นั้น ต้นเหตุของบั๊กคือเครื่องหมาย ! เพียงตัวเดียวที่ผู้พัฒนาใส่ผิดในฟังก์ชัน nft_map_catchall_activate() ทำให้ catchall element ของ pipapo-backed verdict map ที่ควรถูกเปิดใช้งานคืนค่าหน่วยความจำ เมื่อ transaction ถูกยกเลิกนั้น กลับถูกข้ามไป และเมื่อช่องโหว่นี้ถูกผูกกับ unprivileged user namespaces ผู้ใช้ในเครื่องทั่วไปสามารถยกระดับสิทธิ์เป็น root และสามารถทะลุทะลวงออกจาก container ทั้งหมดได้

บริษัท Exodus Intelligence สาธิตสำเร็จบนระบบปฏิบัติการ Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS และ Ubuntu 24.04 LTS ด้วยอัตราสำเร็จกว่า 99 เปอร์เซ็นต์บนเครื่องที่นิ่ง และราว 80 เปอร์เซ็นต์ภายใต้ heap pressure หนัก ก่อนหน้านี้กลุ่ม FuzzingLabs เคยปล่อย exploit แบบอิสระสำหรับ RHEL 10 ตั้งแต่ 16 เมษายน 2569 ก่อนงาน Pwn2Own Berlin โดย Ubuntu ให้คะแนน CVSS 7.8 (High) แพตช์ upstream ปล่อยตั้งแต่ 5 กุมภาพันธ์ 2569 ผ่าน kernel commit f41c5d1 ผู้ดูแลระบบควรอัปเดต kernel และรีบูตทันที โดยเฉพาะเครื่องที่อนุญาตให้ผู้ใช้หรือ workload ที่ไม่น่าเชื่อถือสร้าง user namespace ได้

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 8 มิถุนายน พ.ศ. 2569 ว่านักวิจัยความปลอดภัยไซเบอร์เผยแพร่ exploit สำเร็จรูปของช่องโหว่ use-after-free ใน Linux kernel ที่อนุญาตให้ผู้ใช้ในเครื่องไม่มีสิทธิ์ยกระดับเป็น root และทะลุ container ได้ในการโจมตีครั้งเดียว ช่องโหว่นี้ติดตามด้วยรหัส CVE-2026-23111 อยู่ในระบบกรองแพ็กเก็ต nf_tables ของ kernel และถูกแพตช์ upstream ตั้งแต่ 5 กุมภาพันธ์ 2569 บริษัท Exodus Intelligence ปล่อย walkthrough ทางเทคนิคแบบเต็มเมื่อ 8 มิถุนายน 2569 และไม่ใช่ exploit สาธารณะตัวแรก เพราะกลุ่ม FuzzingLabs ได้ปล่อย reproduction แบบอิสระไปก่อนตั้งแต่เดือนเมษายน 2569

ต้นเหตุของช่องโหว่อยู่ที่ตัวอักษรเดียว เป็นการใส่ ! ผิดที่ใน nf_tables และแพตช์ upstream แก้ด้วยการลบออกในบรรทัดเดียว Ubuntu ให้คะแนน CVSS 7.8 (High) หากดิสโทรของผู้ใช้ยังไม่ได้รวมแพตช์ ให้อัปเดตและรีบูตทันที เงื่อนไขที่ทำให้ exploit เข้าถึงได้นั้นพบบ่อยมาก คือมี nf_tables ร่วมกับ unprivileged user namespaces ซึ่งเป็นฟีเจอร์ของ Linux ที่ให้บัญชีผู้ใช้ทั่วไปสามารถทำตัวเหมือน root ใน sandbox ส่วนตัวและเข้าถึง kernel code ที่ปกติเอื้อมไม่ถึง ทั้งสองอย่างนี้ติดตั้งมาเป็นค่าเริ่มต้นบนเดสก์ท็อปและเซิร์ฟเวอร์ส่วนใหญ่ แม้ตัวบั๊กจะไม่มีช่องทางโจมตีจากระยะไกล แต่ผู้โจมตีจะใช้หลังจากได้ foothold เบื้องต้นแล้ว เพื่อเปลี่ยน shell ที่มีสิทธิ์ต่ำ container ที่ถูกเจาะ หรือบัญชีบริการ ให้กลายเป็น root บนเครื่อง host

นาย Oliver Sieber นักวิจัยจากบริษัท Exodus Intelligence ผู้พบบั๊กตั้งแต่ต้นปี 2568 ได้ผูก exploit เป็น local root แบบเต็ม โดย exploit ทริกเกอร์ use-after-free แล้วเลี่ยงกลไกป้องกันหน่วยความจำในตัวของ kernel จากนั้นยึดการควบคุม execution เพื่อมอบสิทธิ์ root ให้ตัวเองและทะลุออกจาก namespace ของ container เขาสาธิตบน Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS และ Ubuntu 24.04 LTS ขณะที่กลุ่ม FuzzingLabs reproduce บั๊กบน RHEL 10 ก่อนงาน Pwn2Own Berlin 2026 และสร้าง root exploit ตามเส้นทางต่างกัน

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

บั๊กเกิดในฟังก์ชัน nft_map_catchall_activate() ภายใน nftables subsystem ซึ่งเป็น framework กรองแพ็กเก็ตที่สร้างทับ Netfilter hooks เครื่องหมาย ! ที่วางผิดทำให้ฟังก์ชันข้าม catchall element ที่ inactive ระหว่าง abort process แทนที่จะ reactivate กลับ เมื่อ pipapo-backed verdict map ที่มี catchall element อ้างถึง chain ถูกลบ แล้ว transaction ถัดไปใน batch เดียวกันล้มเหลวจน trigger abort, catchall element ยังคงสถานะ inactive อย่างไม่ถูกต้อง chain reference counter ค้างอยู่ที่ 0 ทั้งที่ยังมี reference จริงอยู่ ผู้โจมตีจึงลบ chain ขณะที่ dangling pointer ยังอยู่ใน base chain rule ส่งผลให้เกิด use-after-free

Exploit ผูก transaction batch 4 ชุดเพื่อจัดการ generational cursor ของ nftables โดย batch 1 ลบ pipapo set แล้วบังคับ error เพื่อ trigger abort, batch 2 ส่ง transaction ที่ไม่มีพิษภัยเพื่อ toggle generation cursor, batch 3 ลบ pipapo set แบบสะอาดเพื่อลด reference counter ของ chain ลงเป็น 0, batch 4 ลบ chain ขณะที่ base chain ยังคง rule ที่อ้างถึงอยู่ จากนั้น exploit ทำ KASLR defeat โดยยึด freed kmalloc-cg-32 slab ด้วย seq_operations structure ผ่าน open("/proc/self/stat") แล้วรั่ว kernel function pointer ผ่าน NFT_MSG_GETRULE request และยึด kmalloc-cg-192 ด้วย nft_rule ปลอมเพื่อรั่ว heap address

การควบคุม control flow ทำได้โดยเขียนทับ pointer blob_gen_0 ของ chain ที่ถูกลบด้วย nft_expr_ops ปลอมที่ชี้ไปยัง ROP gadget (push rbx; pop rsp) จากนั้น ROP chain สุดท้ายเรียก commit_creds(&init_cred) เพื่อรับ root credential แล้วใช้ switch_task_namespaces() ทะลุ namespace isolation ออกไปยัง host เต็มรูปแบบ บน Ubuntu 24.04 ข้อจำกัดการสร้าง namespace ที่บังคับผ่าน AppArmor สามารถถูกเลี่ยงด้วย aa-exec -p trinity -- unshare -Urmin /bin/sh ก่อนรัน exploit

ผลกระทบต่อไทย

เซิร์ฟเวอร์ของหน่วยงานไทยจำนวนมากใช้ Linux distribution กลุ่ม Debian/Ubuntu ซึ่งอยู่ในรายการที่ได้รับผลกระทบจาก CVE-2026-23111 ทั้งเซิร์ฟเวอร์เว็บ ฐานข้อมูล cloud workload และระบบ container ความเสี่ยงสำคัญสำหรับองค์กรไทยคือผู้ให้บริการ shared hosting ผู้ให้บริการคลาวด์ Kubernetes cluster และ DevOps pipeline ที่อนุญาตให้สมาชิกในทีมหรือ workload ของลูกค้าสร้าง user namespace ได้ เพราะช่องโหว่นี้เปิดทางเปลี่ยน tenant ที่มีสิทธิ์ต่ำให้กลายเป็น root บน host และทะลุการแยกระบบ

ภัยคุกคามที่ใช้ exploit สาธารณะมีโอกาสกระจายเข้าสู่ไทยผ่าน botnet, crypto miner และ ransomware operator ที่ใช้ช่องโหว่ local privilege escalation ในขั้นตอน post-exploitation โดยเฉพาะเมื่อมี exploit code สาธารณะตั้งแต่เดือนเมษายน 2569 แล้ว นักพัฒนา web application และผู้ดูแล cloud-native ของไทยควรประเมินว่า workload ที่รันบน containerized environment มีเงื่อนไขครบ (nftables + user namespaces) หรือไม่ และวางแผนแพตช์ kernel โดยเร็ว

คำแนะนำ

อัปเดต kernel ตามดิสโทรที่ใช้ทันที Ubuntu มีแพตช์สำหรับเวอร์ชัน 22.04, 24.04 และ 25.10 ส่วน Debian แก้ไขใน Bookworm และ Trixie พร้อม backport 6.1 สำหรับ Bullseye LTS ขณะที่ Red Hat, SUSE และ Amazon Linux ก็ติดตามช่องโหว่นี้เช่นกัน ผู้ดูแลควรเช็ก security advisory ของดิสโทรของตน เนื่องจากเวอร์ชันที่แก้ไขแล้วต่างกัน หากยังแพตช์ไม่ได้ทันที ให้พิจารณาจำกัดการสร้าง unprivileged user namespace ด้วยคำสั่ง sysctl -w kernel.unprivileged_userns_clone=0 บนระบบที่นโยบายอนุญาต แม้จะเป็น mitigation เพียงบางส่วน แต่ช่วยตัดช่องทาง exploit ได้

จำกัดสิทธิ์การเข้าถึง shell ของ untrusted users และ workloads รวมถึงตรวจสอบ container ที่อนุญาตให้ user สร้าง namespace อย่างเข้มข้น ติดตั้ง EDR หรือ kernel-level monitoring เพื่อจับ pattern ของ ROP exploit chain เช่นการเรียก commit_creds หรือ switch_task_namespaces ที่ผิดบริบท

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