AI ของ OpenAI พบ 948 วิธีเจาะสิทธิ์ Root บน Linux — API Server ของคุณอัปเดตแพตช์แล้วหรือยัง?

ระบบ pipeline ของ OpenAI สามารถสร้าง Linux root exploit ที่ไม่ซ้ำกันได้ถึง 948 รายการ ด้วยต้นทุนเพียงรายการละ 1,279 ดอลลาร์ บทความนี้จะพาไปดูว่าเรื่องนี้ส่งผลอย่างไรต่อ API server พร้อมวิธีตรวจสอบเคอร์เนลและสถานะการแพตช์ของคุณได้ภายใน 2 นาที...

INEZA Felin-Michel

INEZA Felin-Michel

5 November 2026

AI ของ OpenAI พบ 948 วิธีเจาะสิทธิ์ Root บน Linux — API Server ของคุณอัปเดตแพตช์แล้วหรือยัง?

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

ช่องโหว่ระดับ root บน Linux จำนวน 948 รายการที่ OpenAI ค้นพบ ได้เปลี่ยนสมมติฐานสำคัญของทีมพัฒนา API ไปอย่างสิ้นเชิง นั่นคือ ช่องทางเจาะระบบที่ได้สิทธิ์ระดับต่ำ (low-privileged foothold) บนเซิร์ฟเวอร์ที่ยังไม่ได้แพตช์ อาจไม่ได้หยุดอยู่แค่สิทธิ์ระดับต่ำอีกต่อไป จงตรวจสอบเคอร์เนลที่กำลังรันอยู่ อัปเดตแพตช์ความปลอดภัยของ distro ที่คุณใช้ รีบูตเข้าสู่เคอร์เนลใหม่ และจำกัดขอบเขตการเข้าถึงของโพรเซสที่อาจถูกเจาะ ช่องโหว่เหล่านี้เป็นบั๊กระดับเครื่อง (local bugs) ผู้โจมตีจึงจำเป็นต้องหาช่องทางเจาะเข้ามาในระบบให้ได้ก่อน และไม่ได้เป็น remote exploit ในตัวเอง

uname -r              # the kernel you're running now
cat /etc/os-release   # your distro and version
uptime                # how long since the last reboot

สรุปประเด็นสำคัญ (TL;DR)

สิ่งที่ OpenAI ค้นพบ: ตัวเลขสถิติที่น่าสนใจ

รายงานของ OpenAI ในชื่อ “A thousand fewer paths to root” ซึ่งเผยแพร่เมื่อวันที่ 4 พฤศจิกายน 2026 ได้ระบุถึงการทดสอบในช่วงกลางเดือนตุลาคมกับเคอร์เนล Linux เวอร์ชันล่าสุด โดยใช้โมเดล AI ด้านความปลอดภัยไซเบอร์รุ่นใหม่ที่กำลังจะเปิดตัว ช่องโหว่เหล่านี้ได้รับการทดสอบบนระบบปฏิบัติการเดสก์ท็อปมาตรฐานจากดิสโทรยอดนิยม พร้อมเปิดใช้งานกลไกป้องกันมาตรฐานครบถ้วน (SMEP, SMAP, KASLR, HARDENED_USERCOPY) ภายใต้สภาพแวดล้อม Virtual Machine แบบแยกส่วน

