สรุปสั้น

บริษัท Vercel ออกแพตช์ความปลอดภัยให้เฟรมเวิร์กเว็บ Next.js เพื่ออุดช่องโหว่ระดับร้ายแรง 2 รายการ ซึ่งทั้งคู่เปิดทางให้รันโค้ดระยะไกลได้โดยไม่ต้องยืนยันตัวตน ตัวแรกโจมตีผ่านไฟล์ภาพ AVIF ที่ถูกสร้างขึ้นมาเป็นพิเศษ ส่วนอีกตัวเป็นช่องโหว่ path traversal ที่กระทบเฉพาะเซิร์ฟเวอร์ซึ่งทำงานบนระบบไฟล์ของวินโดวส์ โดยการติดตั้งบนลินุกซ์และ macOS ไม่ได้รับผลกระทบจากช่องโหว่ตัวหลัง

ช่องโหว่ path traversal บนวินโดวส์ถูกติดตามในชื่อ CVE-2026-75604 คะแนน CVSS 9.0 กระทบแอปพลิเคชัน Next.js ที่ใช้ทั้ง Pages Router และ App Router โดยไม่ได้เปิด Cache Components เมื่อเซิร์ฟเวอร์ใช้ระบบไฟล์ของวินโดวส์ Vercel ระบุในคำแนะนำว่า “ไม่มีวิธีแก้ชั่วคราวที่รู้จักสำหรับแอปพลิเคชันที่โฮสต์บนวินโดวส์ที่ได้รับผลกระทบ คุณควรอัปเกรดทันทีหากเซิร์ฟเวอร์ของคุณโฮสต์อยู่บนวินโดวส์” ช่องโหว่นี้กระทบ Next.js เวอร์ชัน 13.4 ถึง 15.5.23 และ 16.0 ถึง 16.3.2

แพตช์อยู่ในเวอร์ชัน 15.5.24 สาย Maintenance LTS และ 16.3.3 สาย Active LTS ซึ่งเผยแพร่เมื่อวันที่ 25 สิงหาคม 2569 ผู้ใช้อัปเกรดได้ด้วยคำสั่ง npm install next@15.5.24 หรือ npm install next@16.3.3 ตามสายที่ใช้อยู่ ส่วนแอปพลิเคชันที่โฮสต์บนแพลตฟอร์มของ Vercel เองได้รับการป้องกันจากช่องโหว่ทั้งสองรายการแล้วและไม่ต้องอัปเกรด จนถึงวันที่ 27 สิงหาคม 2569 ยังไม่มีรายงานการนำช่องโหว่ทั้งสองไปใช้โจมตีจริง

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 27 สิงหาคม พ.ศ. 2569 ว่า Vercel ได้เผยแพร่แพตช์ประจำเดือนสิงหาคมของ Next.js ซึ่งอุดช่องโหว่ระดับร้ายแรงสองรายการที่นำไปสู่การรันโค้ดระยะไกลโดยไม่ต้องผ่านการยืนยันตัวตน คำแนะนำไม่ได้เปิดเผยกลไกการโจมตีของช่องโหว่บนวินโดวส์ แต่ระบุเครดิตนักวิจัยที่ใช้ชื่อ evolutionstorm และ B0RI ในการเปิดเผยอย่างมีความรับผิดชอบ

ช่องโหว่อีกตัวมีต้นตออยู่นอก Next.js เอง Next.js ใช้แพ็กเกจ sharp ในการปรับแต่งรูปภาพ และ sharp เรียกใช้ไลบรารีภาษาซีชื่อ libheif เพื่ออ่านไฟล์ AVIF ปัญหา heap buffer overflow ระดับร้ายแรงใน libheif จึงส่งผลให้เกิดการรันโค้ดระยะไกลได้เมื่อ Next.js ประมวลผลไฟล์ AVIF ที่ผู้โจมตีควบคุมเนื้อหา คำแนะนำฝั่ง Next.js ออกในรหัส GHSA-2xp9-vwfh-vxw4 คะแนน CVSS v4 อยู่ที่ 9.5 ส่วนต้นเหตุที่ผู้ดูแล libheif เปิดเผยเองใช้รหัส GHSA-g89c-p67h-r497 ซึ่งเป็น heap buffer overflow ในโค้ดส่วนย่อขยายภาพ กระทบ libheif ทุกเวอร์ชันจนถึง v1.23.1 ขณะที่คำแนะนำฝั่ง AVIF ครอบคลุม Next.js เวอร์ชัน 10.0.0 ถึง 15.5.23 และทุกเวอร์ชัน 16.x จนถึง 16.3.2

