CVE-2026-3842対策:Azure Linux 3.0のQEMUを9.1.0-11へ更新

Azure Linux 3.0でQEMU/KVMホストを運用しており、qemu-9.1.0-10.azl3がインストールされている場合は、CVE-2026-3842の影響を受けます。対策はQEMUを9.1.0-11以降へ更新し、稼働中のQEMUプロセスを再生成することです。

パッケージを更新しただけでは、更新前から動いている仮想マシンのQEMUプロセスに修正コードは反映されません。VMの停止・起動、ライブマイグレーション、またはホスト再起動まで含めて対応を計画してください。MSRCは個別の回避策を掲載していないため、設定変更だけで更新を先延ばしにするのは適切ではありません。(msrc.microsoft.com)

目次

CVE-2026-3842の概要

CVE-2026-3842は、QEMUが実装するHyper-V synthetic debugger処理で発生する範囲外書き込みの脆弱性です。

名称に「Hyper-V」とありますが、Windows ServerのHyper-Vそのものではありません。QEMU内にあるHyper-V互換機能の実装が問題となっています。

項目内容
CVE番号CVE-2026-3842
対象OSAzure Linux 3.0
対象パッケージazl3 qemu 9.1.0-10
修正版azl3 qemu 9.1.0-11以降
問題のある処理Hyper-V synthetic debuggerの受信処理
脆弱性の種類範囲外書き込み、CWE-787
主な影響QEMUプロセスのメモリ破損、情報漏えい、データ完全性への影響、サービス拒否
攻撃経路ゲスト仮想マシン内部からホスト側QEMU処理へ到達
公式回避策MSRCでは個別の回避策なし
必要な対応9.1.0-11以降への更新とQEMUプロセスの再起動

2026年7月23日時点で、NVDは独自のCVSS評価をまだ付与していませんが、CNAによるCVSS 3.1スコアとして7.8の「High」が掲載されています。Azure Linux側の修正PRでも、この脆弱性はHighとして扱われています。(nvd.nist.gov)

範囲外書き込みが発生する仕組み

問題は、QEMUの次のソースファイルにあります。

hw/hyperv/syndbg.c

Hyper-V synthetic debuggerの受信処理では、cpu_physical_memory_map()を使ってゲスト物理メモリをホスト側へマッピングします。

しかし、この関数が要求されたサイズより短い領域しかマッピングできなかった場合でも、修正前のコードは当初の要求サイズを前提としてデータを書き込むことがありました。

処理の流れを簡略化すると、次のようになります。

  1. QEMUが書き込みに必要なサイズを計算する
  2. cpu_physical_memory_map()でゲストメモリをマッピングする
  3. 実際にマッピングされたサイズが要求サイズより短くなる
  4. 短くなったことを十分に検査せず、データを書き込む
  5. マッピング領域やMMIOバウンスバッファの境界を越えて書き込む

修正コードでは、要求したサイズをout_requested_lenとして保存し、実際に取得できたout_lenがそれより小さい場合は書き込みを中止する検査が追加されています。(GitLab)

なぜホスト側の問題として重く見る必要があるのか

この脆弱性で特に注意したいのは、問題が単なるゲストOS内のアプリケーションエラーではなく、仮想マシンを実行しているホスト側のQEMUプロセスで発生する点です。

攻撃者がゲスト仮想マシン内で必要な操作を実行すると、ホスト側QEMUプロセスのメモリ領域を破損させる可能性があります。

想定される影響には次のものがあります。

  • 対象VMを実行しているQEMUプロセスの異常終了
  • ゲスト仮想マシンの停止
  • ヒープ上に確保されたオブジェクトの破損
  • データの完全性への影響
  • メモリ内情報の漏えい
  • 仮想化ホスト上のサービス拒否

一方で、公開情報だけを根拠に「確実にホストOS上で任意コードを実行できる」「完全なVMエスケープが成立する」と断定するのも適切ではありません。公開されている内容は範囲外書き込みとその潜在的影響を示したものであり、具体的な攻撃チェーンが常に成立することを保証するものではないためです。

ただし、ゲストとホストの信頼境界をまたぐメモリ破損である以上、マルチテナント環境や信頼できないゲストを実行する環境では優先度を上げる必要があります。(nvd.nist.gov)

Azure Linux 3.0がすべて影響を受けるわけではない

Azure Linux 3.0を利用しているだけで、直ちにCVE-2026-3842の攻撃対象になるわけではありません。

主に確認すべきなのは、Azure Linux 3.0が次のような用途で使われているかどうかです。

  • QEMU/KVMの仮想化ホスト
  • ネストされた仮想化環境
  • 仮想マシンを実行する検証基盤
  • VDIやサンドボックス基盤
  • CI/CDで仮想マシンを起動するホスト
  • 信頼度の異なる複数ゲストを収容する環境

