CVE-2026-63806 in LinuxИнформация

Сводка

по VulDB • 20.07.2026

В ядре Linux устранена следующая уязвимость:

KVM: Замена вызова BUG_ON(), запускаемого гостевой системой в ioeventfd при совпадении данных (datamatch), на функцию get_unaligned()

Удален вызов BUG_ON(), который оставался достижимым с момента его первоначального добавления еще в 2009 году, и вместо него для выполнения потенциально невыровненных обращений используется функция get_unaligned().

Для каждой операции записи (store) эмулятор KVM x86 отслеживает все значение в операнде назначения dst структуры x86_emulate_ctxt. Если назначение является памятью, а целевой адрес пересекает несколько страниц и/или представляет собой эмулируемое MMIO-устройство, то KVM обрабатывает каждый фрагмент независимо. Например, при разделении страницы со смещением 0xffc от начала страницы KVM записывает 4 байта в первую страницу, а оставшиеся байты — во вторую страницу, используя ctxt->dst как источник для обеих операций (с соответствующими смещениями).

Если назначение пересекает границу страницы *и* на второй странице происходит обращение к эмулируемому MMIO-устройству, то KVM завершит запись в первую страницу, а затем выполнит эмуляцию обращения к MMIO во вторую страницу. Если по нулевому смещению второй страницы настроен ioeventfd с включенным совпадением данных (datamatch), то KVM обработает оставшуюся часть записи как потенциальный сигнал ioeventfd.

Объединяя все вышеизложенное: если гостевая система выполняет операцию записи, которая пересекает границу страницы со смещением N от начала страницы, и на второй странице по нулевому смещению настроен ioeventfd с включенным совпадением данных (datamatch), то KVM будет проверять совпадение данных, используя &dst.valptr[N] в качестве источника. Поскольку dst (и, следовательно, dst.valptr) выровнены по 32-байтной границе, если N не выровнено относительно @len, срабатывает вызов BUG_ON().

Например, при операции записи размером 16 байт со смещением страницы 0xffc в ioeventfd длиной (len) 8 байт все начальные проверки в функции ioeventfd_in_range() пройдут успешно, и сработает BUG_ON(), поскольку @val выровнен по границе 4-байтного слова, но не выровнен по границе 8-байтного слова.

``` ------------[ 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 #

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

19.07.2026

Раскрытие

19.07.2026

Модерация

принято

Вход

VDB-380143

EPSS

0.00000

KEV

Нет

Деятельности

Средний

Источники

Do you need the next level of professionalism?

Upgrade your account now!