
มีการค้นพบช่องโหว่ความรุนแรงระดับ Critical ใน Next.js ซึ่งเป็นเฟรมเวิร์กสำหรับพัฒนาเว็บแบบโอเพ่นซอร์ส โดยช่องโหว่นี้อาจทำให้ผู้โจมตีสามารถ Bypass การยืนยันตัวตนได้
ช่องโหว่นี้มีหมายเลข CVE-2025-29927 เป็นช่องโหว่ที่ทำให้ผู้โจมตีสามารถส่ง request ไปยัง destination paths โดยไม่ต้องผ่านการยืนยันตัวตน
Next.js เป็นเฟรมเวิร์กยอดนิยมที่ใช้ร่วมกับ React โดยมีการดาวน์โหลดมากกว่า 9 ล้านครั้งต่อสัปดาห์บน npm และถูกใช้ในการพัฒนาเว็บแอปพลิเคชันแบบ Full-stack รวมถึงมีระบบ middleware สำหรับการ authentication และ authorization
นักพัฒนา Front-end และ Full-stack ใช้ Next.js ในการสร้างเว็บแอปพลิเคชันด้วย React โดยมีบริษัทชื่อดังหลายแห่งที่ใช้ Next.js สำหรับเว็บไซต์ หรือแอปพลิเคชันของตน เช่น TikTok, Twitch, Hulu, Netflix, Uber และ Nike
ช่องโหว่ Authorization bypass
ใน Next.js ส่วนของ Middleware components จะทำงานก่อนที่ request จะเข้าสู่ระบบ application routing และมีวัตถุประสงค์ต่าง ๆ เช่น authentication, authorization, logging, error handling, redirecting users, applying geo-blocking และ rate limits
เพื่อป้องกันปัญหา infinite loops ที่เกิดจาก Middleware เรียกใช้งานตัวเองซ้ำ Next.js จึงใช้ Header ที่ชื่อว่า 'x-middleware-subrequest' เพื่อกำหนดว่าควรให้ Middleware ทำงานหรือไม่
Header นี้ถูกดึงมาใช้งานโดยฟังก์ชัน runMiddleware ซึ่งมีหน้าที่จัดการ request ที่เข้ามา หากตรวจพบ Header 'x-middleware-subrequest' ที่มีค่าระบุไว้ ระบบจะ bypass กระบวนการทำงานของ Middleware ทั้งหมด และส่ง request ไปยังปลายทางทันที
ทำให้ผู้โจมตีสามารถส่ง request ด้วยตนเองโดยใส่ Header พร้อมค่าที่ถูกต้องเพื่อ bypass กระบวนการ protection ได้
ตามที่นักวิจัย Allam Rachid และ Allam Yasser (inzo_) ซึ่งเป็นผู้ค้นพบช่องโหว่นี้ และเผยแพร่รายละเอียดทางเทคนิคได้ระบุว่า Header และ value ทำหน้าที่เหมือน universal key ที่สามารถใช้แทนที่ rules การป้องกันต่าง ๆ ได้
ช่องโหว่นี้ส่งผลกระทบต่อ Next.js ทุกเวอร์ชันที่ต่ำกว่า 15.2.3, 14.2.25, 13.5.9 และ 12.3.5 ขอแนะนำให้ผู้ใช้ทำการอัปเกรดเป็นเวอร์ชันใหม่โดยเร็วที่สุด เนื่องจากรายละเอียดทางเทคนิคเกี่ยวกับการใช้ช่องโหว่นี้ถูกเผยแพร่ออกสู่สาธารณะแล้ว ซึ่งอาจทำให้เกิดการโจมตีได้ง่ายขึ้น
ประกาศด้านความปลอดภัยของ Next.js ระบุว่าช่องโหว่ CVE-2025-29927 ส่งผลกระทบเฉพาะเวอร์ชันที่โฮสต์ใช้งานเอง ซึ่งใช้คำสั่ง next start ร่วมกับ output: standalone เท่านั้น ในส่วนของแอป Next.js ที่โฮสต์บน Vercel หรือ Netlify รวมถึงแอปที่ถูก deploy เป็น Static Exports ไม่ได้รับผลกระทบ
สภาพแวดล้อมที่ได้รับผลกระทบเพิ่มเติม คือ กรณีที่ Middleware ถูกใช้สำหรับการยืนยันตัวตน หรือความปลอดภัย แต่ไม่มีการตรวจสอบเพิ่มเติมภายในแอปพลิเคชัน
หากยังไม่สามารถอัปเดตแพตช์ได้ แนะนำให้บล็อก request จากผู้ใช้งานภายนอกที่มี Header 'x-middleware-subrequest'
ที่มา : bleepingcomputer.com

You must be logged in to post a comment.