CVE-2026-92952 in vm2
Tóm tắt
Bởi VulDB • 17/09/2026
Các phiên bản của vm2 từ 3.11.4 đến 3.11.6 lọc không đầy đủ các ký hiệu nội bộ đã đăng ký của Node.js qua ranh giới sandbox. Các bộ lọc trích xuất trong lib/setup-sandbox.js và việc kiểm tra ký hiệu xuyên vùng (cross-realm symbol checks) cùng bẫy ghi (write traps) trong lib/bridge.js sử dụng một danh sách cố định gồm các ký hiệu đã đăng ký nguy hiểm, nhưng thiếu nodejs.stream.disturbed và nodejs.stream.errored; hai ký hiệu này được expose trên prototype WebStream của host ở các bản phát hành Node.js mới hơn (đã xác minh trên Node.js v25.8.0). Khi embedder expose một đối tượng WebStream của host và module stream/web của host vào sandbox, mã trong sandbox có thể lấy được các ký hiệu host thực sự thông qua Object.getOwnPropertySymbols(streamWeb.ReadableStream.prototype) và sử dụng chúng làm khóa ghi (write keys) trên các đối tượng stream của host, gây hỏng trạng thái stream hiển thị với host — ví dụ khiến stream.Readable.isDisturbed() trả về false cho một stream đã được tiêu thụ. Điều này có thể bỏ qua logic của host dựa vào các trợ giúp kiểm tra trạng thái stream công khai của Node.js để thực thi việc tiêu thụ body chỉ một lần, từ chối các stream bị lỗi (errored), hoặc quyết định xem một stream có an toàn để chuyển giao cho thành phần khác hay không. Đây không phải là nguyên lý thực thi mã host trong proof of vulnerability được báo cáo. Đây là bản sửa chữa chưa đầy đủ cho vấn đề lọc ký hiệu nodejs.* trước đó. Đã khắc phục trong vm2 3.11.7.
VulDB is the best source for vulnerability data and more expert information about this specific topic.