
พบช่องโหว่ประเภท Denial-of-Service (DoS) ที่มีระดับความรุนแรงสูง ใน React Server Components ซึ่งอาจทำให้เซิร์ฟเวอร์ Next.js ที่มีช่องโหว่หยุดทำงานได้ด้วยการส่ง HTTP POST request ที่ถูกสร้างขึ้นมาเป็นพิเศษเพียงครั้งเดียวเท่านั้น
CVE-2026-23870 (คะแนน CVSS 7.5/10 ความรุนแรงระดับ High) เป็นช่องโหว่ประเภท Denial-of-Service (DoS) ที่ส่งผลกระทบต่อแพ็กเกจ React Server Component ที่ใช้งานในแอปพลิเคชัน React 19 รวมถึงการติดตั้ง Next.js จำนวนมากที่มีการใช้งาน Server Actions ที่สามารถเข้าถึงได้จากภายนอก
ช่องโหว่ดังกล่าวเกิดขึ้นในขั้นตอนการสร้างข้อมูลฟอร์ม (form data) ที่ส่งไปยัง Server Actions ขึ้นมาใหม่ทางฝั่งเซิร์ฟเวอร์ (server-side reconstruction) ก่อนที่ Action จะเริ่มทำงาน React จะทำการแยกวิเคราะห์ (parse) ข้อมูลฟอร์มแบบ multipart ที่ผู้ใช้เป็นผู้กำหนด และจัดการกับข้อมูล references ที่ฝังอยู่ใน request นั้น
ช่องโหว่ใน React Server Components
ข้อมูล references ประเภทหนึ่ง ซึ่งภายในระบบแทนด้วยสัญลักษณ์ $K จะทำหน้าที่ระบุโครงสร้างข้อมูลแบบ form-data ที่ซ้อนอยู่ภายในสำหรับข้อมูลอ้างอิง $K แต่ละรายการ ตัว parser ที่มีช่องโหว่จะทำการไล่ตรวจสอบทุกฟิลด์ที่รวมอยู่ใน request และตรวจสอบว่ามีชื่อฟิลด์ใดบ้างที่ตรงกับ prefix ที่เกี่ยวข้อง
กระบวนการดังกล่าวทำให้เกิดความซับซ้อนในการคำนวณแบบ Quadratic (O(n²)) ทำให้ Hacker สามารถส่งข้อมูล $K references จำนวนหลายพันรายการควบคู่ไปกับฟิลด์ข้อมูลส่วนเกิน (filler fields) อีกหลายพันรายการที่โดยปกติแล้วไม่มีอันตราย หากมีข้อมูลอ้างอิง 10,000 รายการ และฟิลด์ข้อมูล 10,000 รายการ React อาจต้องดำเนินการตรวจสอบ string-prefix checks มากถึงประมาณ 100 ล้านครั้งในการประมวลผล request เพียงรายการเดียว
เนื่องจากกระบวนการทำงานนี้เกิดขึ้นแบบ Synchronous บน Node.js event loop กระบวนการทำงานของเซิร์ฟเวอร์จึงอาจถูกขัดขวางจนหยุดทำงานจนกว่าการ parsing จะเสร็จสิ้น ส่งผลให้ request ที่ถูกต้องต้องรอต่อคิวอยู่เบื้องหลัง request ที่เป็นอันตราย ก่อให้เกิดปัญหาแอปพลิเคชัน timeout หรือบริการหยุดชะงัก
React Server Actions ช่วยให้นักพัฒนาสามารถผูกฟอร์มเข้ากับฟังก์ชันฝั่งเซิร์ฟเวอร์ได้โดยตรง ฟีเจอร์นี้ได้รับความนิยมอย่างมากในแอปพลิเคชัน React และ Next.js สมัยใหม่ สำหรับงานต่าง ๆ เช่น การอัปเดตข้อมูลบัญชีผู้ใช้, แบบฟอร์มติดต่อสอบถาม, การสั่งซื้อสินค้า และการส่งข้อมูลเนื้อหา
กระบวนการ parsing request ที่มีช่องโหว่นั้นเกิดขึ้นก่อนที่จะเข้าสู่ application logic ของ Server Action ส่งผลให้มาตรการป้องกันทั่วไปที่อยู่ภายใน Action เช่น การ authentication, การตรวจสอบ CSRF, การตรวจสอบแหล่งที่มา (origin check) หรือการ authorization ไม่สามารถช่วยลดภาระงานในขั้นตอนการ parsing ข้อมูลดังกล่าวได้
โดยทั่วไปแล้ว Hacker จำเป็นต้องระบุ Endpoint ของ Server Action และตัวระบุ Action (action identifier) ให้ได้เสียก่อน แอปพลิเคชันที่เปิดให้เข้าถึงจากภายนอกอาจเปิดเผยข้อมูล Metadata ของ Action ผ่านทางเนื้อหาของหน้าเว็บ หรือชุดไฟล์ JavaScript ซึ่งทำให้สามารถค้นหาข้อมูลดังกล่าวได้โดยไม่จำเป็นต้องมีสิทธิ์การเข้าถึงระดับสูง
Simonkoeck ระบุว่าผลกระทบในตอนนี้นั้นมีเพียงด้านความพร้อมใช้งานเท่านั้น
แพ็กเกจ และเวอร์ชัน React ที่ได้รับผลกระทบ
คำแนะนำของ Meta ระบุแพ็กเกจที่มีช่องโหว่ดังต่อไปนี้ :

การแก้ไขได้ลบการสแกน full-request ซ้ำ ๆ ที่ทำให้เกิดการใช้งาน CPU สูง แทนที่จะเริ่มต้นใหม่ตั้งแต่ต้นของข้อมูลฟอร์มสำหรับทุกการ reference ที่ซ้อนกัน เวอร์ชันที่มีการแก้ไขแล้ว จะติดตามความคืบหน้าของการ parsing และประมวลผลฟิลด์ผ่าน shared traversal
ทำให้เปลี่ยนรูปแบบการทำงาน (workload) ที่ผู้โจมตีสามารถควบคุมได้ จากเดิมที่เป็นการสแกนซ้ำหลายรอบไปสู่รูปแบบการประมวลผลแบบ linear parsing model ซึ่งช่วยป้องกันไม่ให้ request ขนาดเล็กขยายตัวกลายเป็นการเปรียบเทียบซ้ำ ๆ นับล้านครั้ง
องค์กรที่ใช้งาน Next.js หรือการใช้งาน React Server Component อื่น ๆ ควรตรวจสอบ transitive dependencies ทันที ไม่เพียงแต่แพ็กเกจ top-level react เท่านั้น แต่ควรอัปเกรดแพ็กเกจตระกูล react-server-dom-* ที่เกี่ยวข้องเป็น React 19.0.6, 19.1.7, 19.2.6 หรือเวอร์ชันที่ใหม่กว่าด้วย
จนกว่าจะอัปเดตแพตซ์ได้ ควรใช้การควบคุมขนาด request size และจำนวนฟิลด์ที่ reverse proxy หรือ web application firewalls แม้ว่าการควบคุมเหล่านี้จะเป็นเพียงมาตรการชั่วคราว ไม่ใช่การทดแทนการแก้ไขปัญหาที่ต้นเหตุก็ตาม
ที่มา : cyberpress

You must be logged in to post a comment.