นักวิจัยด้านความปลอดภัยพบช่องโหว่ Critical บน NGINX Web Server ที่ฝังอยู่ในโค้ดมานานกว่า 18 ปี โดยสามารถถูกใช้โจมตีแบบ Denial of Service (DoS) ได้ และอาจนำไปสู่การรันโค้ดจากระยะไกล (RCE) ภายใต้เงื่อนไขบางประการ

ช่องโหว่นี้ถูกติดตามในรหัส CVE-2026-42945 ด้วยคะแนน CVSS 9.2 ระดับ Critical เป็นช่องโหว่ประเภท Heap Buffer Overflow ใน ngx_http_rewrite_module ที่ส่งผลกระทบตั้งแต่ NGINX version 0.6.27 ถึง 1.30.0 ช่องโหว่นี้ถูกค้นพบโดยทีมวิจัยจาก DepthFirst AI ผ่านระบบสแกนอัตโนมัติ โดยในเซสชันเดียวกันยังพบช่องโหว่ Memory Corruption อีก 3 รายการ ได้แก่ CVE-2026-42946, CVE-2026-40701 และ CVE-2026-42934 ซึ่งครอบคลุมปัญหาตั้งแต่การจองหน่วยความจำมากเกินไปในโมดูล SCGI/UWSGI, Use-after-free ในการจัดการ OCSP DNS Resolution ไปจนถึงบั๊ก Off-by-one ในการ Parse UTF-8
สาเหตุของช่องโหว่เกิดจากการจัดการ State ที่ไม่สอดคล้องกันใน Script Engine ภายในของ NGINX ซึ่งประมวลผล Rewrite ใน 2 รอบ คือรอบแรกคำนวณขนาดหน่วยความจำที่ต้องจอง และรอบที่สองคัดลอกข้อมูลจริง ปัญหาเกิดขึ้นเมื่อ is_args flag ยังคงถูกตั้งค่าอยู่หลังจากการ Rewrite ที่มีเครื่องหมาย ? ทำให้คำนวณขนาด Buffer จาก URI ที่ไม่ได้ Escape แต่เขียนข้อมูลที่ Escape แล้วซึ่งมีขนาดใหญ่กว่า จนเกิด Heap Buffer Overflow ทั้งนี้ช่องโหว่จะถูกกระตุ้นเมื่อ Configuration ของ NGINX ใช้ทั้ง Directive rewrite และ set ร่วมกัน ซึ่งเป็นรูปแบบที่พบได้ทั่วไปใน API Gateway และ Reverse Proxy อย่างไรก็ตาม มีข้อสังเกตว่าการโจมตีแบบ RCE ในสภาพแวดล้อมจริงนั้นทำได้ยาก เนื่องจาก Proof-of-Concept ที่เผยแพร่ทดสอบบนระบบที่ปิด ASLR (Address Space Layout Randomization) ซึ่งโดยปกติจะเปิดใช้งานเป็นค่าเริ่มต้น ทาง AlmaLinux ยืนยันในรายงานว่าการทำ DoS โดยการ Crash Worker Process นั้นทำได้ง่ายและเชื่อถือได้ แต่การเปลี่ยน Heap Overflow ให้กลายเป็น RCE ที่เชื่อถือได้บนระบบที่เปิด ASLR นั้นไม่ใช่เรื่องง่าย
ตามประกาศของ F5 ช่องโหว่ดังกล่าวส่งผลกระทบต่อหลายผลิตภัณฑ์ ได้แก่ NGINX Open Source 0.6.27 ถึง 1.30.0, NGINX Plus R32 ถึง R36, NGINX Instance Manager, F5 WAF for NGINX, NGINX App Protect WAF, NGINX Gateway Fabric และ NGINX Ingress Controller เป็นต้น F5 ได้ปล่อยแพตช์แก้ไขใน NGINX Open Source 1.31.0 และ 1.30.1, NGINX Plus R36 P4 และ R32 P6 แล้ว สำหรับผู้ที่ยังไม่สามารถอัปเดตได้ F5 แนะนำให้เปลี่ยนจากการใช้ Unnamed PCRE Capture Group ($1, $2 เป็นต้น) ใน Rewrite Rule เป็น Named Capture แทน ซึ่งจะช่วยตัดเงื่อนไขหลักในการโจมตีออกไปได้ แนะนำให้ผู้ดูแลระบบที่ใช้งาน NGINX ตรวจสอบ Configuration และดำเนินการแพตช์โดยด่วน
TechTalkThai ศูนย์รวมข่าว Enterprise IT ออนไลน์แห่งแรกในประเทศไทย






