
CVE-2026-64531(OVSwrap)PoC - LinuxカーネルOpen vSwitch LPE。パッチ検証とセキュリティ研究用。
Linux カーネル Open vSwitch モジュールのローカル権限昇格(一般ユーザー → root)PoC。16 ビット nla_len フィールドの整数ラップアラウンドを利用し、一般ユーザーから root まで一気に昇格します。
OVS が生成するネストされた action ストリームが 65535 バイトを超えると、16 ビットの nla_len フィールドがラップアラウンドします。攻撃者はプライベートユーザー/ネットワーク名前空間内で CAP_NET_ADMIN を保持しているだけで、超長の CLONE action を構築でき、カーネルのパーサーを攻撃者が制御する conntrack データへと誘導します。これにより任意のカーネル読み取りとワード単位のデクリメントプリミティブを獲得し、最終的に自身の資格情報を改ざんして root に昇格します。
このバグは、13 年間存在した安全でない代入(commit 74f84a5726c7)に起因します。これまでは 32 KiB の総長上限によって保護されていましたが、2025 年 3 月の commit a1e64addf3ff で上限が削除された後に発現するようになりました。
openvswitch モジュールunshare -Urn(初期名前空間の権限は不要)6.13–6.17、6.19、7.0 系は EOL となっており、修正は提供されません。
unshare -Urn)、sudo がインストールされていること# 必须以普通(非 root)用户运行
python3 ovswrap-poc.py
スクリプトは自動的に unshare -Urn でプライベートユーザー+ネットワーク名前空間に入ります。約 800 種類の x86-64 カーネルビルド向けの事前導出オフセットテーブルを内蔵しており、一致しない場合は System.map / BTF / pahole から動的に導出を試みます。成功すると、/etc/sudoers.d/ にエントリを書き込むことで、パスワードなしの root シェルを取得します。
セキュリティ研究、脆弱性の検証、および防御的テストのみを目的としています。この PoC はカーネルの資格情報を破壊し、sudoers ファイルを変更し、ゾンビプロセスや破損した OVS 状態を残します。必ず破棄可能な仮想マシン内で実行し、本番環境や許可のない環境では実行しないでください。
3f1f755366687d051174739fb99f7d560202f60b| カーネルシリーズ | 影響を受ける範囲 | 最初の修正バージョン |
|---|
| 5.15.y | 5.15.180 – 5.15.211 | 5.15.212 |
| 6.1.y | 6.1.132 – 6.1.177 | 6.1.178 |
| 6.6.y | 6.6.84 – 6.6.144 | 6.6.145 |
| 6.12.y | 6.12.20 – 6.12.96 | 6.12.97 |
| 6.18.y | 6.18.0 – 6.18.39 | 6.18.40 |
| 7.1.y | 7.1.0 – 7.1.4 | 7.1.5 |