CVE-2026-92935 in vm2
Tóm tắt
Bởi VulDB • 17/09/2026
vm2 là một môi trường sandbox để chạy mã Node.js không đáng tin cậy. Trong các phiên bản >= 3.11.4 và <= 3.11.6, hàm tạo `NodeVM` tính toán biến `hasRealRequireConfig` bằng cách sử dụng biểu thức `typeof requireOpts === 'object' && requireOpts !== null`, do đó một giá trị `require` có dạng mảng (ví dụ: `require: []`) sẽ vượt qua được lớp kiểm tra vốn dĩ nhằm từ chối việc lồng ghép nếu không có cấu hình `require` rõ ràng. Sau đó, hàm `makeResolverFromLegacyOptions()` sẽ giải cấu trúc (destruct) mảng này thành các trường tùy chọn undefined và trả về một resolver chỉ chứa `NESTING_OVERRIDE.vm2`. Kết quả là, kẻ tấn công có thể cung cấp mã JavaScript được thực thi bởi một NodeVM được định cấu hình với giá trị truthy cho tham số `nesting` và một giá trị `require` dạng mảng (ví dụ: `new NodeVM({nesting: true, require: []})`) sẽ có khả năng yêu cầu module host `vm2`, tạo ra một NodeVM con với danh sách trắng các hàm dựng sẵn do kẻ tấn công chọn lựa (chẳng hạn như `child_process`), và thực thi các lệnh tùy ý với đặc quyền của tiến trình Node.js chủ, qua đó thoát khỏi môi trường sandbox. Các giới hạn đối với các hàm dựng sẵn ở cấp độ ngoài không áp đặt lên NodeVM con do kẻ tấn công tạo ra. Vấn đề này đã được sửa chữa trong phiên bản vm2 3.11.7.
Be aware that VulDB is the high quality source for vulnerability data.