ホストLinuxのメモリーが送信パケットに混入する脆弱性

PwnEscape(CVE-2026-99999)は、仮想マシンを動かすホスト側のLinuxに見つかった、IPv4ネットワーク処理の脆弱性です。報告された攻撃経路では、攻撃者がゲストから細工したパケットとチェックサム情報を送ると、ホストLinuxがホストメモリーの一部をパケットに含めて送出し、攻撃者がその内容を読み出せました(研究者の技術報告、CVE原票)。

原因は、ホストがIPv4ヘッダーを解析した後、不正なチェックサム情報に従う処理がそのヘッダーを書き換えることです。その後の処理が書き換わったヘッダー長を使い、本来のパケットデータに含まれないホスト側のバイト列を送出しました。以下では、まず確認された影響と成立条件を示し、その後でこの処理順の問題と対策を説明します。

影響範囲:本番で確認されたことと、再現環境で確認されたこと

Vercelの10月14日付報告では、特別なアクセス権のない標準Sandboxから、ホストメモリーの開示が本番環境で実証されたと説明されています。一方、ホストのクラッシュと管理者権限でのコード実行は、Vercelの構成を再現した研究者所有の環境で実証されました。この再現環境では、Linuxの仮想化機能KVMと、仮想マシンを動かすソフトウェアであるFirecrackerが使われました。本番環境でのroot実行が確認されたという報告ではありません(Vercel報告)。

実証された影響確認された環境
ホストメモリーの開示Vercelの本番Sandbox
ホストのクラッシュ、管理者権限でのコード実行研究者所有の、Vercelの構成を再現した環境

研究者の制御実験では、有効なケースごとに32バイトの開示が再現されました。この数値は研究者環境での実証値です。Vercelの本番実証については、同社の報告に開示量の記載はありません(研究者の技術報告、Vercel報告)。

Vercelは、研究者を募った脆弱性発見チャレンジで、顧客ファイル・秘密・アプリケーションデータへのアクセスを示す報告はなかったとしています。これは同社が受けた報告の範囲についての説明です。この報告だけでは、開示されたホストメモリーに顧客情報が含まれたか、報告外の露出があったかは判断できません(Vercel報告)。

攻撃の入口は、条件を満たすゲストからホストへの通信

VercelのSandboxもFirecrackerを使っています。各ゲストは専用のカーネルで動きますが、ゲストが送る通信の一部は、仮想ネットワーク機器を通じてホストLinuxに処理されます。報告された経路では、ゲストに割り当てられたvirtio-netという仮想NICからFirecrackerを経て、ホスト側のTAPという仮想ネットワークインタフェースへ転送されたフレームをホストLinuxが処理します(Firecracker設計資料、CVE原票)。

この経路で重要なのが、チェックサム計算の一部をゲストで完了せず、ホスト側で仕上げる機能です。virtio-netは初期化時に、ホスト側の仮想機器が対応する機能を提示し、ゲストのドライバーがその中から使う機能を選びます。ここではホスト側に未完了のチェックサムを処理させる VIRTIO_NET_F_CSUM が有効な場合を扱います(virtio 1.3仕様の機能確認とネットワーク機能、機能を提示するFirecrackerの実装)。

チェックサムの完成をホスト側に任せた場合、ホスト側がTCP/UDPチェックサムを計算して所定の欄に書き込みます。受信側はその値を使って、通信データの破損を検出します。IPv4ヘッダー自体のチェックサム計算を委ねる機能とは別です。この件では、不正な指定によって、その書き込み先がIPv4ヘッダー内へ向いてしまうことが問題でした(Linux公式のチェックサム処理の説明、研究者の技術報告)。

報告されたゲスト経由の攻撃は、virtio-netの VIRTIO_NET_F_CSUM が有効で、ゲスト由来のチェックサム情報がホストLinuxへ届き、IPv4の断片化時にそのチェックサムを完了する経路で確認されました。ホストのルーティングやフィルター設定も、この経路への到達性に関係します(研究者の技術報告)。

一方、Red Hatの説明は不信なゲストVMに加え、ローカルの攻撃者も挙げています。研究者は、VMを使わずにTUNやAF_PACKET経由でパケットを渡す経路にも触れています。各入口を利用するための権限や設定は、ホストごとに確認する必要があります(研究者の技術報告)。

原因:検証した後のヘッダーを、後段の書き込みが変えてしまう

Linuxは、チェックサム計算を後段へ回すパケットに、どこから計算し、どこへ結果を書くかという情報を持たせます。CHECKSUM_PARTIAL が未完了の状態を表し、csum_start は計算開始位置、csum_offset はそこから結果の書き込み先までの距離です。通常は、この情報に従ってTCP/UDPなどのチェックサム欄を埋めます(固定版のLinux公式文書)。

報告された経路では、ホストがIPv4ヘッダーを解析し、パケットの再構成や経路処理を進めた後、出力するパケットを断片に分ける段階で、遅延していたチェックサム計算を完了しました。不正な情報が指定する書き込み先がIPv4ヘッダー内に入っていたため、すでに解析したヘッダーの長さを表すIHLが変わりました。

後続の断片化処理は、変更後の長さに従ってヘッダーをコピーしました。その結果、本来のパケットデータの範囲外にあるホスト由来のバイト列が、IPv4オプションの一部として送出されました。問題は、検証を済ませた内容を後から変更でき、その変更後の内容を別の処理が信用したことです。研究者は、スレッド間の競合や狭いタイミング窓を必要としない、処理順に起因する問題と説明しています(研究者の技術報告)。

この図は研究者が説明した経路を示しています。ネットワークからの任意の入力すべてで成立することを示す図ではありません。

対応:ホストLinuxの修正を確認する

CVE-2026-99999の原票は2026年10月15日に公開されました。Vercelの14日付報告にある「CVE待ち」は、その時点の説明です。修正状況はその後に公開・更新されたCVE原票や配布元の勧告で確認する必要があります(Vercel報告)。

Linuxの上流修正は、チェックサム開始位置がIPv4ヘッダーの末尾より前を指す場合、チェックサムの完了処理に進む前に拒否します。これにより、その書き込みがIPv4ヘッダー内に入ることを防ぎます。

検査はIPv4の断片化処理など複数のチェックサム完了箇所に追加されています。ただし、コミットとCVE告知はこれを多層防御と位置付け、より包括的な入力時検証には追加作業が必要と明記しています(修正コミット)。

配布元の修正提供と稼働ホストへの適用

2026年10月18日午前(日本時間)に確認した、主なパッケージの例です。配布元の提供・評価状況と、個々のホストへの適用は別の確認事項です。

対象公式資料の表示・提供段階確認時の注意点
Ubuntu 26.04・24.04・22.04の linuxNeeds evaluation評価待ちで、対象版の状態は未確定です。ほかのカーネル種別は別の行で確認します。
AlmaLinux 8・9・1010月16日付告知では、修正カーネルをtesting repositoryで提供同告知は、検証後にproduction repositoriesへ移す方針を説明しています。
Amazon Linux 2023の kernelFixed:勧告ALAS2023-2026-3197に本CVEと更新対象を掲載公式CVE状況ページで提供状態を確認できます。各サービスのホストへの適用は、事業者の告知で確認します。
RHELの kernel(確認例:8・9・10)Affected使用する製品・リリースごとに、CVE情報とerrataの対象一覧を確認します。

配布元は上流の修正を古いカーネル系列へバックポートすることがあります。例えばAL2023の勧告に載る kernel-6.1.188-233.385.amzn2023 は、上流6.1系列の修正境界 6.1.190 より小さい番号です。同勧告の変更履歴には、2026年10月15日にCVE-2026-99999を追加したと記載されています。利用OSとリリースに対応する公式勧告で修正パッケージを確認し、その版で判断します。

立場確認する対象対応の確認先
VMやコードsandboxのホストを自社で運用ゲストからホストへ届くネットワーク経路、配布元の修正パッケージ、インストール済み版、稼働中カーネル配布元の勧告とホストの適用記録を照合し、必要な再起動後に uname -r などで稼働中の版を確認します。
クラウドやsandboxサービスを利用自分が管理するゲストOSと、事業者が管理するホストを分けて確認ホスト側の修正状況と必要な保守対応は事業者の告知・案内を確認します。ゲストOSの更新だけではホスト側の確認は完了しません。

AlmaLinuxの案内は、rpm -q kernelでインストール済みのカーネルを、uname -rで稼働中の版を確認する方法を挙げています。インストール済みの一覧は、利用リリースの公式勧告にある修正パッケージと照合します。必要な再起動後は、修正が含まれるカーネルで起動したことを確認します。ホスト再起動はすべてのゲストに影響するため、事前に移行や停止を計画します。本CVE用のパッチが提供され、利用中カーネルに対応している場合は、Ubuntu Livepatchの確認手順に沿って、稼働中カーネルの適用状態と、そのパッチ版に対応するSecurity Noticeを照合します。