CVE: CVE-2026-64561
Продукт: Linux Kernel
Дата публикации: 04.08.2026
Критичность: HIGH
CVSS: 8.8 (3.1)
EPSS: 0,35%; процентиль 27,46%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме KVM x86 обнаружена ошибка, нарушающая инвариант управления страницами shadow MMU. Дефект возникает из-за некорректного порядка проверок состояния корневых таблиц при обработке page fault, что приводит к попаданию недействительных страниц в список активных. Материал описывает механику срабатывания, условия эксплуатации и способы проверки исправления.
Основные характеристики
Риск связан с нарушением внутренней логики виртуализации, что может повлиять на целостность данных и доступность сервисов на уровне ядра. Проблема актуальна только для систем, использующих KVM для виртуализации x86.
- CVSS: 8.8 (HIGH). Вектор:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Оценивается как высокий риск при локальном доступе с низкими привилегиями.
- EPSS: 0,35% (0.00347). Показатель отражает низкую вероятность эксплуатации в ближайшем будущем.
- Тип ошибки: Нарушение инварианта (invariant violation) в управлении памятью shadow MMU.
- Статус PoC: В пакете доказательств указан проект Zapscape, однако детали его функциональности и подтверждение эксплуатации в реальных атаках не раскрыты.
Какие продукты и версии затронуты
Уязвимость затрагивает подсистему KVM в Linux Kernel для архитектуры x86. Дефект присутствует в ядрах, где реализован механизм отслеживания недействительных корневых таблиц и инвариант, запрещающий наличие недействительных страниц в списке активных MMU-страниц.
- Версии ядра: Базовый дефект существует с 2008 года, но критическая уязвимость проявилась с версии 5.9 (2020), когда был добавлен инвариант для активных страниц.
- Компоненты:
arch/x86/kvm/mmu/mmu.cиarch/x86/kvm/mmu/paging_tmpl.h.
- Платформы: Только системы с поддержкой KVM x86. Системы без виртуализации или использующие другие гипервизоры не затронуты.
Причина уязвимости
Причина уязвимости заключается в некорректном порядке выполнения проверок в функции обработки page fault. Исходный код проверял состояние корневой таблицы на недействительность до вызова
make_mmu_pages_available(). Если в процессе освобождения (reclaim) страниц корневая таблица была помечена как недействительная (zapped), последующее заполнение памяти в эту таблицу создавало дочерние страницы, унаследовавшие флаг invalid.Это нарушало инвариант KVM, согласно которому недействительные страницы не должны присутствовать в списке активных MMU-страниц. Исправление переносит проверку
is_page_fault_stale() на этап после make_mmu_pages_available(), что гарантирует прерывание обработки fault до создания дочерних страниц при обнаружении недействительного корня.Как работает атака
Атакующий с локальным доступом может инициировать сценарий, при котором в процессе работы виртуальной машины происходит освобождение shadow-страниц. Если в этот момент корневая таблица, используемая для текущего page fault, будет помечена как недействительная, KVM продолжит процесс маппинга памяти в эту таблицу.
Поскольку дочерние страницы наследуют роль (role) родителя, они создаются с флагом
invalid. Эти страницы попадают в список активных MMU-страниц, нарушая инвариант. Последствия могут включать повреждение структуры данных, некорректную работу виртуальной памяти и потенциальный отказ в обслуживании или эскалацию привилегий.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- Система должна использовать KVM для виртуализации x86.
- Атакующий должен иметь локальный доступ к системе с низкими привилегиями.
- Должен быть активен процесс освобождения shadow-страниц (reclaim) в момент обработки page fault.
- Корневая таблица shadow MMU должна быть помечена как недействительная в критический момент между проверкой и маппингом.
Возможный сценарий атаки
Сценарий атаки начинается с запуска виртуальной машины, которая генерирует page fault. В этот момент в ядре происходит освобождение неиспользуемых shadow-страниц. Если атакующий может повлиять на тайминг или состояние памяти, чтобы корневая таблица была помечена как недействительная после первоначальной проверки, но до маппинга, KVM продолжит процесс.
Дочерние страницы создаются с флагом
invalid и добавляются в список активных. Это нарушает инвариант и может привести к непредсказуемому поведению системы, включая падение ядра или компрометацию данных виртуальной машины.Есть ли публичный эксплойт
В пакете доказательств указан проект Zapscape как ссылка, связанная с CVE. Однако в предоставленных материалах отсутствуют детали о функциональности этого проекта, его статусе как PoC или подтверждении эксплуатации в реальных атаках. Массовое использование в wild не зафиксировано, что косвенно подтверждается низким значением EPSS (0,35%).
Признаки эксплуатации
Специфичные IOC для этой уязвимости не опубликованы. Общие точки контроля (неспецифичные) включают:
- Аномальные сбои или зависания виртуальных машин, использующих KVM.
- Сообщения в журналах ядра (dmesg) о нарушениях инвариантов MMU или KVM.
- Необычная активность процессов, связанных с виртуализацией, на хостах с KVM.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации рекомендуется:
- Мониторинг журналов ядра на ошибки, связанные с KVM и shadow MMU.
- Анализ стабильности виртуальных машин: частые сбои или зависания могут указывать на нарушение инвариантов.
- Использование инструментов аудита ядра для отслеживания аномальных операций с памятью в контексте виртуализации.
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните версию с официальными релизами, содержащими коммиты исправления (например,
2abd5287f08319fa35764566b15c6e22cb1068db). Если версия ядра ниже той, где применено исправление, система уязвима.Исправление
Единственный надежный способ устранения уязвимости — обновление ядра до версии, содержащей исправление. Исправление переносит проверку
is_page_fault_stale() на этап после make_mmu_pages_available(), что предотвращает создание недействительных дочерних страниц.- Обновите ядро до последней стабильной версии, содержащей коммит
2abd5287f08319fa35764566b15c6e22cb1068db.
- Для дистрибутивов следуйте рекомендациям вендора по обновлению пакетов ядра.
- После обновления перезагрузите систему для применения нового ядра.
Временные меры защиты
Пока обновление не применено, можно снизить риск следующими мерами:
- Ограничьте локальный доступ к системам, использующим KVM, до минимально необходимого уровня.
- Отключите виртуализацию (KVM) на критических хостах, если это допустимо бизнес-процессами.
- Усиленный мониторинг стабильности виртуальных машин и журналов ядра для раннего обнаружения аномалий.
Как проверить устранение уязвимости
Для проверки применения исправления:
- Убедитесь, что версия ядра соответствует или превышает версию, содержащую исправление.
- Проверьте наличие коммита
2abd5287f08319fa35764566b15c6e22cb1068dbв истории ядра (если доступно).
- Проведите функциональное тестирование виртуальных машин для подтверждения стабильной работы KVM.
- Проверьте журналы ядра на отсутствие ошибок, связанных с shadow MMU, после обновления.
Вывод
CVE-2026-64561 представляет риск для систем, использующих KVM x86, из-за нарушения инварианта shadow MMU. Уязвимость требует локального доступа и специфических условий, но может привести к компрометации целостности данных и отказу в обслуживании.
Обновление ядра до версии с исправлением является обязательным шагом для защиты. Мониторинг и временные меры помогают снизить риск до применения патча.
Официальные источники
- NVD — CVE-2026-64561
- FIRST EPSS — CVE-2026-64561
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- KVM: x86: Check for invalid/obsolete root after making MMU pages available - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 12.08.2026 — Опубликована первая версия материала.
- 22.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 31.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
