【活用ガイド】

JVNDB-2026-025911

LinuxのLinux Kernelにおける到達可能なアサーションに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。KVMのioeventfd datamatch内に存在していた、ゲストがトリガー可能なBUG_ON()はget_unaligned()に置き換えられました。これは、2009年に最初に追加されて以来到達可能だったBUG_ON()を削除し、代わりにget_unaligned()を使用して潜在的にアラインメントされていないアクセスを行うためです。特定のストアに対して、KVM x86のエミュレータは宛先オペランドであるx86_emulate_ctxt.dst内の全値を追跡します。宛先がメモリで、ターゲットが複数のページに分割されているか、エミュレーションされたMMIOの場合、KVMは各フラグメントを独立して処理します。例えば、ページの分割がページオフセット0xffcで始まる場合、KVMは最初のページに4バイトを書き込み、残りのバイトを2番目のページに書き込みます。このとき、ctxt->dstを両方の書き込み元として、適切なオフセット付きで使用します。もし宛先がページを分割し、かつ2番目のページでエミュレートされたMMIOにヒットした場合、KVMはまず最初のページへの書き込みを完了し、その後2番目のページのMMIOアクセスをエミュレートします。2番目のページのオフセット0にdatamatchが有効なioeventfdが存在する場合、KVMは残りのストアを潜在的なioeventfdシグナルとして処理します。まとめると、ゲストがページオフセットNでページを分割するストアを発行し、2番目のページのオフセット0にdatamatchが有効なioeventfdがある場合、KVMは&dst.valptr[N]をソースとしてdatamatchをチェックします。dst(およびdst.valptr)が32バイト境界で整列しているため、もしNが@lenに整列していなければBUG_ON()が発動します。例えば、16バイトのストアがページオフセット0xffcにあり、長さ8のioeventfdに対して、ioeventfd_in_range()のすべての初期チェックは成功しますが、BUG_ON()は@valが4バイト整列だが8バイト整列していないため発動します。------------[ ここから切り取り ]------------kernel BUG at arch/x86/kvm/../../../virt/kvm/eventfd.c:783!Oops: invalid opcode: 0000 [#1] SMPCPU: 0 UID: 1000 PID: 615 Comm: repro Not tainted 7.1.0-rc2-ff238429d1ea #365 PREEMPTHardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015RIP: 0010:ioeventfd_write+0x6c/0x70 [kvm]Call Trace: <TASK> __kvm_io_bus_write+0x85/0xb0 [kvm] kvm_io_bus_write+0x53/0x80 [kvm] vcpu_mmio_write+0x66/0xf0 [kvm] emulator_read_write_onepage+0x12a/0x540 [kvm] emulator_read_write+0x109/0x2b0 [kvm] x86_emulate_insn+0x4f8/0xfb0 [kvm] x86_emulate_instruction+0x181/0x790 [kvm] kvm_mmu_page_fault+0x313/0x630 [kvm] vmx_handle_exit+0x18a/0x590 [kvm_intel] kvm_arch_vcpu_ioctl_run+0xc81/0x1c90 [kvm] kvm_vcpu_ioctl+0x2d5/0x970 [kvm] __x64_sys_ioctl+0x8a/0xd0 do_syscall_64+0xb7/0x890 entry_SYSCALL_64_after_hwframe+0x4b/0x53RIP: 0033:0x7f19c931a9bf </TASK>Modules linked in: kvm_intel kvm irqbypass---[ end trace 0000000000000000 ]---理想的には、修正は単にBUG_ON()を削除することです。しかし、KVM x86はCPL0での「通常の」メモリアクセスに対してアラインメントチェックを行わないため、この方法は完全な解決にはなりません。残念ながらC99規格が問題を引き起こしています。x86アーキテクチャは親切に動作しますが、アラインメントされていないポインタを直接デリファレンスすることはC言語において未定義動作とされており、CONFIG_UBSAN_ALIGNMENT=yを有効にしている場合にクラッシュを引き起こします。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 7.1 (重要) [その他]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 不要
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更あり
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 2.6.32 以上 5.10.261 未満
  • Linux Kernel 5.11 以上 5.15.212 未満
  • Linux Kernel 5.16 以上 6.1.178 未満
  • Linux Kernel 6.13 以上 6.18.38 未満
  • Linux Kernel 6.19 以上 7.1.3 未満
  • Linux Kernel 6.2 以上 6.6.145 未満
  • Linux Kernel 6.7 以上 6.12.95 未満

想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 到達可能なアサーション(CWE-617) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-63806
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-63806
  2. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f1edbed787ba67988ed34e0132ca128b052b6ce8)
  3. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/36ff44fb3d89960391e013fb9d91e23dbc48be47)
  4. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/5da9b1a87ec7cc3489c27016313524769f12d9e0)
  5. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4186c850789906b875a1d263377a4d37c078e317)
  6. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/5c87b47374682f69686068ad0a7779365a527b1c)
  7. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/2426c15c1395b7d5ccf1e5025ca898af7f3decb6)
  8. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/92fc631b69deb1c7d56aec2663003600799dcd75)
  9. 関連文書 : KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bf89e3738480d33cd515b4a18900e8443d40cd2e)
更新履歴

  • [2026年07月30日]
      掲載