CVE: CVE-2026-80726
Продукт: Linux Kernel
Дата публикации: 03.09.2026
Критичность: CRITICAL
CVSS: 9.3 (3.1)
EPSS: 0,21%; процентиль 10,55%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме KVM ядра Linux обнаружена уязвимость, приводящая к use-after-free при создании дочерних shadow pages. Ошибка нарушает инварианты управления памятью MMU и может привести к падению системы или выполнению кода с привилегиями ядра. Материал описывает механику сбоя, условия эксплуатации и порядок проверки исправления в стабильных ветках ядра.
Основные характеристики
Риск связан с нарушением целостности памяти в гипервизоре KVM. Сбой возникает при нарушении инварианта, запрещающего наличие невалидных страниц в списке активных MMU-страниц, что приводит к обращению к освобожденной памяти.
- Тип ошибки: Use-after-free (UAF) в подсистеме KVM x86/mmu.
- CVSS 3.1: 9.3 (CRITICAL). Вектор:
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H. Балл отражает локальный вектор атаки и полное нарушение конфиденциальности, целостности и доступности.
- Условия атаки: Локальный доступ (AV:L), низкая сложность (AC:L), отсутствие необходимости в привилегиях (PR:N) и взаимодействии пользователя (UI:N).
- Эксплуатация: Подтверждено наличие PoC (KASAN-отчет), публичная эксплуатация в реальных атаках не подтверждена.
- EPSS: 0,21% (0.00205). Низкая вероятность эксплуатации в ближайшие 30 дней, что не отменяет критичности уязвимости.
Какие продукты и версии затронуты
Уязвимость затрагивает подсистему KVM (Kernel-based Virtual Machine) в Linux Kernel для архитектуры x86. Конкретные версии дистрибутивов и точные номера ядра, требующие обновления, не раскрыты в предоставленных источниках.
Исправление внесено в следующие ветки стабильного ядра (stable tree):
- Ветка 6.12.y (commit
0af4711862c5b818204d40b21f0859ad51c230e9)
- Ветка 6.11.y (commit
5ec42d57655c690234c14aece6dd3f209778c1d8)
- Ветка 6.10.y (commit
66bc868a33cf1de43f22a94acd8857e0fe33393f)
- Ветка 6.6.y (commit
9b7984692c18b22d6d61af3f53887fca7fddb0f1)
- Ветка 6.1.y (commit
9f7760a2e962cbda0d096a27d394d14ad4d22928)
- Ветка 5.15.y (commit
f33ecb89d352348ed5e625f6747ac51ede254e1b)
Администраторам необходимо сверить текущую версию ядра с перечнем исправленных версий в документации своего дистрибутива.
Причина уязвимости
Причина уязвимости кроется в функции
kvm_mmu_child_role() в файле arch/x86/kvm/mmu/mmu.c. При создании дочерней shadow page роль (role) наследуется от родительской страницы. Если родительская страница находится в невалидном состоянии (флаг role.invalid установлен), этот флаг не сбрасывается при переходе к дочерней странице.KVM оперирует инвариантом: невалидные страницы не должны присутствовать в списке активных MMU-страниц. Нарушение этого правила приводит к тому, что функция
__kvm_mmu_prepare_zap_page() использует list_add() вместо list_move() при обработке невалидной страницы. Это вызывает use-after-free, так как память страницы могла быть уже освобождена, но ссылка на нее остается в списке.Исправление добавляет явную проверку
WARN_ON_ONCE(role.invalid) и сброс флага role.invalid = 0 перед использованием роли дочерней страницы. Это усиливает защиту от ошибок в других частях KVM и предотвращает каскадный сбой.Как работает атака
Атака эксплуатирует сценарий, при котором KVM пытается маппировать память, используя невалидный или устаревший корневой (root) shadow page. В норме KVM должен отклонить такую операцию, но из-за отсутствия сброса флага
invalid дочерняя страница наследует невалидное состояние.Когда такая страница попадает в список активных MMU-страниц, последующая операция очистки (zap) вызывает обращение к уже освобожденной памяти. Это приводит к записи в память, которая могла быть перераспределена под другие данные ядра. В результате нарушается целостность структур данных ядра, что может привести к падению системы (DoS) или, при точном контроле над перераспределением памяти, к выполнению произвольного кода с привилегиями ядра.
Сбой фиксируется инструментами проверки памяти (KASAN) как
slab-use-after-free в функции __kvm_mmu_get_shadow_page. Трассировка показывает, что сбой происходит в контексте выполнения vCPU при обработке page fault.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо:
- Локальный доступ к системе, где запущен гипервизор KVM.
- Возможность создания и управления виртуальными машинами (VM) или взаимодействия с vCPU через ioctl-вызовы.
- Специфическая последовательность операций с памятью гостевой системы, приводящая к созданию невалидного root shadow page и последующему созданию дочерней страницы.
- Отсутствие исправления в текущей версии ядра (версии до указанных в разделе «Какие продукты и версии затронуты»).
Уязвимость не требует взаимодействия с пользователем (UI:N) и может быть эксплуатирована процессом с правами, достаточными для управления виртуализацией.
Возможный сценарий атаки
Атакующий, имеющий локальный доступ, запускает виртуальную машину или взаимодействует с существующей через API KVM. Он инициирует последовательность операций, приводящую к созданию невалидного root shadow page (например, через специфический сценарий page fault или изменения настроек vCPU).
Затем атакующий вызывает операцию, при которой KVM пытается создать дочернюю shadow page на основе этого невалидного root. Из-за уязвимости флаг
invalid наследуется, и дочерняя страница попадает в список активных MMU-страниц. При последующей очистке памяти (zap) происходит обращение к освобожденной памяти, что приводит к use-after-free.Атакующий может использовать этот сбой для нарушения целостности памяти ядра, что в худшем случае приводит к выполнению произвольного кода с привилегиями ядра и полной компрометации системы.
Есть ли публичный эксплойт
Доступны технические описания и PoC (Proof of Concept), демонстрирующие срабатывание уязвимости. В предоставленных источниках присутствует KASAN-отчет, зафиксировавший
slab-use-after-free в функции __kvm_mmu_get_shadow_page. Это подтверждает возможность воспроизведения сценария сбоя.Однако сведения о публичном эксплойте, готовом для использования в реальных атаках, или о подтвержденной эксплуатации в дикой природе (wild exploitation) в предоставленных источниках отсутствуют. Отсутствие таких сведений не означает, что эксплойт не существует, но подтвержденная эксплуатация не задокументирована.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для данной уязвимости не раскрыты в официальных источниках. Однако можно использовать общие, неспецифичные точки контроля:
- Записи в журнале ядра (dmesg/journalctl): Поиск сообщений
KASAN: slab-use-after-freeилиBUG: KASANв контексте модуляkvmили функций__kvm_mmu_get_shadow_page,kvm_mmu_commit_zap_page.
- Аномальные падения (crash) или перезагрузки системы, связанные с работой виртуальных машин.
- Неожиданные изменения в структуре памяти ядра, если используются инструменты мониторинга целостности ядра.
Эти признаки не являются уникальными для CVE-2026-80726 и могут указывать на другие ошибки в KVM или ядре.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации или срабатывания уязвимости рекомендуется:
- Мониторинг журналов ядра: Настройка алертинга на сообщения KASAN/BUG в
dmesgилиjournalctl, содержащие ключевые словаkvm,use-after-free,__kvm_mmu_get_shadow_page.
- Аудит активности vCPU: Анализ логов гипервизора (QEMU/libvirt) на предмет аномальных операций с памятью или частых page fault, которые могут указывать на попытки эксплуатации.
- Использование инструментов проверки памяти: Включение KASAN (Kernel Address Sanitizer) в тестовых средах для раннего обнаружения ошибок управления памятью в KVM.
Поскольку специфичные IOC отсутствуют, мониторинг должен быть направлен на общие признаки нестабильности KVM и ошибок памяти.
Как проверить свою версию
Для проверки текущей версии ядра и наличия исправлений используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с перечнем исправленных версий в документации вашего дистрибутива. Если версия ядра входит в список веток, где было применено исправление (см. раздел «Какие продукты и версии затронуты»), система защищена. В противном случае требуется обновление.
Для проверки наличия конкретного коммита в локальном дереве ядра (если доступно) можно использовать:
Bash:
git log --oneline | grep -i "KVM: x86/mmu: WARN and clear role.invalid"
Но в большинстве случаев достаточно сверки версии ядра с официальными advisory-записями дистрибутива.
Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление внесено в следующие ветки стабильного ядра:
- 6.12.y (commit
0af4711862c5b818204d40b21f0859ad51c230e9)
- 6.11.y (commit
5ec42d57655c690234c14aece6dd3f209778c1d8)
- 6.10.y (commit
66bc868a33cf1de43f22a94acd8857e0fe33393f)
- 6.6.y (commit
9b7984692c18b22d6d61af3f53887fca7fddb0f1)
- 6.1.y (commit
9f7760a2e962cbda0d096a27d394d14ad4d22928)
- 5.15.y (commit
f33ecb89d352348ed5e625f6747ac51ede254e1b)
Обновите ядро через стандартные механизмы пакетного менеджера вашего дистрибутива. После обновления рекомендуется перезагрузить систему для применения нового ядра, если это требуется политикой безопасности.
Временные меры защиты
Пока обновление не применено, можно рассмотреть следующие временные меры, хотя они не устраняют уязвимость полностью:
- Ограничение доступа к KVM: Ограничьте права на создание и управление виртуальными машинами только для доверенных пользователей и процессов.
- Изоляция гипервизора: Разместите гипервизор в изолированной среде (например, в отдельной сети или на выделенном железе), чтобы снизить риск компрометации хоста при успешной эксплуатации.
- Мониторинг и алертинг: Усиленный мониторинг журналов ядра на предмет ошибок KASAN/BUG, связанных с KVM, для раннего обнаружения попыток эксплуатации.
Эти меры снижают вероятность успешной атаки, но не заменяют обновление ядра.
Как проверить устранение уязвимости
Для проверки, что исправление применено, выполните следующие шаги:
- Проверьте текущую версию ядра:
Bash:uname -r - Сверьте версию с официальными advisory-записями вашего дистрибутива, чтобы убедиться, что она содержит коммиты с исправлением.
- Проверьте наличие коммита в локальном дереве ядра (если доступно):
Bash:git log --oneline | grep -i "KVM: x86/mmu: WARN and clear role.invalid" - Убедитесь, что система перезагружена с новым ядром, если это требуется.
Если версия ядра соответствует исправленной, а коммит присутствует, уязвимость устранена.
Вывод
CVE-2026-80726 представляет собой критическую уязвимость в подсистеме KVM Linux Kernel, приводящую к use-after-free. Ошибка возникает из-за несброса флага
invalid при создании дочерних shadow pages, что нарушает инварианты управления памятью KVM. Уязвимость может быть эксплуатирована локально для нарушения целостности памяти ядра и потенциального выполнения кода с привилегиями ядра.Исправление уже доступно в стабильных ветках ядра. Администраторам необходимо срочно обновить ядро до версий, содержащих исправление, и проверить, что обновление применено. Временные меры, такие как ограничение доступа к KVM и усиленный мониторинг, могут снизить риск, но не заменяют обновление.
Официальные источники
- NVD — CVE-2026-80726
- FIRST EPSS — CVE-2026-80726
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 04.09.2026 — Опубликована первая версия материала.