通常のAzure VMとしてAzure Linux 3.0を使用しているだけで、OS内にQEMUホスト機能がインストールされておらず、QEMUプロセスも動いていない場合は、この脆弱性の実行経路はありません。

ただし、脆弱なパッケージがインストールされている場合は、将来QEMUを起動する可能性も考慮し、利用開始前に更新しておくべきです。

影響を受けるバージョンを確認する方法

Azure Linux 3.0であることを確認する

最初にOS情報を確認します。

cat /etc/os-release

出力にAzure Linux 3.0であることを示す情報が含まれているか確認してください。

インストール済みQEMUパッケージを確認する

RPMのバージョンとリリース番号まで確認します。

rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' \
  | grep -E '^qemu($|-)'

メインのqemuパッケージだけを確認する場合は、次のコマンドも利用できます。

rpm -q qemu

影響を受ける出力例は次のような形式です。

qemu-9.1.0-10.azl3.x86_64

修正済みの出力例は次のとおりです。

qemu-9.1.0-11.azl3.x86_64

9.1.0-11より新しいリリースが提供されている場合は、その新しいパッケージを使用します。

qemuコマンドの表示だけで判断しない

次のコマンドでもQEMUのバージョンを確認できます。

qemu-system-x86_64 --version

ただし、この出力は主に上流バージョンの9.1.0を表示するため、Azure LinuxのRPMリリース番号である-10-11を区別できない場合があります。

上流QEMUでは9.1.0が影響範囲に含まれますが、Azure Linuxは修正コードを9.1.0へバックポートし、RPMリリースを9.1.0-11へ更新しています。そのため、判定にはRPMのRelease番号まで必要です。(nvd.nist.gov)

QEMUプロセスが動いているか確認する

次のコマンドで、現在稼働しているQEMUプロセスを確認します。

pgrep -af 'qemu-system|qemu-kvm'

プロセスが表示される場合は、そのホストで仮想マシンが実際に動作している可能性があります。

パッケージがインストールされていてもプロセスが動いていない場合、現在の攻撃経路は限定されます。ただし、QEMUを次回起動する前に更新してください。

対応の優先順位

環境対応優先度判断理由
信頼できないゲストを収容するマルチテナント環境最優先ゲストからホスト側QEMUへ到達する脆弱性のため
VDI、検証環境、サンドボックス、CI基盤利用者がゲスト内部でコードを実行できる可能性が高い
インターネット公開サービスを実行するゲストのホストゲスト侵害後の二段階目の攻撃に利用される可能性がある
管理者だけが利用する単一テナント環境中~高攻撃条件は限定されるが、ホスト境界の問題である
QEMUパッケージはあるがVMを起動していない次回起動前に更新すれば実行経路を閉じられる
QEMU未導入、または9.1.0-11以降原則対象外対象パッケージがない、または修正済み

「外部からQEMUのポートが見えないから安全」とは限りません。想定される起点はゲスト仮想マシン内部であるため、ゲストOSが侵害された後の追加攻撃として利用される可能性も考慮する必要があります。

QEMUを9.1.0-11以降へ更新する手順

更新前に稼働中のVMを確認する

libvirtを利用している場合は、次のコマンドで仮想マシンを確認できます。

sudo virsh list --all

更新前に、少なくとも次の項目を整理してください。

  • 稼働中のVM一覧
  • 各VMの停止可否
  • ライブマイグレーションの可否
  • ストレージとネットワークの冗長性
  • バックアップや復旧手順
  • 更新後の動作確認担当者
  • 問題発生時のロールバック方法

Azure Linuxのパッケージを更新する

リポジトリ情報を更新したうえで、パッケージ更新を実行します。

sudo tdnf clean all
sudo tdnf update -y

全パッケージの更新が難しい環境では、変更管理の方針に従ってQEMU関連パッケージだけを更新します。ただし、QEMUは複数のサブパッケージに分かれる場合があるため、メインパッケージだけでなく、実際にQEMUホストバイナリを提供しているパッケージ群の整合性を確認してください。

更新後のRPMバージョンを確認する

rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' \
  | grep -E '^qemu($|-)'

少なくとも、対象となるホスト側QEMUパッケージが次の状態になっていることを確認します。

9.1.0-11.azl3

または、それより新しいリリースであれば修正済みとして扱えます。

Azure Linuxの修正では、RPMのReleaseが10から11へ更新され、CVE-2026-3842のパッチが追加されています。(GitHub)

更新後はQEMUプロセスの再起動が必要

RPMを更新しても、更新前から稼働しているQEMUプロセスは、旧コードをメモリ上で使い続けます。

対応方法は運用構成に応じて、次のいずれかを選択します。

  • 仮想マシンを停止して再度起動する
  • 仮想マシンを別ホストへライブマイグレーションする
  • 更新済みホスト上でQEMUプロセスを再生成する
  • メンテナンス時間を確保してホストを再起動する

単にlibvirtdなどの管理サービスだけを再起動しても、既存の仮想マシンプロセスがそのまま残る構成があります。重要なのは、更新前から動いているQEMUプロセス自体を終了し、修正版バイナリで新しく起動することです。

古いQEMUプロセスが残っていないか確認する

for pid in $(pgrep -f 'qemu-system|qemu-kvm'); do
  printf 'PID=%s EXE=' "$pid"
  readlink "/proc/$pid/exe"
done

出力の末尾に(deleted)と表示される場合は、更新によって削除された旧バイナリを、そのプロセスが引き続き使用している可能性があります。

/usr/bin/qemu-system-x86_64 (deleted)

この状態のQEMUプロセスは再起動してください。

ただし、(deleted)が表示されない場合でも、更新前から継続稼働しているVMについては、プロセスの起動時刻を確認したうえで再生成するのが安全です。

ps -eo pid,lstart,args \
  | grep -E '[q]emu-system|[q]emu-kvm'

更新後に確認すべき項目

QEMUプロセスを再起動した後は、パッケージ番号だけでなく、仮想化基盤としての機能も確認します。

確認項目確認内容
QEMUパッケージ9.1.0-11以降になっている
稼働プロセス更新後に新しく起動されている
VM起動対象VMが正常に起動する
ネットワークIPアドレス、疎通、DNS、外部接続が正常
ストレージ仮想ディスクの読み書きが正常
ゲストエージェント管理機能やシャットダウン連携が正常
ライブマイグレーション利用環境では移行が正常に完了する
バックアップスナップショットやバックアップ処理が正常
監視QEMU、libvirt、VM関連の新規エラーがない

ログも併せて確認します。

sudo journalctl -b -p warning

libvirtを使用している場合は、環境に応じて次のようなログも確認してください。

sudo journalctl -u libvirtd

公式の回避策がない場合の考え方

MSRCはCVE-2026-3842について、個別の回避策を掲載していません。したがって、正式な対応は修正版への更新です。(msrc.microsoft.com)

Hyper-V synthetic debugger関連機能を無効化すれば攻撃経路を狭められる可能性はありますが、次の理由からパッチの代替として扱うべきではありません。

  • 実際に脆弱な処理へ到達できなくなったか検証が必要
  • QEMUの起動オプションや管理基盤によって設定方法が異なる
  • VMの互換性やデバッグ機能へ影響する可能性がある
  • 将来の設定変更で再び有効になる可能性がある
  • MSRCが公式回避策として保証していない

緊急時に一時的なリスク低減策を取る場合でも、最終的には9.1.0-11以降への更新を完了させる必要があります。

対応で間違えやすいポイント

間違った対応問題点正しい対応
qemu-guest-agentだけ更新する脆弱性はホスト側QEMUのsyndbg.cにあるQEMU/KVMホスト側のパッケージを更新する
qemu --versionだけ確認する9.1.0-10と9.1.0-11を区別できないRPMのRelease番号まで確認する
RPM更新後もVMを動かし続ける稼働中プロセスが旧コードを保持するVMまたはQEMUプロセスを再起動する
ファイアウォールだけ設定する攻撃の起点はゲスト内部となり得るゲストの信頼性にかかわらずパッチを適用する
ホストを再起動するだけ脆弱なRPMが残っていれば修正されないパッケージ更新後に再起動する
CVSSだけで後回しにする仮想化の信頼境界に関係するテナント構成やゲストの信頼度も含めて判断する
すべてのAzure Linux VMが対象だと考えるQEMUホストでない環境まで混同するQEMUパッケージと稼働プロセスを確認する

CVE-2026-3842対応の最終チェックリスト

  • [ ] Azure Linux 3.0をQEMU/KVMホストとして使用しているか確認した
  • [ ] rpmコマンドでQEMUのRelease番号まで確認した
  • [ ] qemu-9.1.0-10.azl3が残っていないことを確認した
  • [ ] QEMUを9.1.0-11以降へ更新した
  • [ ] 更新前から稼働していたVMまたはQEMUプロセスを再起動した
  • [ ] /proc/<PID>/exeに旧バイナリが残っていないことを確認した
  • [ ] VMの起動、ネットワーク、ストレージを確認した
  • [ ] 監視ログに新しいエラーがないことを確認した
  • [ ] 更新日時、対象ホスト、更新後バージョンを記録した

CVE-2026-3842では、QEMUの上流バージョンが同じ9.1.0でも、Azure LinuxのRPMリリース番号によって修正状況が異なります。まずrpm9.1.0-10の有無を確認し、該当する場合は9.1.0-11以降へ更新してください。その後、更新前から稼働しているQEMUプロセスを確実に再生成するところまでが対策です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次