
Недestructive-детектор для CVE-2026-31431 (Copy Fail) локального повышения привилегий в XCP-ng 8.3 Dom0, проверяющий уязвимость ядра через тест повреждения page-cache.
Безопасный, неразрушающий скрипт-детектор для CVE-2026-31431 («Copy Fail»), проверенный на XCP-ng 8.3 LTS до выхода обновления безопасности от 5 мая 2026 года.
⚠️ Только для авторизованного использования. Запускайте этот скрипт исключительно на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
CVE-2026-31431, получившая название «Copy Fail», — это уязвимость локального повышения привилегий (LPE) в криптографическом интерфейсе algif_aead ядра Linux. Логическая ошибка в шаблоне authencesn, появившаяся в 2017 году, позволяет непривилегированному локальному пользователю выполнить контролируемую запись 4 байт в page cache ядра любого читаемого файла, что даёт возможность повысить привилегии до root.
a664bf3d603d от Герберта Сю (Herbert Xu)Управляющий домен Dom0 в XCP-ng работает на ядре Linux и является уровнем управления гипервизором. Любой непривилегированный пользователь с доступом к оболочке Dom0 — включая служебные учётные записи, созданные для конвейеров CI/CD, агентов мониторинга, инструментов резервного копирования или автоматизации — может использовать эту уязвимость для получения root. Имея root в Dom0, злоумышленник получает доступ ко всем гостевым ВМ на этом хосте.
Стандартная установка XCP-ng имеет минимальную поверхность атаки, так как очень немногие процессы работают от имени непривилегированных пользователей. Реальный риск накапливается со временем, когда администраторы добавляют служебные учётные записи для легитимных целей, не ограничивая доступ к оболочке.
Проверьте служебные учётные записи Dom0:
awk -F: '$7 ~ /bash|sh/' /etc/passwd
Это лабораторный детектор, а не инструмент повышения привилегий. Он:
algif_aead / authencesn для этого файлаСистемные бинарные файлы, /etc/passwd и другие системные файлы никогда не затрагиваются. Повреждение page cache происходит только в памяти — ничего не записывается обратно на диск.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| Код | Значение |
|---|---|
0 | Повреждений не обнаружено — система, вероятно, пропатчена или algif_aead отключён |
1 | Ошибка запуска — algif_aead может быть недоступен или заблокирован |
2 | Уязвима — подтверждено повреждение page cache |
Примечание: Код выхода
1на пропатченной системе — ожидаемое поведение, а не ошибка скрипта. Еслиauthencesnотключён на уровне ядра (как в исправлении XCP-ng от 5 мая), привязка сокета завершится ошибкой, и скрипт завершится с кодом1.
| Дата | Событие |
|---|---|
| 29 апреля 2026 | CVE-2026-31431 публично раскрыта |
| 4 мая 2026 | VATES публикует VSA-2026-013 |
| 5 мая 2026 | Выпущено майское обновление безопасности XCP-ng 8.3 LTS — доступно исправление ядра |
Обновите хосты XCP-ng и перезагрузите их:
yum update
reboot
После перезагрузки проверьте, что запущено обновлённое ядро:
uname -r
Повторно запустите этот скрипт-детектор после установки исправления. Пропатченная система вернёт код выхода 1 (ошибка запуска), так как уязвимый шаблон authencesn больше недоступен.
Примечание: Исправление XCP-ng отключает поддержку IPSec ESN в результате удаления уязвимого компонента
authencesn. Для большинства сред это не имеет практического влияния. VATES сообщила, что будущий патч может восстановить эту функциональность с надлежащим исправлением.
Перед применением мер смягчения убедитесь, скомпилирован ли algif_aead как модуль (=m) или встроен в ядро (=y):
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — на основе модуля; чёрный список modprobe будет работать=y — встроен в ядро; чёрный список modprobe молча не сработает и не обеспечит защитуДля ядер семейства RHEL со значением =y вместо этого используйте параметр загрузки grubby:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Этот скрипт является модифицированным производным от оригинальной работы rootsecdev. Пожалуйста, проверьте лицензию вышестоящего репозитория перед распространением и убедитесь, что ваше использование соответствует её условиям.
Этот скрипт был проверен на XCP-ng 8.3 LTS с непропатченным ядром по состоянию на 5 мая 2026 года. Немедленно примените официальное обновление безопасности VATES, если вы ещё этого не сделали.