รายการ ผลลัพธ์
เป้าหมายในการตรวจสอบ 5,034 รายการ (โค้ดประมาณ 2.8 ล้านบรรทัด หรือราว 7% ของเคอร์เนล)
รายการที่ตรวจพบเบื้องต้น 2,308 รายการ
จำลองการโจมตีซ้ำได้จริง (Dynamically reproduced) 1,724 รายการ (ประมาณ 74.7%)
Proof of concept ช่องโหว่ข้อมูลรั่วไหล 291 รายการ
LPE exploit ที่ใช้งานได้จริง 1,169 รายการ
LPE ที่ไม่ซ้ำกันหลังวิเคราะห์รูปแบบซ้ำซ้อน (Variant analysis) 948 รายการ
ค่าใช้จ่าย API รวม 1,213,430 ดอลลาร์ (1,279 ดอลลาร์ต่อหนึ่งช่องโหว่ LPE)
การทดสอบรอบเดือนกรกฎาคมด้วย GPT-5.6 Sol LPE ที่ไม่ซ้ำกัน 166 รายการ โดยใช้ต้นทุน 513,690 ดอลลาร์
สถานะหลังการสแกนต่อเนื่อง 10 วัน แพตช์ขึ้น upstream แล้ว 61 รายการ, มีแพตช์ในสถานะ staging 43 รายการ, อยู่ระหว่างการอภิปรายสาธารณะ 299 รายการ

OpenAI เรียกต้นทุนที่เกิดขึ้นนี้ว่า “ค่อนข้างเป็นเพดานราคาระดับสูง (upper bound)” เนื่องจากยังไม่ได้มีการปรับแต่งกระบวนการเพื่อลดค่าใช้จ่าย นอกจากนี้ การทดสอบในรอบเดือนตุลาคมยังค้นพบช่องโหว่ LPE รูปแบบใหม่มากกว่ารอบเดือนกรกฎาคมถึงกว่า 5 เท่า แม้จะมีการยกระดับความปลอดภัยของเคอร์เนลมาตลอดช่วง 3 เดือนระหว่างการทดสอบทั้งสองรอบก็ตาม

OpenAI ระบุว่าได้ส่งรายงานและแพตช์สำหรับช่องโหว่ระดับวิกฤตไปแล้วหลายร้อยรายการ และกำลังทยอยส่งส่วนที่เหลือร่วมกับพันธมิตรในโครงการ Patch the Planet รายละเอียดของ exploit ยังคงถูกเก็บเป็นความลับ ซึ่งรวมถึงเทคนิคใหม่ที่ไม่เคยปรากฏมาก่อนอย่างน้อย 10 เทคนิค ดังนั้นจึงไม่มีรายชื่อช่องโหว่ให้คุณนำไปเทียบกับเคอร์เนลที่ใช้อยู่ได้โดยตรง และการที่แพตช์ได้รับการผสานรวมเข้าสู่ upstream แล้ว ก็ไม่ได้หมายความว่า distro ที่คุณใช้งานจะส่งมอบแพตช์นั้นมาให้อัปเดตแล้วเช่นกัน

ความหมายของคำว่า “Local” สำหรับ API Server

ช่องโหว่ประเภท Local Privilege Escalation ช่วยให้ผู้ใช้ที่สามารถรันโค้ดบนเครื่องอยู่แล้วยกระดับสิทธิ์ขึ้นเป็น root ได้ จึงไม่มีใครสามารถทริกเกอร์ช่องโหว่นี้ได้เพียงแค่ส่งคำขอ (request) มายัง API ของคุณ ผู้โจมตีจำเป็นต้องมีช่องทางเจาะขั้นแรก (foothold) เสียก่อน เช่น การรันโค้ดภายในเซอร์วิสของคุณ หรือได้เชลล์ผ่านข้อมูลล็อกอินที่ถูกขโมย บั๊กของเคอร์เนลจึงเป็นเพียงก้าวที่สองเท่านั้น

สำหรับ API Server แล้ว ช่องทางในการสร้างก้าวแรกนั้นมีอยู่มากมาย:

ก่อนหน้านี้คุณอาจมองว่าการที่ผู้โจมตีเจาะเข้ามาได้ในก้าวแรกนั้นยังถูกจำกัดวงไว้อยู่ เพราะโพรเซสรันด้วยสิทธิ์ของผู้ใช้ทั่วไป (unprivileged user) แต่มุมมองของ OpenAI ทำลายความอุ่นใจดังกล่าวสำหรับระบบที่ไม่ได้อัปเดตแพตช์และต้องเผชิญกับผู้โจมตีที่มีทรัพยากรเพียบพร้อม คุณจึงควรวางแผนรับมือโดยตั้งสมมติฐานว่า บั๊กแรกที่เกิดขึ้นในระบบ API สามารถนำไปสู่การยึดสิทธิ์ root บนโฮสต์เครื่องนั้นได้ทันที

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

วิธีตรวจสอบเคอร์เนลและสถานะแพตช์ของคุณใน 2 นาที

คำสั่ง uname -r จะบอกเฉพาะเวอร์ชันที่กำลังทำงานอยู่ ไม่ใช่เวอร์ชันที่ติดตั้งลงในเครื่องแล้ว เซิร์ฟเวอร์อาจมีเคอร์เนลเวอร์ชันใหม่อยู่บนดิสก์แล้วแต่ยังคงรันเคอร์เนลเวอร์ชันเดิมอยู่จนกว่าจะมีการรีบูต ช่องว่างตรงนี้คือสิ่งแรกที่คุณต้องตรวจสอบ

Distro แสดงรายการอัปเดตที่รออยู่ ติดตั้งอัปเดต ต้องรีบูตหรือไม่? ตรวจสอบ Live patch ที่โหลดอยู่
Ubuntu apt list --upgradeable sudo apt update && sudo apt upgrade ls /var/run/reboot-required canonical-livepatch status --verbose
Debian apt list --upgradeable sudo apt update && sudo apt upgrade sudo needrestart -k ไม่ได้กล่าวถึงในที่นี้
RHEL 9 dnf updateinfo list updates security sudo dnf upgrade --security dnf needs-restarting -r sudo kpatch list
Amazon Linux 2023 sudo dnf updateinfo list sudo dnf upgrade --security เปรียบเทียบ uname -r กับ sudo dnf list kernel sudo kpatch list

สำหรับ RHEL คำสั่ง needs-restarting -r จะคืนค่า exit code เป็น 1 หากจำเป็นต้องรีบูต และเป็น 0 หากไม่ต้องรีบูต ทำให้คุณสามารถเขียนสคริปต์ตรวจสอบเซิร์ฟเวอร์ทั้งคลัสเตอร์ได้ ส่วนบน Debian คำสั่ง needrestart -k จะใช้ตรวจสอบว่ากำลังรันเคอร์เนลเวอร์ชันเก่าที่ล้าสมัยอยู่หรือไม่

การทำ Live patching ช่วยได้ในระดับหนึ่ง แต่ก็มีข้อจำกัด:

ควรมองว่า live patch เป็นเพียงสะพานเชื่อมชั่วคราวก่อนถึงการรีบูตครั้งถัดไป และควรลดรอบระยะเวลาในการรีบูตระบบให้สั้นลง

คอนเทนเนอร์ใช้งานเคอร์เนลร่วมกับโฮสต์

คอนเทนเนอร์ไม่ได้มีเคอร์เนลแยกต่างหากเป็นของตัวเอง หากคุณรันคำสั่ง uname -r ภายในคอนเทนเนอร์ของ API คุณจะเห็นเวอร์ชันเดียวกับเครื่องโฮสต์ การอัปเดต base image ไม่ได้ส่งผลใดๆ ต่อเคอร์เนล ดังนั้นช่องโหว่ของเคอร์เนลที่เข้าถึงได้จากภายในคอนเทนเนอร์จึงเป็นเส้นทางทะลุไปสู่เครื่องโฮสต์ได้โดยตรง

สำหรับคลัสเตอร์ Kubernetes คุณสามารถใช้คำสั่งเดียวเพื่อตรวจสอบเคอร์เนลของทุกโหนดได้ในคอลัมน์ KERNEL-VERSION:

kubectl get nodes -o wide

