KVMエスケープでLinuxネットワーク機能の攻撃対象領域の広がりが明らかに

チェックサムオフロードに関わる脆弱性「PwnEscape」は、LinuxホストのIPv4ネットワークサブシステムに端を発します。研究者は、ネットワークスタックの別の箇所にも同様のバグが存在する可能性があると警告しています。

セキュリティ研究者が、Linuxカーネルのネットワークスタックに重大な脆弱性を発見しました。攻撃者はこの脆弱性を悪用して、KVM仮想マシンから脱出し、ホストシステム上でコードを実行できる可能性があります。他のLinuxベースの仮想化基盤やサンドボックス基盤を稼働させているシステムも、侵害される恐れがあります。

この脆弱性はCVE-2026-99999として管理され、「PwnEscape」と名付けられました。発見したのは、AIを活用したペネトレーションテストのスタートアップ、Pwn.aiの研究者です。Vercelのサンドボックス基盤を攻略する100万ドルのチャレンジに参加した際に見つけました。同基盤はKVMベースのFirecracker microVMを使用しています。攻撃の標的はKVMハイパーバイザー自体のバグではなく、仮想マシン内部からのトラフィックを処理するLinuxのネットワークコードです。細工したパケットを使うと、ホストのカーネルが検証を終えた後のIPv4ヘッダーを書き換えられます。その結果、後続の処理が攻撃者に操作されたパケットデータを信頼してしまいます。

Pwn.aiの研究者は、Vercelの本番サンドボックスに対するホストメモリのリークを実証しました。さらに、研究者が管理する別のシステムでは、ホストのクラッシュとroot権限でのコード実行にも成功しています。Vercelはこの調査結果を認めました。ただし、顧客のファイル、シークレット、アプリケーションデータへのアクセスを示す報告はないとしています。

修正はLinuxカーネルのメインラインにマージされました。複数のディストリビューション向けに、パッチ適用済みのカーネルバージョンも提供されています。ゲストVMだけを更新しても脆弱性は解消されないため、管理者はホストシステムにカーネルの更新プログラムを適用する必要があります。

この脆弱性はチェックサムオフロードに関係しています。チェックサムオフロードは、パケットのチェックサム計算を後回しにできるようにする性能最適化の仕組みです。カーネルはパケットとともに、計算の開始位置と結果の書き込み先を示すメタデータを保持します。ところが仮想ネットワークでは、この指示が信頼できないゲストから渡される場合があります。

問題の実装は、チェックサムの完了処理が検証済みのIPv4ヘッダーに影響しないことを保証していませんでした。このため、ゲストが制御するメタデータがヘッダーに直接書き込まれ、パケットを小さなフラグメントに分割して送信する前に、通知される長さを変更できてしまいます。

研究者は実証実験で、ヘッダー長を20バイトから60バイトに書き換えました。このときパケットバッファに入っていた有効なデータは、28バイトだけです。フラグメント化の処理では、その有効なデータを超えた32バイトが送信パケットにコピーされ、ホストのメモリが漏えいしました。研究者はこの手順を繰り返して挙動を観察し、メモリ割り当ても制御しました。これによりホストカーネルのメモリへの書き込みを実現し、ヘルパープログラムをrootとして実行しています。メモリリークからコード実行に至る攻撃手順の全容は、まだ公開されていません。研究者は別途、詳細な解説を公開する予定です。

研究者は次のように述べています。「アロケーターに依存する書き込みチェーン、オブジェクトの生存期間の制御、そのほかハイパーバイザー固有の調整は、独立した記事が必要になるほどの分量です。ただ、セキュリティ業界はこの投稿をもとに、影響を受けるほかのハイパーバイザーを特定するだろうと考えています。条件の緩い構成でのエクスプロイトは数週間以内に、ハイパーバイザーのデフォルト構成で動作するエクスプロイトは1カ月以内に登場すると予想しています」

攻撃対象領域はKVMにとどまらない

PwnEscapeは、ハイパーバイザーによる仮想CPUやメモリの扱いを狙う、ほかのVMエスケープ攻撃とは異なります。たとえば、今年に入って公開された脆弱性「Januscape」は、KVMのメモリ管理コードに影響するものでした。今回のエクスプロイトでは、脆弱なコードはLinuxホストのIPv4ネットワークサブシステムにあります。

研究者は、ネットワークスタックの別の箇所にも同様のバグが存在する可能性があると警告しています。ゲストが制御するメタデータが、検証を通過した後のパケットフィールドを変更できる箇所であれば、どこでも起こり得ます。

採用されたパッチは、Red Hatの開発者Michael S. Tsirkin氏が作成しました。IPv4のフラグメント化、ブリッジのコネクショントラッキング、パケットフィルタリングなど、チェックサム完了処理の5カ所に検証を追加しています。ただしパッチのコミットメッセージには、「入力時点でのより完全な検証が予定されているが、さらなる作業が必要」と記されています。

この脆弱性が他のハイパーバイザーやコンテナ技術にどこまで影響するかは、まだ分かっていません。Red Hatは、OpenShift Container Platformのコンポーネントが影響を受けるとしています。一方、DockerやXenといった他の仮想化技術は、まだアドバイザリーを出していません。

ゲストからホストへの攻撃を成立させるには、仮想ネットワーク経由で不正な形式のトラフィックを送り込める、攻撃者制御下のワークロードが必要です。そのため、VM内で信頼できないコードの実行を許可している環境の管理者は、できるだけ早く対処する必要があります。

コンテナセキュリティ企業EderaのCTO兼共同創業者であるAlex Zenla氏は、CSOの取材にこう語りました。「KVMはLinuxカーネルの内部で動作するため、VMエスケープもカーネルの脆弱性の一つと言えます。ただし、その影響ははるかに深刻です。ゲストが脱出した場合、きちんと隔離されたハイパーバイザーに入り込むわけではありません。ホストのプロセス、ドライバー、ネットワークスタックを所有するOSの最下層に到達し得ます。これは重大な問題であり、特権レイヤーを意図的に極小に設計したハイパーバイザーとは、セキュリティ上の位置づけがまったく異なります」

今年は、KVMをはじめとするカーネルベースの仮想化コンポーネントで、重大な脆弱性が複数見つかっています。PwnEscapeを含め、一部はLLMの支援によって発見されました。また、テスト中にAIエージェントがサンドボックスからの脱出を試みる様子も確認されています。仮想化環境におけるワークロード分離の前提が、揺らぎつつあります。

Zenla氏はこう述べています。「セキュリティアーキテクチャは、いずれ何かが侵害されることを前提にしなければなりません。そのうえで、その侵害がホスト全体の掌握につながらないようにする必要があります」

AWSは、マネージドサービスのEC2、Lambda、FargateはCVE-2026-99999の影響を受けないとしています。ただし、脆弱なホスト上でvirtio-netネットワーキングを使い、独自にKVM仮想マシンを運用している顧客は、該当するカーネルの更新プログラムを適用する必要があります。修正は古いカーネルバージョンにバックポートされる場合があるため、管理者は各ディストリビューションのアドバイザリーに従ってください。

翻訳元: https://www.csoonline.com/article/4237999/kvm-escape-exposes-broader-attack-surface-in-linux-networking.html

本記事は csoonline.com の記事を翻訳・要約したものです。