
Linuxカーネルのローカル権限昇格PoC(CVE-2026-68121)で、PPPoE、FUSE、IP6GREを連鎖させてカーネルメモリを破壊し、root権限を取得します。
[!WARNING] このPoCは、防御担当者、メンテナー、および認可されたセキュリティチームが、自身が所有する、または明示的にテストを許可されたシステム上で、パッチ、緩和策、検知、および露出を検証するためにのみ提供されています。
この資料の使用が合法で、認可され、管理され、隔離されたテスト環境で実施されることを保証する責任は、あなたにのみあります。
[!WARNING] このPoCは破壊的です。 稼働中のカーネルメモリを意図的に破壊します。 誤った位置への上書きは、無関係なカーネルメモリを破壊し、マシンをハング/クラッシュさせる可能性があります。
使い捨てのVM/捨てホストでのみ実行してください。
PoCの動作:
struct fileオブジェクトを含むAF_PACKET TX-ringキャリアを構築し、エントリが埋まったfdtableをターゲットの割り当てにグルーミングするdev_hard_header()にskbヘッドを再割り当てさせ、その後古いPPPoEヘッダポインタを使用してfdtableエントリを偽のファイルにリダイレクトし、/bin/sh -pを開く。PoCは簡潔さを保つためx86-64を前提とし、対象としています。理論上、このバグはアーキテクチャ固有のものではないはずですが、移植するには多くの作業(カーネルベースのリークからチェーンの残りの部分まで)が必要になります。
完全を期すために網羅的に列挙します:
6.19.10-300.fc44.x86_64を搭載したFedora 44、または6.8.0-124-genericもしくは6.8.0-136-genericを搭載したUbuntu 24.04(これらのチェックを削除して試すことはできますが、他のディストリビューション/カーネルバージョンではターゲットごとのカスタマイズ/グルーミングが必要になる場合があります)passwdエントリと自身が所有するホームディレクトリを持つ、通常の非rootアカウントCAP_NET_ADMINおよびCAP_NET_RAWを持つ、非特権のユーザー/ネットワーク名前空間の作成/dev/fuseへの読み書きアクセス、およびFedoraではFUSE、PPPoE、IP6GRE、AF_PACKET/TX-ring、teamのサポート、UbuntuではbondingのサポートmembarrierRLIMIT_NOFILEハードリミット。実行時にチェックされ、最大8,192個のディスクリプタを必要とする可能性がありますgcc、taskset、unshare、ip、true、/bin/sh、さらにUbuntuで直接のunshare -Urnが拒否される場合はaa-execとロード済みのtrinityプロファイル4GBのRAMと、さまざまな4以上のCPU数でのみテストされています。他のCPU/メモリの組み合わせでは、より多くのグルーミングが必要になったり、無関係なメモリへの書き込みがリダイレクトされたりする可能性があります。
passwdエントリを持つ非特権ユーザーとして実行してください。Ubuntuでの変換には時間がかかる場合があります(例: 300回以上の試行)。
python3 pppoeject_root_repro.py