เส้นทางการเจาะระบบแบบนี้เคยเกิดขึ้นจริงมาแล้ว โดยในอีกเหตุการณ์หนึ่ง SecurityWeek รายงานว่า เอเจนต์ของ OpenAI เคยเจาะช่องโหว่เคอร์เนลที่เป็นที่รู้จักอย่าง CVE-2026-53362 จนสามารถยึดสิทธิ์ root บน worker node จากภายในคอนเทนเนอร์ในสภาพแวดล้อมระบบของ OpenAI เอง ซึ่งบั๊กดังกล่าวไม่ใช่หนึ่งใน 948 รายการนี้

OpenAI ได้เสนอ 2 ตัวเลือกในการจำกัดขอบเขตความเสียหาย (blast radius) ด้วยการทำ Isolation:

ตัวเลือก รูปแบบการแยกส่วน (Isolation) เหมาะสำหรับ
gVisor A userspace application kernel handles the container’s system calls instead of passing them to the host kernel คอนเทนเนอร์ที่ต้องรันโค้ดที่ไม่น่าไว้วางใจ หรือต้องประมวลผลอินพุตที่มีความเสี่ยงสูง
Firecracker Runs workloads in lightweight microVMs on KVM, with hardware-level isolation บริการแบบ Multi-tenant และเวิร์กโหลดที่แยกตามลูกค้ารายบุคคล

ใน Kubernetes คุณสามารถเลือก sandboxed runtime สำหรับแต่ละ pod ได้โดยใช้ RuntimeClass โดยควรกำหนด runtimeClassName ให้กับเวิร์กโหลดที่มีความเสี่ยงสูงสุดเป็นอันดับแรก เช่น เซอร์วิสใดก็ตามที่ต้องรันโค้ดของลูกค้า

นอกจากนี้ เลเยอร์เหล่านี้ก็จำเป็นต้องได้รับการแพตช์ด้วยเช่นกัน OpenAI ระบุว่าการทดสอบโครงสร้างพื้นฐานของตนเองได้นำไปสู่การเปิดเผยและแพตช์ช่องโหว่ใน Kata, Moby/Docker, gVisor และโปรเจกต์อื่นๆ แม้ว่า sandbox จะช่วยจำกัดขอบเขตความเสียหายได้ แต่ตัวมันเองก็ยังคงเป็นซอฟต์แวร์ที่มีโอกาสเกิดบั๊กได้เช่นกัน

จำกัดขอบเขตความเสียหายหากถูกเจาะระบบ

ตั้งสมมติฐานไว้ก่อนว่าการถูกยึดสิทธิ์ root บนโฮสต์เครื่องหนึ่งนั้นเป็นไปได้ จากนั้นจึงกำหนดว่าสิทธิ์ root บนโฮสต์เครื่องนั้นจะสามารถเข้าถึงสิ่งใดได้บ้าง

Attack chain from a stolen token or dependency RCE to a low-privileged shell in an API container, then root on the host, then every container, secret and token on the node, with a patched kernel and sandbox blocking the second step and least privilege blocking the last
  1. แยก Service Account ที่ใช้ร่วมกัน: ควรกำหนดตัวตน (identity) แยกเฉพาะสำหรับแต่ละเซอร์วิส เพื่อไม่ให้ข้อมูลประจำตัวที่ถูกขโมยไปเพียงชุดเดียวสามารถเข้าถึงได้ทุกระบบในองค์กร แนวทางของเราเกี่ยวกับ การกำหนดคีย์ API ตามหลัก Least Privilege สำหรับเอเจนต์ สามารถนำมาปรับใช้กับเซอร์วิสทั่วไปได้เช่นกัน
  2. ตัดโทเคนที่ไม่จำเป็นสำหรับเวิร์กโหลดออก: ใน Kubernetes ควรกำหนดค่า automountServiceAccountToken: false ให้กับ pod ที่ไม่มีความจำเป็นต้องเรียกใช้งาน Kubernetes API
  3. หลีกเลี่ยงการเก็บ Secret อายุการใช้งานยาวนานไว้บนโหนด: สิทธิ์ root สามารถอ่านค่า environment variable และไฟล์ที่ mount อยู่ได้ทั้งหมด จึงควรเปลี่ยนมาใช้ข้อมูลยืนยันตัวตนแบบมีอายุสั้น (short-lived credentials) แทน
  4. หมุนเวียนคีย์ทันทีเมื่อพบการบุกรุก: หากตรวจพบการรันโค้ดแปลกปลอมบนโฮสต์ ให้สันนิษฐานไว้ก่อนว่า secret ทุกตัวบนเครื่องนั้นหลุดออกไปแล้ว การที่บัญชีผู้ใช้ดูปกติไม่ได้เป็นหลักประกันว่าเครื่องจะไม่ถูกยึดสิทธิ์ root ไปแล้ว

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

