CVE-2026-74580 в Linux Kernel: сброс кэша vring в vhost

CVE: CVE-2026-74580
Продукт: Linux Kernel
Дата публикации: 21.08.2026
Критичность: HIGH
CVSS: 8.8 (3.1)
EPSS: 0,12%; процентиль 2,11%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В подсистеме vhost ядра Linux обнаружена ошибка, при которой кэш метаданных vring не сбрасывается при переконфигурации через VHOST_SET_VRING_ADDR или VHOST_SET_VRING_NUM. Это приводит к использованию устаревших записей IOTLB и доступу к памяти вне валидированного диапазона. CVSS 8.8 (HIGH).

Основные характеристики​


Уязвимость затрагивает драйвер vhost в ядре Linux. Тип атаки: нарушение изоляции и доступ к памяти. CVSS 3.1: 8.8 (HIGH). Вектор: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. EPSS: 0.00121 (2.11%). Статус: Received. Дата публикации: 21.08.2026.

Какие продукты и версии затронуты​


Ядро Linux, использующее подсистему vhost с поддержкой device IOTLB. Уязвимость присутствует в версиях, содержащих коммит f88949138058 ("vhost: introduce O(1) vq metadata cache") и не содержащих исправление de845981da67a6b049080c87e605130b0c30adc5. Конкретные номера версий ядра не указаны в источниках.

Причина уязвимости​


Функция iotlb_access_ok() использует кэш vq->meta_iotlb[] для проверки доступа. При переконфигурации vring через VHOST_SET_VRING_ADDR или VHOST_SET_VRING_NUM кэш не сбрасывается. В результате старые записи в кэше считаются валидными, и проверка новых адресов пропускается. Это позволяет обращаться к памяти вне диапазона, отведенного IOTLB.

Как работает атака​


Атакующий с локальными правами вызывает ioctl VHOST_SET_VRING_ADDR или VHOST_SET_VRING_NUM для переконфигурации виртуальной очереди. Функции vq_access_ok() и vq_log_used_access_ok() возвращают true, откладывая валидацию. При последующем обращении к used ring или дескрипторам функция vhost_vq_meta_fetch() использует устаревший кэш. Пересчет адреса map->addr + addr - map->start приводит к доступу к памяти, не покрытой текущим маппингом IOTLB.

Условия успешной эксплуатации​


Для эксплуатации необходимы: локальный доступ к системе, права на выполнение ioctl для vhost, наличие подключенного device IOTLB, активная виртуальная очередь (vq). Атакующий должен иметь возможность переконфигурировать vring, заменяя указатели desc, avail или used.

Возможный сценарий атаки​


Локальный пользователь с правами доступа к vhost-устройству переконфигурирует vring, указав новые адреса для desc, avail или used. Кэш метаданных не обновляется. При последующей операции с used ring или чтении дескрипторов ядро использует устаревший маппинг IOTLB. Это приводит к чтению или записи в память вне разрешенного диапазона, что может привести к нарушению изоляции или отказу в обслуживании.

Есть ли публичный эксплойт​


Публичный эксплойт не подтвержден. EPSS 0.00121 указывает на низкую вероятность эксплуатации в дикой природе. В источниках отсутствуют сведения о PoC или подтвержденной эксплуатации. Наличие исправления в stable-ветках ядра свидетельствует о том, что проблема была обнаружена и устранена.

Признаки эксплуатации​


Специфичные IOC для этой уязвимости не опубликованы. Общие признаки (неспецифичные): ошибки в логах ядра, связанные с vhost, unexpected page faults, аномальная активность процессов, работающих с виртуализацией. Рекомендуется мониторинг логов и контроль целостности системных файлов.

Как обнаружить атаку​


Для обнаружения следует анализировать логи ядра на наличие ошибок, связанных с vhost и IOTLB. Можно использовать инструменты аудита системных вызовов (auditd) для отслеживания ioctl VHOST_SET_VRING_ADDR и VHOST_SET_VRING_NUM. Мониторинг аномальной активности в процессах, работающих с виртуализацией, также поможет выявить потенциальную эксплуатацию.

Как проверить свою версию​


Проверьте версию ядра с помощью команд: uname -r, uname -a, cat /proc/version. Сравните результат с перечнем версий, содержащих исправление de845981da67a6b049080c87e605130b0c30adc5. Если версия ядра старше даты коммита 2026-08-03 и не содержит патча, система уязвима.

Исправление​


Установите обновление ядра, содержащее коммит de845981da67a6b049080c87e605130b0c30adc5. Патч добавляет вызов __vhost_vq_meta_reset(vq) в функцию vhost_vring_set_num_addr, что обеспечивает сброс кэша метаданных при переконфигурации vring. После обновления перезагрузите систему для применения изменений.

Временные меры защиты​


Временные меры: ограничьте доступ к vhost-устройствам только для доверенных процессов, отключите поддержку device IOTLB, если это возможно, используйте SELinux или AppArmor для ограничения прав процессов, работающих с виртуализацией. Регулярно проверяйте логи на аномальную активность.

Как проверить устранение уязвимости​


После обновления ядра проверьте, что коммит de845981da67a6b049080c87e605130b0c30adc5 присутствует в истории ядра. Используйте git log в исходниках ядра или проверьте наличие функции __vhost_vq_meta_reset в коде vhost. Проведите функциональное тестирование vhost-устройств для подтверждения корректной работы.

Вывод​


CVE-2026-74580 представляет серьезную угрозу для систем с vhost и device IOTLB. Уязвимость позволяет нарушителю с локальными правами выйти за пределы изоляции. Рекомендуется срочно обновить ядро до версии, содержащей исправление. Мониторинг и ограничение доступа к vhost-устройствам снижают риск эксплуатации до момента обновления.

Официальные источники​


  1. NVD — CVE-2026-74580
  2. FIRST EPSS — CVE-2026-74580
  3. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  4. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  5. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  6. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  7. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  8. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  9. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree
  10. vhost: reset the vring metadata cache on vring reconfiguration - kernel/git/stable/linux.git - Linux kernel stable tree

История обновлений статьи​


  • 22.08.2026 — Опубликована первая версия материала.
  • 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