นักวิจัยที่ได้รับเครดิตในคำแนะนำของ libheif คือ rootxharsh ในฐานะผู้ค้นพบ และ KarimPwnz ในฐานะผู้ประสานงาน ทั้งคู่เผยแพร่โค้ดพิสูจน์แนวคิด (proof-of-concept) ภาษาไพทอนฉบับเต็มพร้อมกับการเปิดเผยช่องโหว่ ซึ่งจำลองการทำลายหน่วยความจำ heap ให้เห็นได้ภายใต้การคอมไพล์ด้วย address sanitizer นักวิจัยระบุในคำแนะนำว่า “เราสามารถทำ RCE ด้วยช่องโหว่นี้ได้บนหลายแอปพลิเคชัน” อย่างไรก็ตามโค้ดพิสูจน์แนวคิดที่เผยแพร่สาธิตเพียงการเขียนข้อมูลออกนอกขอบเขตหน่วยความจำ และคำกล่าวอ้างว่ารันโค้ดได้จริงบนหลายแอปพลิเคชันยังไม่มีการยืนยันจากฝ่ายอื่นโดยอิสระ ที่น่าสังเกตคือ Vercel ให้เครดิตการเปิดเผยแก่ทีม Hacktron ซึ่งต่างจากชื่อที่ปรากฏในคำแนะนำของ libheif

เงื่อนไขสำคัญที่ช่วยจำกัดวงความเสี่ยงคือ Next.js จะเปิดการปรับแต่งภาพ AVIF ก็ต่อเมื่อเว็บไซต์ระบุ image/avif ลงในค่า formats ของไฟล์ next.config.js อย่างชัดเจนเท่านั้น การติดตั้งที่ไม่ได้ตั้งค่าดังกล่าวจึงไม่ถูกเปิดรับช่องโหว่นี้ ขณะที่เวอร์ชันที่แพตช์แล้วเลือกปิดการปรับแต่ง AVIF ทั้งหมดไปก่อน จนกว่าการแก้ไขจากต้นน้ำฝั่ง libheif จะไหลลงมา โดย The Hacker News ยืนยันเมื่อวันที่ 27 สิงหาคม 2569 ผ่านหน้า releases บน GitHub ของ libheif ว่ายังไม่มีการเผยแพร่เวอร์ชัน v1.23.2 ออกมา

Vercel เดิมกำหนดปล่อยแพตช์ประจำเดือนสิงหาคมในวันที่ 26 สิงหาคมตามรอบรายเดือน แต่เลื่อนขึ้นมาหนึ่งวันหลังพบช่องโหว่ระดับร้ายแรงเพิ่มอีกรายการในไลบรารีต้นน้ำที่ใช้งานอยู่ โดยนาย Josh Story นาย Karim Rahal และนาย Sebastian Silbermann ระบุในบล็อกความปลอดภัยของ Vercel ว่า “ช่วงต้นวันนี้ เราเลื่อนการปล่อยเวอร์ชันขึ้นมาหลังพบช่องโหว่ระดับร้ายแรงเพิ่มเติมในหนึ่งในแพ็กเกจต้นน้ำของเรา”

นี่เป็นการปล่อยแพตช์ครั้งที่สองภายใต้โครงการความปลอดภัยรายเดือนอย่างเป็นทางการที่ Vercel ประกาศเมื่อเดือนกรกฎาคม 2569 ซึ่งตอนประกาศโครงการ นาย Andrew Imm และนาย Josh Story ให้เหตุผลว่า “ปริมาณงานวิจัยช่องโหว่ทั่วทั้งอุตสาหกรรมกำลังเพิ่มขึ้นอย่างรวดเร็ว โดยมีแรงขับจากการค้นหาช่องโหว่ด้วยความช่วยเหลือของ LLM” การปล่อยแพตช์ตามกำหนดครั้งแรกเมื่อวันที่ 21 กรกฎาคมแก้ช่องโหว่ 9 รายการใน Next.js 16.2.11 และ 15.5.21 ครอบคลุมทั้งการปฏิเสธการให้บริการ SSRF และการข้ามมิดเดิลแวร์ ซึ่งเว็บไซต์นี้เคยรายงานไว้ใน 250 และผู้ที่อัปเดตแพตช์รอบกรกฎาคมไปแล้วยังต้องอัปเกรดรอบสิงหาคมอยู่ดี

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

กลไกของช่องโหว่ AVIF ถูกอธิบายไว้ค่อนข้างละเอียด ไฟล์ AVIF ที่ถูกประดิษฐ์ขึ้นจะมีการอ้างอิงรายการแบบ nested identity-derivation และ auxiliary item references ซึ่งทำให้ libheif สร้างภาพที่ถอดรหัสแล้วโดยมีรายการระนาบ Alpha สองรายการที่มีความลึกบิตต่างกัน จากนั้นตัวย่อขยายภาพจะจองบัฟเฟอร์ปลายทางตามขนาดของรายการ Alpha รายการแรกซึ่งเป็นแบบ 8 บิต แต่กลับเขียนค่าตัวอย่างแบบ 16 บิตจากรายการที่สองลงในบัฟเฟอร์เดียวกัน ผลคือมีการเขียนข้อมูลล้นออกไปนอกขอบเขตที่จองไว้ราว 16,384 ไบต์