ให้ Coding Agent ช่วยทดสอบ API หลังจากการอัปเดตแพตช์

อุปสรรคที่แท้จริงของการอัปเดตเคอร์เนลบ่อยๆ คือความกลัวผลกระทบจากการรีบูตเครื่อง แต่การรัน Regression test ทั้งก่อนและหลังรีบูตจะช่วยคลายความกังวลนี้ได้ คุณสามารถสั่งให้ coding agent รันชุดทดสอบด้วย Apidog CLI ชุดเดียวกันทั้งก่อนและหลังการอัปเดต แล้วนำผลลัพธ์มาเปรียบเทียบกัน

ตั้งค่าเพียงครั้งเดียว:

npm install -g apidog-cli@latest
apidog login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com   # pick your agent when prompted

จากนั้นส่ง Prompt ให้เอเจนต์ของคุณเพียงข้อความเดียว:

Find my API regression suite in Apidog project <id> and run it against the
staging environment. Save the reports to reports/before. Stop and wait while
I update the kernel and reboot. When I say done, run the same suite to
reports/after, compare both reports, and list every request whose status or
assertion result changed.

ตัวเอเจนต์จะรันคำสั่งเหล่านี้:

apidog test-suite list --project <id>
apidog run --test-suite <id> --project <id> -e <envId> -r cli,junit --out-dir reports/before
# you update the kernel and reboot
apidog run --test-suite <id> --project <id> -e <envId> -r cli,junit --out-dir reports/after

เริ่มต้นทดสอบบน staging ก่อน จากนั้นจึงทำซ้ำบนโหนด production หนึ่งเครื่องก่อนจะทยอยอัปเดตไปทั่วทั้งคลัสเตอร์ หากมี request ใดที่มีสถานะหรือผลลัพธ์เปลี่ยนแปลง คุณจะทราบจุดที่ต้องตรวจสอบได้ทันทีก่อนที่โหนดอื่นๆ จะได้รับผลกระทบ

รายงานจากเอเจนต์จำเป็นต้องได้รับการตรวจสอบอย่างรอบคอบเช่นเดียวกับไปป์ไลน์ของ OpenAI ซึ่งในการทดสอบช่วงแรก พบว่ามี exploit ถึง 20 จาก 200 ตัวที่สามารถยึดสิทธิ์ root ได้ผ่านช่องโหว่ 0-day ตัวอื่นที่ไม่ใช่ตัวที่กำหนดไว้ OpenAI จึงต้องเพิ่มกระบวนการตรวจสอบแบบอิสระ ดังนั้นจึงควรตรวจสอบที่มาที่ไปของผลลัพธ์ ไม่ใช่ดูแค่ผลลัพธ์สุดท้ายเพียงอย่างเดียว โดยยืนยันด้วยคำสั่ง uname -r หรือเครื่องมือ live patch ว่าการอัปเดตมีผลจริง ก่อนที่จะปักใจเชื่อรายงานผลหลังการรีบูต

