CVE-2026-100721
vm2 3.12.2 未満におけるカスタムリゾルバー経由の認可バイパス
- 公開済み
- 2026/09/27
- 更新済み
- 2026/09/27
- CNA の割り当て
- VulnCheck
- 観察された証拠
- 2026/10/03
プライマリ CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X概要
vm2 3.12.2 より前のバージョンには、NodeVM の外部モジュールリゾルバーにおける認可バイパスが存在します。エンベッダーが `require.external` をカスタムリゾルバーで設定した場合(かつ `context: 'host'`)、lib/resolver-compat.js の `LegacyResolver.customResolve` は、解決されたモジュールディレクトリを `this.externals` に `new RegExp('^' + escapeRegExp(resolvedPath))` として記録しますが、パス区切り文字や文字列終端の境界を要求していません。そのため、信頼できないゲストコードは、許可リストに含まれるモジュール(例: `foo`)を require した後、解決されたプレフィックスを単に共有するだけの許可リスト外の兄弟モジュール(例: `.../node_modules/foo2/index.js`)の絶対パスを require することができます。この兄弟モジュールは `isPathAllowedForModule` を通過し、`hostRequire` を通じてロードされるため、そのトップレベルコードはエクスポートが `vm.readonly` でラップされる前にホストプロセスで実行され、結果としてサンドボックスエスケープおよびホストコンテキストでの任意コード実行が発生します。
ソース
CVE-2026-100721 用の Python PoC: vm2 <3.12.2 の NodeVM 外部 allowlist バイパスを検出・悪用し、ローカルラボまたは大量の HTTP ターゲット経由でサンドボックスエスケープとホスト RCE を達成します。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。