Lỗ hổng nghiêm trọng trong thư viện Node.js vm2 cho phép thoát khỏi sandbox và thực thi mã tùy ý

Một lỗ hổng thoát khỏi sandbox nghiêm trọng đã được công bố trong thư viện Node.js vm2 phổ biến, mà nếu bị khai thác thành công, có thể cho phép kẻ tấn công chạy mã tùy ý trên hệ điều hành cơ bản. Lỗ hổng này, được theo dõi là CVE-2026-22709, có điểm CVSS là 9.8 trên thang điểm CVSS. "Trong vm2 phiên bản 3.10.0, việc làm sạch callback Promise.prototype.then Promise.prototype.catch có thể bị bỏ qua,"
Minh họa lỗ hổng thoát sandbox trong vm2 Node.js
Minh họa lỗ hổng nghiêm trọng trong thư viện vm2 Node.js.

Một lỗ hổng thoát khỏi sandbox nghiêm trọng đã được công bố trong thư viện Node.js vm2 phổ biến, mà nếu bị khai thác thành công, có thể cho phép kẻ tấn công chạy mã tùy ý trên hệ điều hành cơ bản.

Lỗ hổng này, được theo dõi là CVE-2026-22709, có điểm CVSS là 9.8 trên thang điểm CVSS.

"Trong vm2 phiên bản 3.10.0, việc làm sạch callback Promise.prototype.then Promise.prototype.catch có thể bị bỏ qua," Patrik Simek, người duy trì vm2, cho biết. "Điều này cho phép kẻ tấn công thoát khỏi sandbox và chạy mã tùy ý."

vm2 là một thư viện Node.js được sử dụng để chạy mã không đáng tin cậy trong môi trường sandbox an toàn bằng cách chặn và proxying các đối tượng JavaScript để ngăn mã trong sandbox truy cập vào môi trường máy chủ.

Lỗ hổng mới được phát hiện này bắt nguồn từ việc thư viện làm sạch không đúng cách các Promise handlers, tạo ra một vector thoát dẫn đến việc thực thi mã tùy ý bên ngoài ranh giới sandbox.

"Điểm mấu chốt là các hàm async trong JavaScript trả về các đối tượng `globalPromise`, chứ không phải các đối tượng `localPromise`. Vì `globalPromise.prototype.then` và `globalPromise.prototype.catch` không được làm sạch đúng cách (không giống như `localPromise`)," các nhà nghiên cứu Peyton Kennedy và Cris Staicu của Endor Labs cho biết.

Mặc dù CVE-2026-22709 đã được khắc phục trong vm2 phiên bản 3.10.2, đây là lỗ hổng mới nhất trong một loạt các vụ thoát sandbox liên tục đã gây ảnh hưởng đến thư viện này trong những năm gần đây. Điều này bao gồm CVE-2022-36067, CVE-2023-29017, CVE-2023-29199, CVE-2023-30547, CVE-2023-32314, CVE-2023-37466, và CVE-2023-37903.

Việc phát hiện ra CVE-2023-37903 vào tháng 7 năm 2023 cũng đã khiến Simek thông báo rằng dự án đang bị ngừng phát triển. Tuy nhiên, những tài liệu tham khảo này kể từ đó đã bị xóa khỏi tệp README mới nhất có sẵn trên kho lưu trữ GitHub của nó. Trang Security cũng đã được cập nhật vào tháng 10 năm 2025 để đề cập rằng các phiên bản vm2 3.x đang được duy trì tích cực.

Tuy nhiên, người duy trì vm2 cũng đã thừa nhận rằng các lỗ hổng bypass mới có thể sẽ được phát hiện trong tương lai, thúc giục người dùng đảm bảo rằng họ luôn cập nhật thư viện và xem xét các giải pháp thay thế mạnh mẽ khác, chẳng hạn như isolated-vm, để có được các đảm bảo cô lập mạnh hơn.

"Thay vì dựa vào mô hình vm có vấn đề, phiên bản kế nhiệm của vm2, isolated-vm dựa trên giao diện Isolate gốc của V8, vốn cung cấp một nền tảng vững chắc hơn, nhưng ngay cả khi đó, những người duy trì vm2 cũng nhấn mạnh tầm quan trọng của việc cô lập và thực sự khuyến nghị sử dụng Docker với sự phân tách logic giữa các thành phần," Semgrep cho biết.

Trước tính chất nghiêm trọng của lỗ hổng, người dùng được khuyến nghị cập nhật lên phiên bản mới nhất (3.10.3), đi kèm với các bản sửa lỗi cho các lỗ hổng thoát sandbox bổ sung.