รูปแบบนี้คือกรณีคลาสสิกของช่องโหว่ในไลบรารีถอดรหัสสื่อ ผู้โจมตีไม่ต้องมีบัญชีหรือสิทธิ์ใด ๆ เพียงส่งไฟล์ภาพเข้าสู่เส้นทางที่เซิร์ฟเวอร์นำไปประมวลผล ซึ่งในบริบทของ Next.js คือฟังก์ชันปรับแต่งรูปภาพที่ทำงานฝั่งเซิร์ฟเวอร์ ความน่ากังวลจึงไม่ได้อยู่ที่ Next.js เท่านั้น เพราะ libheif ถูกใช้งานอยู่ในซอฟต์แวร์จำนวนมากที่รองรับไฟล์ HEIF และ AVIF การที่ยังไม่มีเวอร์ชันแก้ไขจากต้นน้ำออกมา หมายความว่าผลิตภัณฑ์อื่นที่พึ่งไลบรารีเดียวกันยังอยู่ในสถานะเดิม

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

ผลกระทบ

Next.js เป็นเฟรมเวิร์กที่อยู่เบื้องหลังเว็บไซต์จำนวนมหาศาล ตั้งแต่หน้าเว็บการตลาดไปจนถึงระบบหลังบ้านที่ให้บริการลูกค้า ช่องโหว่ที่รันโค้ดได้โดยไม่ต้องยืนยันตัวตนจึงหมายถึงการยึดเซิร์ฟเวอร์แอปพลิเคชันโดยตรง ไม่ใช่แค่การรบกวนหน้าเว็บ และเนื่องจากเซิร์ฟเวอร์เหล่านี้มักถือกุญแจเชื่อมต่อฐานข้อมูลและบริการภายใน ความเสียหายจึงลามต่อได้เร็ว

ประเด็นที่ควรจับตาเป็นพิเศษคือความเสี่ยงจากห่วงโซ่การพึ่งพา ช่องโหว่ AVIF ไม่ได้เกิดจากโค้ดของ Next.js เลย แต่มาจากไลบรารีภาษาซีที่อยู่ลึกลงไปสองชั้นผ่าน sharp การที่ Vercel ต้องเลือกปิดฟังก์ชันปรับแต่ง AVIF ทิ้งไปก่อน สะท้อนว่าผู้ดูแลเฟรมเวิร์กปลายน้ำทำได้แค่ตัดฟีเจอร์ ไม่สามารถแก้ต้นเหตุได้เอง ผู้พัฒนาที่ประเมินความเสี่ยงจากรายชื่อแพ็กเกจโดยตรงเพียงชั้นเดียวจึงมองไม่เห็นความเสี่ยงประเภทนี้

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

คำแนะนำ

  • อัปเกรด Next.js เป็นเวอร์ชัน 15.5.24 หรือ 16.3.3 ทันที โดยเฉพาะเว็บที่รันบนเซิร์ฟเวอร์ที่ใช้ระบบไฟล์ของวินโดวส์ ซึ่ง Vercel ระบุชัดว่าไม่มีวิธีแก้ชั่วคราว
  • ตรวจไฟล์ next.config.js ว่ามีการใส่ image/avif ในค่า formats หรือไม่ หากไม่จำเป็นต้องรองรับ AVIF ให้ถอดออกเพื่อลดพื้นผิวการโจมตีระหว่างรอแพตช์ต้นน้ำ
  • ติดตามการออกเวอร์ชันใหม่ของ libheif เนื่องจาก ณ วันที่ 27 สิงหาคม 2569 ยังไม่มีเวอร์ชัน v1.23.2 ที่แก้ปัญหาออกมา และซอฟต์แวร์อื่นที่ใช้ไลบรารีนี้ก็ยังได้รับผลกระทบอยู่
  • ตรวจสอบรายการแพ็กเกจที่พึ่งพาทางอ้อม (transitive dependencies) ในโครงการของตน เพราะช่องโหว่ครั้งนี้อยู่ลึกลงไปสองชั้นจากเฟรมเวิร์กที่ใช้งาน
  • แยกสิทธิ์ของโปรเซสที่ประมวลผลรูปภาพออกจากส่วนอื่นของระบบเท่าที่ทำได้ และจำกัดสิทธิ์ของบัญชีที่รันเซิร์ฟเวอร์แอปพลิเคชัน เพื่อลดผลกระทบหากมีการรันโค้ดสำเร็จ
  • วางแผนรับรอบแพตช์รายเดือนของ Next.js ให้เป็นงานประจำ เนื่องจาก Vercel ประกาศโครงการปล่อยแพตช์ตามกำหนดแล้วตั้งแต่กรกฎาคม 2569

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