การรันคำสั่งพร้อมตัวเลือก -r junit เช่นนี้สามารถนำไปผสานรวมเข้ากับ CI ได้อย่างราบรื่น สามารถดูรายละเอียดเพิ่มเติมได้ที่ คู่มือการใช้ Apidog CLI ใน CI/CD, เอกสารอ้างอิงคำสั่ง apidog run และบทความแนะนำเกี่ยวกับ การทำ API regression testing ทั้งนี้ แพ็กเกจ Free ของ Apidog รองรับผู้ใช้งานสูงสุด 4 คน

สิ่งที่ต้องจับตาดูต่อไป

คำถามที่พบบ่อย (FAQ)

ช่องโหว่ Linux ทั้ง 948 รายการนี้โจมตีจากระยะไกล (remote) ได้หรือไม่? ไม่ได้ ช่องโหว่เหล่านี้เป็นประเภท Local Privilege Escalation ผู้โจมตีจึงต้องสามารถรันโค้ดในฐานะผู้ใช้สิทธิ์ระดับต่ำในเครื่องได้ก่อน อย่างไรก็ตาม ช่องโหว่ระยะไกลในระดับแอปพลิเคชันของคุณอาจกลายเป็นบันไดขั้นแรกให้ผู้โจมตีเข้ามาได้ นี่จึงเป็นเหตุผลที่ทีมพัฒนา API ไม่ควรมองข้าม

เคอร์เนลเวอร์ชันที่ฉันใช้อยู่ได้รับผลกระทบหรือไม่? OpenAI ไม่ได้เผยแพร่รายชื่อเวอร์ชันที่ได้รับผลกระทบ จึงไม่มีใครสามารถระบุเวอร์ชันที่ปลอดภัยได้อย่างแน่นอน สิ่งที่ควรทำคือติดตั้งอัปเดตความปลอดภัยล่าสุดของ distro ที่คุณใช้ และรีบูตระบบเข้าสู่เคอร์เนลใหม่

ช่องโหว่เหล่านี้ถูกนำไปใช้โจมตีจริงในโลกภายนอกแล้วหรือยัง? รายงานของ OpenAI ไม่ได้ระบุว่ามีการโจมตีจริงโดยใช้ช่องโหว่ทั้ง 948 รายการนี้ หลายรายการยังคงอยู่ในขั้นตอนการเปิดเผยข้อมูลและการจัดทำแพตช์ แต่คุณก็ควรอัปเดตแพตช์ทันที เพราะการปล่อยโค้ดแก้ไขสู่สาธารณะอาจเป็นลายแทงชี้เป้าให้ผู้โจมตีรู้ว่าควรเจาะที่จุดใด

การทำ Live patching สามารถใช้แทนการรีบูตได้หรือไม่? ไม่ได้ Live patch ครอบคลุมเฉพาะการแก้ไขบางส่วนเท่านั้น และผู้ให้บริการระบุไว้ชัดเจนว่าการแก้ไขบางรายการจะมาพร้อมกับแพ็กเกจเคอร์เนลตัวเต็มเท่านั้น จึงควรใช้ live patch เพียงเพื่อยืดเวลาจนกว่าจะถึงกำหนดการรีบูตครั้งถัดไป

การอัปเดต Container Image สามารถแก้ปัญหาช่องโหว่ของเคอร์เนลได้หรือไม่? ไม่ได้ คอนเทนเนอร์ใช้งานเคอร์เนลร่วมกับโฮสต์ ดังนั้นคุณจึงต้องอัปเดตและรีบูตเครื่องโฮสต์หรือโหนด แต่ทั้งนี้คุณก็ควรอัปเดต image ของคอนเทนเนอร์ด้วยเช่นกัน เนื่องจากเป็นส่วนที่เก็บ dependency ต่างๆ ของแอปพลิเคชัน

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API