สรุปสั้น

เมื่อวันที่ 14 พฤษภาคม 2569 นักวิจัยจาก depthfirst เปิดเผยช่องโหว่ร้ายแรงใน NGINX ที่ซ่อนตัวอยู่โดยไม่ถูกตรวจพบมานานถึง 18 ปี ช่องโหว่ CVE-2026-42945 หรือรหัสชื่อ NGINX Rift มีคะแนน CVSS v4 สูงถึง 9.2 เป็นปัญหา heap buffer overflow ใน ngx_http_rewrite_module ที่เปิดโอกาสให้ผู้โจมตีจากระยะไกลรันโค้ดอันตราย (RCE) หรือทำให้ระบบล่ม (DoS) ได้ ผู้โจมตีไม่จำเป็นต้องยืนยันตัวตน เพียงส่ง HTTP request ที่สร้างขึ้นเป็นพิเศษเพียงครั้งเดียวก็สามารถเจาะระบบได้ กระทบ NGINX Open Source ตั้งแต่เวอร์ชัน 0.6.27 จนถึง 1.30.0 และ NGINX Plus ตั้งแต่ R32 ถึง R36 F5 ได้ออกแพตช์แก้ไขแล้วใน NGINX Open Source 1.30.1 / 1.31.0 และ NGINX Plus R32 P6 / R36 P4

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

ช่องโหว่เกิดขึ้นเมื่อ NGINX config ใช้ rewrite directive ร่วมกับ directive อื่น (rewrite, if, หรือ set) และมีการใช้ unnamed PCRE capture (เช่น $1, $2) ร่วมกับ replacement string ที่มีเครื่องหมายคำถาม (?)

สิ่งที่ทำให้ช่องโหว่นี้อันตรายอย่างยิ่ง:

  • ไม่ต้องยืนยันตัวตน — ส่ง HTTP request เพียงครั้งเดียวก็โจมตีได้
  • ควบคุมข้อมูลที่เขียนทับได้ — byte ที่ overflow มาจาก URI ของผู้โจมตี ทำให้ไม่ใช่การ corrupt แบบสุ่ม
  • ทำให้ระบบล่มต่อเนื่องได้ — ส่ง request ซ้ำเพื่อให้ worker process crash loop ทำให้เว็บไซต์ทุกแห่งบน instance นั้นใช้งานไม่ได้

ระบบที่ได้รับผลกระทบ

ผลิตภัณฑ์ เวอร์ชันที่กระทบ แพตช์
NGINX Plus R32 – R36 R32 P6, R36 P4
NGINX Open Source 1.0.0 – 1.30.0 1.30.1, 1.31.0
NGINX Open Source (เก่า) 0.6.27 – 0.9.7 ไม่มีแผนแก้ไข
NGINX Ingress Controller 3.5.0 – 5.4.1 มีแพตช์แล้ว
NGINX Gateway Fabric 1.3.0 – 2.5.1 มีแพตช์แล้ว

นอกจากนี้ยังมีช่องโหว่อื่นที่ได้รับการแก้ไขพร้อมกัน ได้แก่ CVE-2026-42946 (CVSS 8.3), CVE-2026-40701 (CVSS 6.3) และ CVE-2026-42934 (CVSS 6.3)

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

NGINX เป็นเว็บเซิร์ฟเวอร์และ reverse proxy ที่ได้รับความนิยมสูงสุดอันดับต้นของโลก ในประเทศไทยมีการใช้งานอย่างแพร่หลายทั้งในภาครัฐและเอกชน ตั้งแต่เว็บไซต์ e-commerce, ระบบ API gateway, ไปจนถึง load balancer ของระบบสำคัญ เนื่องจากช่องโหว่นี้โจมตีได้จากระยะไกลโดยไม่ต้องมีสิทธิ์ใด ๆ และมีอยู่มานาน 18 ปี จึงมีโอกาสสูงมากที่ระบบที่ยังไม่อัปเดตจะตกเป็นเป้าหมาย

คำแนะนำเร่งด่วน

  1. อัปเดต NGINX เป็นเวอร์ชันล่าสุดทันที (Open Source 1.30.1+ หรือ Plus R32 P6 / R36 P4)
  2. หากยังอัปเดตไม่ได้ ให้แก้ config โดยเปลี่ยน unnamed capture ($1, $2) เป็น named capture ในทุก rewrite directive ที่เข้าเงื่อนไข
  3. ตรวจสอบ ว่า NGINX config ของคุณมีรูปแบบ rewrite ... $1 ... ? หรือไม่
  4. ติดตามประกาศจาก F5 Security Advisory

อ้างอิง