สรุปสั้น
Next.js ออกอัปเดตความปลอดภัยนอกรอบเมื่อวันที่ 14 ตุลาคม 2569 แก้ช่องโหว่ระดับ critical 2 รายการที่ทำให้รันโค้ดจากระยะไกลได้โดยไม่ต้องยืนยันตัวตน และช่องโหว่ DoS ระดับสูงอีก 1 รายการ บริษัท Vercel ผู้พัฒนา Next.js ให้คะแนน CVSS ช่องโหว่รันโค้ดทั้งสองที่ 9.5 ตัวแรกอยู่ใน React Server Components ซึ่งกระทบเฉพาะแอป Next.js 16 ที่เปิด Cache Components และมีฟังก์ชัน use cache ที่ส่งคืน typed array มากกว่าหนึ่งตัว ตัวที่สองคือ CVE-2026-96889 ซึ่งเป็นบั๊กหน่วยความจำใน librsvg ไลบรารีเรนเดอร์ภาพ SVG ที่ Next.js ใช้ผ่านแพ็กเกจ sharp รันโค้ดได้เมื่อ Next.js ทำงานบน Linux แบบ glibc ส่วนช่องโหว่ DoS ทำให้คำขอที่สร้างขึ้นเฉพาะดัน CPU ของโปรเซสเซิร์ฟเวอร์จนเต็มในแอปที่มี Server Action
การแก้ไขอยู่ใน Next.js 16.4.1 และ 15.5.28 แต่มีกับดักสำหรับสาย 15 เพราะ 15.5.28 ยังยอมรับ sharp 0.34.x ที่มีช่องโหว่ การอัปเกรดทับของเดิมจึงอาจค้าง sharp เวอร์ชันเก่าไว้ นอกจากนี้ ณ วันที่ 15 ตุลาคม ช่องโหว่ use cache และ Server Actions ยังไม่มีรหัส CVE และไม่ปรากฏในฐานข้อมูล advisory ที่ npm audit ใช้ เครื่องมือสแกน dependency จึงอาจไม่เตือน ยังไม่มีรายงานว่าช่องโหว่ทั้งสามถูกใช้โจมตีจริง
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 15 ตุลาคม 2569 ว่าช่องโหว่ทั้งสามรายการมีรายละเอียดดังนี้
| ช่องโหว่ | เวอร์ชันที่ได้รับผลกระทบ | แก้ไขใน | ใครเสี่ยง |
|---|---|---|---|
รันโค้ดผ่าน use cache (GHSA-673q-mjm6-r5xr) | 16.0.0 ถึง 16.4.0 | 16.4.1 | แอป App Router ที่เปิด Cache Components และมีฟังก์ชัน use cache ส่งคืน typed array มากกว่าหนึ่งตัว |
| รันโค้ดผ่านภาพ SVG (CVE-2026-96889, GHSA-2464-fhr4-w9xw) | 10.0.0 ถึง 15.5.27 และ 16.0.0 ถึง 16.4.0 | 16.4.1 หรือ 15.5.28 คู่กับ sharp 0.35.5 ขึ้นไป | แอปที่ส่งไฟล์ SVG จากผู้โจมตีให้ sharp บน Linux แบบ glibc |
| DoS ผ่าน Server Actions (GHSA-p3m5-59mp-jv5r) | 13.0.0 ถึง 15.5.27 และ 16.0.0 ถึง 16.4.0 | 15.5.28, 16.4.1 | แอป App Router ที่มี Server Action อย่างน้อยหนึ่งตัว |
ตามปกติ Next.js ไม่ optimize ไฟล์ SVG การส่ง SVG ผ่าน image optimizer ต้องเปิดค่า dangerouslyAllowSVG แต่ไลบรารีเดียวกันยังใช้เรนเดอร์ภาพให้ next/og ซึ่งสร้างภาพตัวอย่างสำหรับโซเชียลมีเดีย เมื่อฟีเจอร์นั้นรันบน Node.js runtime ความเสี่ยงยังต่างกันตามผู้ให้บริการโฮสต์ บริษัท Netlify ระบุว่าแพลตฟอร์มของตนไม่ได้รันเส้นทางโค้ดของ image optimizer และช่องโหว่มีผลจำกัดกับระบบของตน แต่ยังแนะนำให้อัปเกรด
นี่เป็นครั้งที่สามนับตั้งแต่สิงหาคมที่การประมวลผลภาพใน Next.js ทำให้เกิดช่องโหว่รันโค้ด เดือนสิงหาคมมีบั๊กใน libheif ผ่าน sharp ที่รันโค้ดได้เมื่อ optimizer จัดการภาพ AVIF ที่ถูกสร้างขึ้นเฉพาะ (โพสต์ 2026/08/163
) และเดือนกันยายนมีช่องโหว่ใน next/og ที่ข้อความจากผู้โจมตีเปลี่ยน SVG ที่สร้างขึ้นได้ (โพสต์ 2026/09/168
)
รายละเอียดช่องโหว่
React Server Components — ประกาศของ React ครอบคลุม 3 แพ็กเกจ คือ react-server-dom-webpack, react-server-dom-parcel และ react-server-dom-turbopack เวอร์ชัน 19.0.0 ถึง 19.3.0 และอธิบายว่ากระทบ “กรณีที่พบได้ยากมาก ซึ่งคำตอบส่ง typed array หลายตัวพร้อมค่าที่ผู้โจมตีควบคุมได้” ใน Next.js ตัวกระตุ้นคือฟังก์ชัน use cache ที่ส่งคืน typed array มากกว่าหนึ่งตัว จึงกระทบเฉพาะแอปเวอร์ชัน 16 ที่เปิด Cache Components อย่างไรก็ตาม Vercel ให้อัปเกรดแม้แอปจะไม่มีฟังก์ชันลักษณะนี้ ช่องโหว่นี้อยู่ในแพ็กเกจเดียวกับ React2Shell ช่องโหว่คะแนนสูงสุดที่เปิดเผยเมื่อธันวาคม 2568 และถูกโจมตีเป็นวงกว้าง แต่ช่องโหว่ใหม่นี้แคบกว่ามาก
librsvg (CVE-2026-96889) — บั๊กนี้เปิดเผยเมื่อ 23 กันยายน และแก้ใน sharp เมื่อ 27 กันยายน Next.js ไม่ได้แก้โค้ดภาพของตัวเองในรอบนี้ 16.4.1 ใช้ optimizer ตัวเดียวกับ 16.4.0 แต่ยกเวอร์ชัน sharp ที่มาด้วยเป็น 0.35.5 ซึ่งมี librsvg 2.63.2 ที่แก้แล้ว คะแนนขัดกันระหว่างแหล่ง บริษัท Red Hat ให้ 7.8 และระบุว่าต้องมีผู้ใช้ร่วมด้วย เช่น เปิดไฟล์อันตราย ขณะที่ Vercel ให้คะแนน 9.5 และโจมตีผ่านเครือข่ายได้ในบริบทของ Next.js นาย Rafael B. Dias ผู้รายงานบั๊ก librsvg ระบุว่าเป็นจุดอ่อนเบื้องหลังช่องโหว่ next/og เดือนกันยายน ซึ่งมีโค้ด exploit ที่ใช้ได้จริงสำหรับการตั้งค่าเซิร์ฟเวอร์แบบหนึ่งถูกเผยแพร่แล้ว ผู้ดูแล sharp ยังเตือนว่าผลจะเป็นการรันโค้ดหรือแค่โปรแกรมล่ม ขึ้นกับ Node.js build ของเซิร์ฟเวอร์ เพราะ binary ทางการของ Node.js ไม่ได้ hardened ต่อการโจมตีหน่วยความจำลักษณะนี้
Server Actions DoS — ในแอป App Router ที่มี Server Action อย่างน้อยหนึ่งตัว คำขอที่สร้างขึ้นเฉพาะดัน CPU ของโปรเซสเซิร์ฟเวอร์หนึ่งจนเต็ม และทำให้ไม่รับคำขออื่น แอปที่ใช้ Pages Router หรือไม่มี Server Action ไม่ได้รับผลกระทบ
ผลกระทบ
Next.js เป็นเฟรมเวิร์กเว็บที่ใช้กันมากที่สุดตัวหนึ่ง ช่องโหว่รันโค้ดโดยไม่ต้องยืนยันตัวตนจึงอาจกระทบเว็บไซต์จำนวนมาก แต่ความเสี่ยงจริงขึ้นกับการตั้งค่า ช่องโหว่ use cache กระทบเฉพาะแอป 16 ที่เปิด Cache Components และช่องโหว่ SVG ต้องเปิด dangerouslyAllowSVG หรือใช้ next/og บน Node.js ร่วมกับ Linux แบบ glibc ส่วนช่องโหว่ DoS กระทบแอป App Router ที่มี Server Action ซึ่งเป็นรูปแบบทั่วไป
ความเสี่ยงที่ซ่อนอยู่คือช่องว่างด้านการตรวจจับ ทีมที่พึ่ง npm audit หรือเครื่องมือสแกน dependency จะไม่เห็นช่องโหว่ 2 ใน 3 รายการ และทีมที่อัปเกรด Next.js 15 อาจคิดว่าปลอดภัยแล้วทั้งที่ sharp ยังเป็นเวอร์ชันเก่า การที่ปัญหาการประมวลผลภาพเกิดซ้ำ 3 ครั้งใน 3 เดือน และมี exploit ของช่องโหว่ก่อนหน้าเผยแพร่แล้ว ทำให้ไม่ควรรอจนมีรายงานการโจมตี
คำแนะนำ
- อัปเกรดเป็น Next.js 16.4.1 (สาย 16) หรือ 15.5.28 (สาย 15) แล้ว rebuild และ deploy ใหม่
- สาย 15 ให้ตรวจด้วย
npm ls sharpและอัปเดต sharp เป็น 0.35.5 ขึ้นไปหากยังเก่ากว่า เพราะการอัปเกรด Next.js อาจไม่ดึง sharp ใหม่มาให้ - ถ้ายังอัปเกรด Next.js ไม่ได้ ให้แก้เฉพาะช่องโหว่ภาพก่อนด้วยการอัปเดต sharp เป็น 0.35.5 ขึ้นไป หรือบล็อกการเรนเดอร์ SVG ใน sharp ด้วย
sharp.block({ operation: ["VipsForeignLoadSvg"] })ส่วนช่องโหว่use cacheและ Server Actions ไม่มีวิธีแก้ชั่วคราว ต้องอัปเกรดเท่านั้น - ปิด
dangerouslyAllowSVGหากไม่จำเป็น และทบทวนการใช้next/ogกับข้อมูลที่มาจากผู้ใช้ - อย่าพึ่ง
npm auditอย่างเดียวในรอบนี้ ให้ตรวจเวอร์ชัน Next.js และแพ็กเกจreact-server-dom-*ด้วยตนเอง - พิจารณาใช้ Node.js build ที่ hardened และติดตั้ง rate limit ที่ระดับ reverse proxy สำหรับ endpoint ของ Server Actions เพื่อลดผลจาก DoS
แหล่งอ้างอิง
- Next.js Ships Out-of-Band Patch for Two Critical RCE Flaws in Caching and SVG Processing — The Hacker News
- Next.js Security Update: October 14, 2026 — Vercel
- GHSA-673q-mjm6-r5xr (use cache RCE) — Vercel
- GHSA-2464-fhr4-w9xw (SVG RCE) — Vercel
- GHSA-p3m5-59mp-jv5r (Server Actions DoS) — Vercel
- GHSA-xqc2-xf4c-x3h3 (React Server Components) — React
- CVE-2026-96889 — Red Hat
- Next.js and React security vulnerabilities — Netlify Changelog
