CVE-2026-63806 in Linux情報

要約

〜によって VulDB • 2026年07月19日

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()が発火します。

例えば、ページオフセット0xffcでの16バイトのストアにおいて、ioeventfdの長さが8の場合、ioeventfd_in_range()内のすべての初期チェックは成功しますが、@valが4バイト境界にはアラインされているものの8バイト境界にはアラインされていないため、BUG_ON()が発火します。

------------[ cut here ]------------
kernel BUG at arch/x86/kvm/../../../virt/kvm/eventfd.c:783! Oops: invalid opcode: 0000 [#1] SMP
CPU: 0 UID: 1000 PID: 615 Comm: repro Not tainted 7.1.0-rc2-ff238429d1ea #365 PREEMPT Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:ioeventfd_write+0x6c/0x70 [kvm]

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-380143

EPSS

0.00000

アクティビティ

中間

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!