Node.js ได้ออกการอัปเดตเพื่อแก้ไขช่องโหว่ความปลอดภัยระดับวิกฤต (CVE-2025-59466) ที่ส่งผลกระทบต่อแอปพลิเคชัน Node.js ที่ใช้งานจริงแทบทั้งหมด ซึ่งอาจนำไปสู่สภาวะ Denial-of-Service (DoS) ช่องโหว่นี้เกิดจากบั๊กในการจัดการ Stack Overflow เมื่อมีการใช้งาน `async_hooks` โดยปกติ Node.js จะพยายามกู้คืนจากสภาวะ Stack Exhaustion แต่บั๊กนี้ทำให้แอปพลิเคชันหยุดทำงานด้วยรหัส 7 โดยไม่มีการจัดการข้อผิดพลาดอย่างเหมาะสมเมื่อ Stack Space หมดลงจากการเรียกซ้ำในโค้ดผู้ใช้ ซึ่งควบคุมได้ด้วย Input ที่ไม่ได้ถูกตรวจสอบ (unsanitized input) ปัญหานี้ส่งผลกระทบต่อเฟรมเวิร์กและเครื่องมือ Application Performance Monitoring (APM) จำนวนมาก เช่น React Server Components, Next.js, Datadog, New Relic, Dynatrace, Elastic APM และ OpenTelemetry ซึ่งใช้ `AsyncLocalStorage` ที่สร้างขึ้นบน `async_hooks` Node.js ได้แก้ไขปัญหานี้ในเวอร์ชัน 20.20.0 (LTS), 22.22.0 (LTS), 24.13.0 (LTS) และ 25.3.0 (Current) อย่างไรก็ตาม Node.js เวอร์ชัน 8.x ถึง 18.x ที่ถึงวันสิ้นสุดการสนับสนุน (EoL) จะไม่ได้รับการแพทช์
Severity: วิกฤต
System Impact:
- Node.js (เวอร์ชัน 8.x ถึง 18.x มีผลกระทบแต่ไม่ได้รับการแพทช์, เวอร์ชัน 20.20.0, 22.22.0, 24.13.0, 25.3.0 ได้รับการแก้ไข)
- V8 JavaScript engine (ส่วนหนึ่งของ Node.js)
- เฟรมเวิร์กที่ใช้ `async_hooks` หรือ `AsyncLocalStorage` (เช่น React Server Components, Next.js)
- เครื่องมือ APM ที่ใช้ `async_hooks` หรือ `AsyncLocalStorage` (เช่น Datadog, New Relic, Dynatrace, Elastic APM, OpenTelemetry)
- แอปพลิเคชัน Node.js ที่ใช้งานจริงส่วนใหญ่
Technical Attack Steps:
- 1. ผู้โจมตีส่ง Input ที่ไม่ได้ถูกตรวจสอบ (unsanitized input) ที่สามารถควบคุมความลึกของการเรียกซ้ำ (recursion depth) ในโค้ดผู้ใช้ของแอปพลิเคชัน Node.js
- 2. เมื่อ `async_hooks` (หรือคอมโพเนนต์ที่สร้างขึ้นบน `async_hooks` เช่น `AsyncLocalStorage`) ถูกเปิดใช้งาน Input นี้จะกระตุ้นให้เกิด Stack Overflow
- 3. แทนที่จะจัดการข้อผิดพลาดอย่างเหมาะสม Node.js กลับหยุดทำงานโดยตรงด้วยรหัส Exit Code 7 (Internal Exception Handler Run-Time Failure)
- 4. สิ่งนี้ส่งผลให้เกิดสภาวะ Denial-of-Service (DoS) ของแอปพลิเคชัน ทำให้ไม่สามารถให้บริการได้
Recommendations:
Short Term:
- อัปเดต Node.js เป็นเวอร์ชันที่ได้รับการแก้ไขโดยทันที: 20.20.0 (LTS), 22.22.0 (LTS), 24.13.0 (LTS) หรือ 25.3.0 (Current)
- ผู้ใช้งานเฟรมเวิร์ก/เครื่องมือที่ได้รับผลกระทบ และผู้ให้บริการโฮสติ้งเซิร์ฟเวอร์ ควรทำการอัปเดตโดยเร็วที่สุด
Long Term:
- ผู้ดูแลไลบรารีและเฟรมเวิร์กควรใช้มาตรการป้องกันที่แข็งแกร่งขึ้นเพื่อรับมือกับการหมดลงของ Stack Space และเพื่อให้มั่นใจในความพร้อมใช้งานของบริการ
- ติดตั้งการตรวจสอบและกรอง Input (input sanitization) เพื่อป้องกันไม่ให้ความลึกของการเรียกซ้ำถูกควบคุมโดย Input ที่ไม่น่าเชื่อถือ
- พิจารณาอัปเกรดจากเวอร์ชัน Node.js ที่ถึงวันสิ้นสุดการสนับสนุน (8.x ถึง 18.x) เนื่องจากจะไม่ได้รับการแพทช์สำหรับช่องโหว่นี้
- ติดตามข่าวสารและประกาศด้านความปลอดภัยของ Node.js อย่างสม่ำเสมอ
Source: https://thehackernews.com/2026/01/critical-nodejs-vulnerability-can-cause.html
Share this content: