
教育用の防御キット。2つのLinuxページキャッシュ汚染LPE(DirtyClone CVE-2026-43503、pedit COW CVE-2026-46331)に対するハードニング、検出、検証、seccomp + 検証ハーネスを提供します。検出と防止のみ — エクスプロイトコードは含まれません。TLP:CLEAR.
2つのLinuxページキャッシュ破損ローカル特権昇格 — DirtyClone (CVE-2026-43503) および pedit COW (CVE-2026-46331) — に対する防御の検出、封じ込め、検証をホストおよびコンテナ上で行います。
これは教育的で防御的なセキュリティキットです。両方の脆弱性がシステムコールレベルでどのように動作するかを説明し、ハードニング、検出、検証、seccompツールを提供します。さらに、実際のカーネルでツールが動作することを証明する検証ハーネスも含まれています。設計上、エクスプロイト、シェルコード、ターゲットオフセットは含まれていません。
両方のCVEにより、特権のないローカルユーザーが、/usr/bin/su などのsetuid-rootバイナリのページキャッシュ(RAMコピー)を破損させることで、ディスク上のファイルに一切触れることなくrootになることができます。これにより、ファイル整合性監視は正常を示し、ディスクフォレンジックは何も見つけられず、再起動で破損がクリアされるため、ステルス性が高くなります。
カーネルにパッチを当てることが真の修正ですが、展開期間中およびその後の多層防御として、攻撃経路を閉じ、攻撃チェーンを監視し、自らの防御態勢を検証する必要があります。これこそがこのキットの提供するものであり、すべてのコントロールがエクスプロイトチェーンの文書化された各ステップにマッピングされているため、_なぜ_機能するのかが分かります。
両方のバグは同じ欠陥クラスです。カーネルがプライベートであると信じているバッファに書き込む一方で、そのバッファが依然として共有のファイルバックアップされたページキャッシュメモリに支えられています。 2つの構造的なゲートが両方のチェーンのすべてのバリアントを制御します:
上流では安定版ポイントリリース(DirtyClone ≥ 6.12.91 / 7.0.10; pedit COW 6.12.94 / 7.0.13)およびベンダーバックポートで修正済み;メインライン7.1で最終版。カーネルをディストリビューションのトラッカーと照合して確認 — docs/analysis.md §8を参照。
Linuxホストのみ。 これらのスクリプトは実際のカーネル状態を読み書きします。ハードニングは自分が管理するホストで実行し、破壊的な検証ハーネスは使い捨てのVMで実行してください。要件を参照。
# 1. ホスト封じ込めの変更をプレビュー(何も書き込まない)
sudo ./kit/harden-pagecache-lpe.sh --dry-run
# 2. userns制限 + 脆弱モジュールブロックを適用
sudo ./kit/harden-pagecache-lpe.sh
# 3. 防御態勢を検証 — 機能プローブを**非特権**ユーザーとして実行
sudo -u nobody ./kit/verify-pagecache-lpe.sh # 終了コード: 0=PASS 1=WARN 2=FAIL
# 4. (オプション)eBPFで攻撃チェーンをリアルタイム監視
sudo bpftrace ./kit/detect-pagecache-lpe.bt
コンテナの場合は、seccompオーバーレイを適用します(kit/seccomp-pagecache-lpe.json):
docker run --security-opt seccomp=kit/seccomp-pagecache-lpe.json <image>
はじめての方? START-HERE.md をお読みください — 根本原因から完全な検証実行までをガイドする講義形式のウォークスルーです。
.
├── START-HERE.md ガイドウォークスルー — 推奨エントリポイント
├── docs/ 「なぜ」: 分析と運用者ガイダンス
│ ├── analysis.md 根本原因分析、攻撃チェーン、検出エンジニアリング
│ ├── HARDENING-GUIDE.md 運用者向け封じ込めガイド(ホスト → systemd → Docker → Kubernetes)
│ └── plain-language-summary.md より優しい平易な英語の概要
├── kit/ 「実行するもの」: 4つの自己完結型アーティファクト
│ ├── harden-pagecache-lpe.sh ホスト封じ込めを適用 (sysctl + モジュールブロック)
│ ├── verify-pagecache-lpe.sh 読み取り専用の防御態勢チェック (PASS/WARN/FAIL)
│ ├── detect-pagecache-lpe.bt bpftrace/eBPFテレメトリ(ステージングチェーン用)
│ └── seccomp-pagecache-lpe.json チェーンのシステムコールを拒否するコンテナseccompオーバーレイ
└── testkit/ 「証明」: 検証ハーネス + SHOWCASE.mdの記述
harden, verify): bash, sysctl, modprobe, unshare を備えたLinuxホスト。ハードニングにはroot権限が必要;検証プローブは非rootユーザーで実行。detect-pagecache-lpe.bt): root権限、bpftrace ≥ 0.16、カーネルBTF (/sys/kernel/btf/vmlinux)。特定のカーネルでは一部のkprobeがインライン化されている場合があります — スクリプトのヘッダーで適応方法を説明しています。testkit/): 使い捨てのLinux VM — 実際の設定を書き込み、カーネルモジュールをアンロードします。EC2ランチャーにはAWS CLI v2とjqが必要です;SSHは使用しません(トランスポートはAWS SSM)。macOSユーザーはローカルのDockerスモークテストを実行できますが、完全な検証にはLinuxが必要です。TLP:CLEAR — 公開、無制限配布。 このリポジトリは検出と防止のみです。意図的に以下を含みます:
…そして意図的に除外しています:
このアプローチの正直な限界 — 検証が証明することと証明しないこと — は testkit/SHOWCASE.md §8 に文書化されています。自分が所有するか、テストを許可されたシステムでのみ使用してください。 ハードニングは封じ込めであり、治療ではありません:カーネルにパッチを当ててください。
START-HERE.md — ガイド付きウォークスルー(ここから開始)docs/analysis.md — 完全な技術分析docs/plain-language-summary.md — より優しい平易な英語の概要Issueとプルリクエストを歓迎します — CONTRIBUTING.mdを参照してください。コントロールが複数のファイルにわたってミラーリングされているため(モジュールリスト、usernsノブ、検出ビットマップ)、攻撃対象領域を変更する前にそのガイドの同期不変条件をお読みください。
Apache License 2.0 の下でライセンスされています。
| ゲート | 内容 | コントロールとしての強度 |
|---|
| 1. Capabilityパス | CAP_NET_ADMIN を非特権ユーザーネームスペース経由で取得 (unshare(CLONE_NEWUSER|CLONE_NEWNET)) | 強力な隘路 — すべてのバリアントがここを通過しなければなりません(既知・未知を問わず)。最初に閉じる。 |
| 2. モジュールサーフェス | 脆弱なモジュール: act_pedit, esp4/esp6, rxrpc, xt_TEE, nf_dup_ipv4/nf_dup_ipv6 | 多層防御 — 既知のプリミティブのみを除去;新しいsinkはこれをバイパスする可能性がある。 |
| コンポーネント | 役割 |
|---|
docs/analysis.md | 真実の源: 根本原因、動作攻撃チェーン、検出エンジニアリング、ハードニング、比較表。 |
docs/HARDENING-GUIDE.md | ホスト、systemdユニット、Docker/Podman、Kubernetes向けの階層的封じ込め。 |
kit/ | 4つの成果物。このディレクトリを防御対象のホストにコピーする。 |
testkit/ | 実際のカーネル上での再現可能な検証(ローカルDocker + 使い捨てEC2)、および SHOWCASE.md — テストの証明内容と限界を正直に評価。 |