最近公表されたLinuxのローカル権限昇格脆弱性CVE-2026-64531(通称OVSwrap)は、カーネルのOpen vSwitch(OVS)実装に影響を及ぼします。
この脆弱性により、権限を持たないローカルユーザーが影響を受けるシステム上でroot権限を取得できるおそれがあります。研究者のAsim Viladi Oglu Manizada氏は、Linuxカーネルセキュリティチームおよび Open vSwitchメンテナーと調整のうえ、7月28日にこの問題を報告しました。
Hacking& Cracking
この脆弱性は、Open vSwitchが内部で生成するNetlinkアクションストリームの処理における整数値のラップアラウンド(桁あふれ)に起因しており、従来のような不安定なヒープベースのエクスプロイトとは異なり、決定論的なメモリ破損経路を作り出します。
OVSwrap Open vSwitch脆弱性
Open vSwitchは、クラウド、仮想化、コンテナ、ソフトウェア定義ネットワーキング(SDN)環境で広く使われているソフトウェア定義型の仮想スイッチです。
Linuxでは、OVSの機能をユーザー空間のデーモンであるovs-vswitchdと、パケットフローを効率的に処理するカーネルのデータパスとに分割しています。
攻撃者は、この脆弱なカーネルコードにアクセスするために、既存のOVSブリッジや稼働中のOVSデーモン、あるいはホストレベルのCAP_NET_ADMIN権限を必要としません。
権限を持たないユーザー名前空間を許可しているシステムでは、ローカルユーザーが分離されたユーザー名前空間・ネットワーク名前空間を作成し、自分の名前空間内に限定されたネットワーク管理権限を取得したうえで、独自のOVSデータパスを確立できてしまいます。
この脆弱性は、OVSがユーザー提供のアクションを、Netlink属性で表現されるより大きな内部アクションストリームに変換する際に発生します。生成されるストリーム全体は64KBを超える場合がある一方、各ネストされた属性は16ビットのnla_lenフィールドを持ち、65,535バイト未満に収める必要があります。
パッチ適用前のOVSでは、このネストされた属性ごとの制約が強制されていませんでした。そのため攻撃者は、数百件ものコネクショントラッキング操作を含むCLONEアクションのような、16ビットの境界を超えるネストされたアクションを送信できました。
その結果、格納される長さの値がより小さな値へとラップアラウンド(桁あふれ)を起こし、後続の解析処理が、生成されたアクションペイロードの途中に位置するデータを新たなアクションであると誤って解釈してしまいます。
攻撃者は特定のコネクショントラッキングのフィールドを制御できるため、この脆弱性を利用すると、同一のメモリ割り当て内の予測可能なオフセット位置に偽造したアクション構造体を作成できてしまいます。
公開された概念実証(PoC)では、まずカーネルポインタを漏洩させ、次にカーネル読み取りプリミティブを確立し、最後に標的とするカーネルメモリに対して制約付きの減算操作を実行する手順が示されています。
研究者のHeyitsas氏は、ビルド固有のオフセットのおかげで、メモリ破損系の脆弱性としては異例なほど悪用の信頼性が高く、ヒープグルーミングを行う必要がない点を指摘しています。公開された概念実証には、数百種類にのぼるx86-64カーネルビルド向けにあらかじめ導出されたデータが含まれているとされています。
この脆弱性が実際に悪用可能となったのは、2025年3月のカーネル変更により、生成されるOVSアクションストリームに課されていた32KBの上限が撤廃されたことがきっかけです。
この変更はフロー変換処理における予測不能な失敗への対処を目的としたものでしたが、同時に、ネストされた属性が64KBのラップアラウンド地点に到達するのを従来防いでいた保護条件も取り除いてしまいました。この安全でない長さの割り当て処理は、約13年間にわたりOVSのコード内に存在していました。
影響を受けるアップストリームLinuxカーネル
| カーネルシリーズ | 影響を受けるバージョン | 最初に修正されたバージョン |
|---|---|---|
| 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.13.y | 6.13.8–6.13.12 | サポート終了、アップストリームの安定版修正なし |
| 6.14.y–6.17.y | 全リリース | サポート終了、アップストリームの安定版修正なし |
| 6.18.y | 6.18.0–6.18.39 | 6.18.40 |
| 6.19.y | 全リリース | サポート終了、アップストリームの安定版修正なし |
| 7.0.y | 全リリース | サポート終了、アップストリームの安定版修正なし |
| 7.1.y | 7.1.0–7.1.4 | 7.1.5 |
Linuxのメンテナーは、長さがU16_MAXを超えるネストされた生成アクションを拒否するという形でこの問題に対処し、値を切り詰める代わりに-EMSGSIZEを返すようにしました。
修正済みのアップストリームリリースには、Linuxバージョン5.15.212、6.1.178、6.6.145、6.12.97、6.18.40、7.1.5が含まれます。各組織は、パッチが適用されたベンダー提供のカーネルへ直ちに更新することが求められます。
パッチ適用が遅れる場合、管理者はOpen vSwitchモジュールが不要であればアンロードしてブラックリストに登録し、運用上可能な範囲で権限を持たないユーザー名前空間の使用を制限したうえで、名前空間スコープのCAP_NET_ADMIN権限が付与されているコンテナがないか評価する必要があります。
新たなフィッシングやマルウェアがビジネスを侵害する前に阻止しましょう。 世界15,000のSOCからのライブインテリジェンスを統合
Malwareremoval service
翻訳元: https://gbhackers.com/ovswrap-open-vswitch-flaw/