Восьмого сентября 2026 года Xen Project раскрыл сведения о пяти уязвимостях в гипервизоре Xen. Две из них ведут к выполнению произвольного кода в служебной среде dom0, остальные позволяют остановить физический сервер целиком. Проблема затрагивает все версии Xen, на которые не установлены свежие исправления, включая сборки, годами не получавшие обновлений.
Детали уязвимостей
Наиболее серьёзная уязвимость связана с tapdisk. Так называют реализацию блочного бэкенда в пользовательском пространстве, которую применяет стек инструментов XAPI (набор служебных компонентов для управления виртуальными средами). В коде проверок границ обнаружили две ошибки. Первая касается поля, описывающего номер последнего сектора операции. Верхнюю границу для него не проверяли вовсе, поэтому значение больше семи приводило к чтению или записи за пределами выделенной области памяти. Вторая ошибка затрагивает массив со списком сегментов передачи. Проверка допускала от двенадцати до тридцати двух сегментов, тогда как массив вмещает меньше, и лишние данные затирали соседние структуры памяти. Результат для обеих уязвимостей одинаков: вредоносная гостевая система получает возможность исполнять свой код внутри процесса tapdisk. Этот процесс обычно работает с правами суперпользователя в dom0, то есть в служебной среде, которая управляет остальными виртуальными машинами. Захватив его, злоумышленник получает доступ к данным всех гостей на физическом сервере. Уязвимости получили идентификаторы CVE-2026-79605 и CVE-2026-79606. Их нашёл Чжихван Юн из NAVER Cloud и передал через XenServer. Подвержены все версии tapdisk.
Второй блок проблем приводит к отказу в обслуживании. В бюллетене XSA-509 описана утечка памяти в гипервизоре. Когда гостевая система завершает работу, Xen освобождает структуры, связанные с переданными ей устройствами PCI. Однако сразу после этого гость успевает через свою модель устройства заново привязать прерывания к этим устройствам. Часть служебных записей восстанавливается и позже уже не удаляется. Каждый такой цикл отнимает у гипервизора память, а серия повторов останавливает весь физический сервер. Уязвимость проявляется только в гостях с аппаратной виртуализацией, которым проброшены устройства PCI. Пострадать могут все выпуски начиная с 3.2. Обойти проблему помогает отказ от проброса устройств либо работа только с гостями на паравиртуализации. Идентификатор уязвимости - CVE-2026-62437.
Похожий сценарий описан в бюллетене XSA-510. Гость с проброшенным устройством PCI, у которого хотя бы один регистр базового адреса размещён в пространстве портов ввода-вывода, вызывает срабатывание внутренней проверки в Xen. Гипервизор аварийно останавливается, и вместе с ним падают все виртуальные машины на сервере. Речь идёт о системах на процессорах x86, а сборки для Arm не затронуты. Уязвимы выпуски Xen с 4.6 и новее. Готовых обходных путей авторы бюллетеня не предложили. Ошибку обнаружил Цзицянь Чэнь из AMD, а как проблему безопасности её описал Роджер Пау Монне. Уязвимость зарегистрирована под номером CVE-2026-79602.
Третья уязвимость отказа в обслуживании затрагивает oxenstored, реализацию службы xenstored на языке OCaml. Эта служба хранит сведения о наблюдениях за узлами хранилища конфигурации. При запросе переподключения к шине xenbus часть записей не удаляется из общей структуры. Гостевая система может создавать их бесконечно, поэтому память процесса растёт без ограничений и система в целом перестаёт отвечать. Уязвимы выпуски с 4.6 и новее, но только там, где используется версия xenstored на OCaml. Альтернативная реализация на языке C этой ошибке не подвержена. Готовых мер защиты нет. Находку сделала компания Anthropic, применив автоматических агентов для анализа защищённости открытых проектов. Проверку и передачу данных выполнила Ada Logics. Уязвимость описана в бюллетене XSA-512.
Ещё одна проблема касается изоляции гостей друг от друга. В бюллетене XSA-511 описан порядок очистки страниц памяти. Гости на паравиртуализации освобождают страницы, сохраняя при этом устаревшую запись в буфере ассоциативной трансляции (TLB, аппаратный кеш переводов виртуальных адресов в физические). Xen сбрасывает такую запись только при повторном использовании страницы. Между очисткой содержимого и сбросом остаётся окно, в котором гость успевает записать данные в уже очищенную страницу. Из-за этого режим "xsm=silo scrub-domheap", призванный запретить обмен информацией между гостями, не работает так, как задумано. Ошибка появилась в выпусках с 4.13, а более старые версии не подвержены, поскольку нужной опции в них нет. Надёжного обхода не существует. Уязвимость нашёл Роджер Пау Монне из AMD, ей присвоен номер CVE-2026-79603.
Уязвимости примечательны не только набором последствий, но и тем, кого они затрагивают. Гипервизор лежит в основе виртуализации и облачной инфраструктуры, поэтому ошибка в нём важнее ошибки в отдельном приложении. Проброс устройств PCI применяют для видеокарт, сетевых адаптеров и накопителей, а без него виртуальные машины теряют нужную производительность. Именно поэтому отказ от проброса как мера защиты подходит далеко не всем. Вредоносный гость в модели угроз Xen считается обычным явлением, поскольку провайдеры и организации часто сдают виртуальные машины в аренду или используют их для задач разных подразделений. Сведений о реальных атаках с использованием этих уязвимостей в бюллетенях нет. Авторы advisories не сообщают и о появлении публичных эксплойтов, что даёт администраторам небольшой запас времени.
Исправления опубликованы отдельными наборами патчей к каждому бюллетеню. Разработчикам и поставщикам рекомендуют сначала обновить ветку стабильных выпусков, поскольку патчи рассчитаны именно на неё и могут не наложиться на архив последнего релиза. Готовые пакеты появятся у поставщиков дистрибутивов и у компаний, выпускающих продукты на основе Xen. Администраторам стоит проверить, какие версии гипервизора работают на их серверах, и применить обновления в ближайшее время. Особенно срочно это касается платформ с пробросом устройств PCI и с гостями на аппаратной виртуализации, а также установок, где применяется служба xenstored на OCaml. Для трёх уязвимостей готовых обходных путей нет вовсе, поэтому отложенное обновление оставляет сервер уязвимым без альтернатив. Отдельного внимания требуют системы, где гостевые машины сдаются внешним пользователям: именно такой сценарий даёт злоумышленнику прямой доступ к условиям эксплуатации.
Пять уязвимостей разного класса, раскрытых одним днём, показывают, что гипервизор остаётся сложным продуктом с широкой поверхностью атаки. Часть ошибок живёт в коде десятилетиями, как утечка памяти, тянущаяся с версии 3.2. Другие связаны с проверками границ в служебных компонентах, которые редко попадают в поле зрения разработчиков приложений. Показательно и то, что одну из уязвимостей нашли автоматические агенты: такой способ поиска постепенно становится обычной практикой, а значит, поток подобных бюллетеней вряд ли сократится.
Ссылки
- https://xenbits.xen.org/xsa/advisory-513.html
- https://xenbits.xen.org/xsa/advisory-512.html
- https://xenbits.xen.org/xsa/advisory-511.html
- https://xenbits.xen.org/xsa/advisory-510.html
- https://xenbits.xen.org/xsa/advisory-509.html