
CVE-2026-43284 および CVE-2026-43500 Dirty Frag PoC とエクスプロイト
CVE-2026-43284 (XFRM/ESP) および CVE-2026-43500 (RxRPC/RXKAD) 向けの読み取り可能なN4Cデモンストレーター。
このPoCは一つの問いに答えます: 特権のないプロセスが、共有された sk_buff フラグメントを通じて、root所有の読み取り専用ファイルのページキャッシュを変更できるか?
これは /usr/bin/su や /etc/passwd を上書きせず、ペイロードをインストールせず、PAM/NSSを呼び出さず、シェルを起動しません。完全な公開エクスプロイトは exploit ブランチに残されています。
dirtyfrag-poc.c — 2つのページキャッシュプリミティブと小さなCLI。prepare-lab.sh — 無害なroot所有のフィクスチャを2つ作成します。run_as_1000.c / run-as-1000 — VMのrootシェルをuid/gid 1000に降格させます。Makefile — 再現可能な静的ビルド。--esp)読み取り専用フィクスチャ
-> splice(ファイル -> パイプ -> UDPソケット)
-> skbページフラグメント
-> ESP authencesn インプレースSTORE
-> 最初の4キャッシュバイトが "N4C!" になる
使用されるのは1つのXFRM SAと1回の4バイト書き込みのみです。公開エクスプロイトのrootシェルELFと48トリガーアセンブリループは削除されました。
--rxrpc)読み取り専用フィクスチャ
-> splice(ファイル -> 偽造RxRPC DATAパケット)
-> RXKAD pcbc(fcrypt) インプレース復号
-> キー選択による1回の8バイト書き込み
-> キャッシュされたバイトが元のフィクスチャと異なる
このPoCはパスワード形状の平文を検索しません。変更された8バイトブロックがあれば、それだけでプリミティブが証明されるからです。オフラインのfcryptブルートフォース、重複書き込みプランナー、PAM、getent、パスワードなしの su、PTY処理、シェルコードは削除されました。
必要なカーネル機能を含む、使い捨ての認可されたLinux VMでのみ使用してください。
make
# VMのrootユーザーとして一度実行し、既知のフィクスチャバイトを再作成します。
./prepare-lab.sh
# ヘルパーはその後、uid/gid 1000としてPoCを実行します。
./run-as-1000 ./dirtyfrag-poc --esp --verbose
./prepare-lab.sh
./run-as-1000 ./dirtyfrag-poc --rxrpc --verbose
終了ステータス:
0 — マーカーがページキャッシュに出現。プリミティブが観測されました。1 — マーカーが出現せず。共有フラグメント書き込みが拒否されました。2 — 無効なフィクスチャ、サポートされていない環境、またはセットアップ失敗。3 — 検証前にRxRPCトリガーが失敗。実行の間にフィクスチャを再作成するか、使い捨てVMを再起動してください。
main() は1つのプリミティブを選択し、uid 0としての実行を拒否します。esp_poc() は4バイトのXFRM/ESPケースを示します。rxrpc_poc() は1つのトリガーと直接的な前後比較を示します。プロトコル構築はLinuxカーネルソースと、コミット aab16fcada27142dd8ce8704906cf6736cf213b8 における公開の V4bel/dirtyfrag リファレンス実装から派生しました。N4Cは実行フローをこのフィクスチャ専用デモンストレーターに書き直し、権限昇格ペイロードとコンシューマーステージを削除しました。