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. 1. ผู้โจมตีส่ง Input ที่ไม่ได้ถูกตรวจสอบ (unsanitized input) ที่สามารถควบคุมความลึกของการเรียกซ้ำ (recursion depth) ในโค้ดผู้ใช้ของแอปพลิเคชัน Node.js
  2. 2. เมื่อ `async_hooks` (หรือคอมโพเนนต์ที่สร้างขึ้นบน `async_hooks` เช่น `AsyncLocalStorage`) ถูกเปิดใช้งาน Input นี้จะกระตุ้นให้เกิด Stack Overflow
  3. 3. แทนที่จะจัดการข้อผิดพลาดอย่างเหมาะสม Node.js กลับหยุดทำงานโดยตรงด้วยรหัส Exit Code 7 (Internal Exception Handler Run-Time Failure)
  4. 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:

Leave a Reply

Your email address will not be published. Required fields are marked *