พบช่องโหว่ร้ายแรง (CVE-2026-22709) ในไลบรารี vm2 Node.js ซึ่งเป็นไลบรารีที่ใช้ในการรันโค้ดที่ไม่น่าเชื่อถือในสภาพแวดล้อมแซนด์บ็อกซ์ที่ปลอดภัย ช่องโหว่นี้มีคะแนน CVSS ที่ 9.8 (วิกฤต) และเกิดจากการ Sanitization ที่ไม่เหมาะสมของ Promise handlers ทำให้ผู้โจมตีสามารถหลุดออกจากแซนด์บ็อกซ์และรันโค้ดตามอำเภอใจบนระบบปฏิบัติการได้ ช่องโหว่นี้เป็นหนึ่งในหลายๆ ช่องโหว่ประเภท Sandbox Escape ที่พบใน vm2 ในช่วงไม่กี่ปีที่ผ่านมา แม้ผู้ดูแลจะเคยพิจารณาหยุดพัฒนา แต่ปัจจุบันก็ยังคงดูแลเวอร์ชัน 3.x อยู่ ผู้ใช้งานควรอัปเดตเวอร์ชันล่าสุดและพิจารณาทางเลือกอื่นที่ให้การแยกส่วนที่แข็งแกร่งกว่า
Severity: วิกฤต
System Impact:
- vm2 Node.js library (เวอร์ชัน 3.10.0 และต่ำกว่า)
- ระบบปฏิบัติการที่รันโค้ดผ่าน vm2
Technical Attack Steps:
- ผู้โจมตีใช้ช่องโหว่ CVE-2026-22709 ซึ่งอยู่ในไลบรารี vm2 Node.js
- ช่องโหว่นี้เกิดจากการ Sanitization ที่ไม่เหมาะสมของ Callback ของ Promise.prototype.then และ Promise.prototype.catch
- ฟังก์ชัน Asynchronous ใน JavaScript จะคืนค่าเป็น ‘globalPromise’ objects ไม่ใช่ ‘localPromise’ objects
- ‘globalPromise.prototype.then’ และ ‘globalPromise.prototype.catch’ ไม่ได้รับการ Sanitization อย่างถูกต้อง ทำให้เกิดช่องทางในการ Bypass แซนด์บ็อกซ์
- การ Bypass นี้ส่งผลให้เกิด Sandbox Escape และสามารถรันโค้ดตามอำเภอใจบนระบบปฏิบัติการโฮสต์ได้
Recommendations:
Short Term:
- อัปเดตไลบรารี vm2 Node.js เป็นเวอร์ชันล่าสุดทันที (แนะนำเวอร์ชัน 3.10.3 ขึ้นไป) ซึ่งมีการแก้ไขช่องโหว่ Sandbox Escape เพิ่มเติม
Long Term:
- ตรวจสอบและอัปเดตไลบรารี vm2 อย่างสม่ำเสมอ เนื่องจากมีประวัติการพบช่องโหว่ Sandbox Escape หลายครั้ง
- พิจารณาใช้ทางเลือกอื่นที่ให้การแยกส่วนที่แข็งแกร่งกว่า เช่น isolated-vm ซึ่งใช้ V8’s native Isolate interface
- ใช้ Docker หรือการแยกส่วนเชิงตรรกะ (logical separation) ระหว่างส่วนประกอบต่างๆ เพื่อเพิ่มความปลอดภัยในการรันโค้ดที่ไม่น่าเชื่อถือ
Source: https://thehackernews.com/2026/01/critical-vm2-nodejs-flaw-allows-sandbox.html
Share this content: