Xen закрывает уязвимости в сетевом и дисковом бэкендах

XEN

Проект Xen выпустил уведомления о безопасности xsa/advisory-526, xsa/advisory-527 и xsa/advisory-528 от 6 ноября 2026 года. Уязвимости затрагивают драйверы, которые обслуживают сетевые и дисковые устройства гостевых систем. Эксплуатация позволяет повысить привилегии, получить доступ к чужим данным и вызвать отказ в обслуживании. Уязвимы все версии без последнего исправления.

Ошибки в драйверах, а не в гипервизоре

Нашлись они в ядре Linux, в драйверах xen-netback и xen-blkback. Первый отдаёт гостям сеть, второй - блочные устройства. Статистику работы оба показывают через sysfs, файловую систему ядра для доступа к параметрам устройств. Черта, общая для всех уведомлений, одна: служебные данные освобождаются в тот момент, когда другой поток ещё может к ним обратиться. В результате чтение идёт по уже освобождённой памяти либо по пустому указателю.

Сетевой бэкенд: статистика переживает разборку очередей

Сетевую статистику защищает RCU - механизм синхронизации, при котором читатели не блокируют тех, кто меняет данные. Когда подключение к фронтенду срывается, очереди разбираются, а статистика освобождается без синхронизации. Сорвать подключение может сам гость: достаточно некорректных данных в Xenstore, хранилище настроек Xen. Если в этот момент кто-то читает статистику через sysfs, драйвер отдаёт ему освобождённую память или область, которую уже занял другой объект. Исправление ставит точку синхронизации перед освобождением очереди. После патча разборка очередей сначала дожидается, пока читатели закончат работу.

Сетевой бэкенд: список групповых адресов

Вторая уязвимость связана со списком multicast-адресов, который драйвер ведёт для каждой очереди. Освобождать этот список без блокировок можно только после того, как обработка передаваемых и принимаемых пакетов остановлена. Обращения к списку идут из пути передачи, а добавления и удаления - из обработки завершённых передач. Старый код вызывал очистку из обработчика неудачного подключения, где обработка ещё не остановлена. Теперь вызов перенесли за точку синхронизации при отключении бэкенда.

Дисковый бэкенд: чтение статистики при удалении устройства

Дисковый бэкенд xen-blkback показывает статистику ввода-вывода через тот же sysfs. Чтение и удаление фронтенда не были согласованы между собой. Если они совпадали по времени, данные освобождались под читателем. Дальше - доступ к освобождённой памяти или разыменование пустого указателя. Разработчики закрыли гонку блокировкой чтения-записи: чтение статистики и освобождение данных больше не пересекаются.

Условия атаки во всех сценариях локальные. Нужен либо гость, который подсовывает хосту некорректные данные Xenstore, либо процесс на хосте с правом читать статистику через sysfs. Удалённой атаки без учётных данных ни одно из уведомлений не описывает. Для хостинга первый сценарий важнее: гостей много, их содержимое проконтролировать трудно. Отказ в обслуживании на хосте сказывается на всех его гостях.

Исправления вошли в стабильные ветки ядра Linux. Версии с исправлением: 5.10.274, 5.15.225, 6.1.192, 6.6.162, 6.12.116, 6.18.62 и 7.3.3. Уязвимость со списком групповых адресов затрагивает ветки начиная с 4.11. Драйверы живут в ядре хоста, поэтому обновлять нужно именно его, а не только гостевые системы.

Сведений об эксплуатации в реальных атаках нет: уведомления их не приводят. Обходных мер тоже не предложили - остаётся установка исправлений. Администраторам стоит свериться с текстами бюллетеней проекта: там указано, какие именно исправления относятся к их ветке и какие версии считаются закрытыми.

Ссылки

Комментарии: 0