В версиях ядра Linux, выпущенных с 2017 по 2026 год, обнаружены критические уязвимости Dirty Frag CVE-2026-43284 и CVE-2026-43500 и Fragnesia CVE-2026-46300 . Уязвимости связаны с ошибками в механизмах записи кеша страницы в компонентах xfrm-ESP и RxRPC. Уязвимость позволяет локальным пользователям изменять содержимое кеша страниц любого читаемого файла в системе и повышать права до root на большинстве распространенных дистрибутивов Linux.
На платформе Облако VMware затронуты все дистрибутивы на базе Linux, включая Ubuntu, Debian и CentOS. Выпуск патча для всех образов ВМ на платформе Облако VMware ожидается в ближайшее время. Если ВМ была создана из образа, для нее достаточно будет обновить ОС до актуальной.
Чтобы проверить подверженность вашей системы уязвимости CVE-2026-43284 в модуле xfrm-ESP:
Проверьте, затронута ли версия ядра.
Для этого запустите команду, которая покажет текущую версию системы:
uname -r
Если версия ядра меньше 4.11, уязвимость не затрагивает систему.
Если версия ядра больше или равна 4.11 — система уязвима, переходите к следующему шагу.
Если версия ядра 4.x, но ниже 4.11, и дата компиляции ядра — январь 2017 года или позже, необходимо проверить, содержит ли дистрибутив коммит cac2661c53f3, в котором появилась уязвимость. Если коммит содержится, то система уязвима — переходите к следующему шагу.
Проверьте, содержит ли система модуль xfrm-ESP.
Посмотрите конфигурацию компиляции текущей системы:
zcat /proc/config.gz | grep CONFIG_XFRM_ESP orcat /boot/config-$(uname -r) | grep CONFIG_XFRM_ESP orzcat /proc/config.gz | grep CONFIG_INET_ESP orcat /boot/config-$(uname -r) | grep CONFIG_INET_ESP
Если все результаты пустые, отображается # CONFIG_XFRM_ESP is not set или # CONFIG_INET_ESP is not set, система не поддерживает этот модуль. Уязвимость не затрагивает систему, проверку можно завершить.
Если в каком-либо из результатов указано =y или =m — система уязвима, переходите к следующему шагу проверки.
Убедитесь, нужно ли митигировать уязвимость.
Проверьте, загружены ли в системе модули, связанные с ESP:
lsmod | grep esp
Если вывод команды не пустой и содержит esp, переходите к шагу 4 для дальнейшей проверки.
Если вывод пустой, модуль не загружен. Далее проверьте следующее:
Если в вашей конфигурации указано CONFIG_XFRM_ESP = m или CONFIG_INET_ESP = m, проверьте, отключены ли на хосте модули esp4/esp6. Для этого проверьте, содержит ли конфигурация в каталоге /etc/modprobe.d/ следующие строки:
install esp4 /bin/falseinstall esp6 /bin/false
Если да, система неуязвима, проверку можно завершить.
Если нет, проверьте, поддерживает ли текущая операционная система параметр CONFIG_USER_NS:
zcat /proc/config.gz | grep CONFIG_USER_NS orcat /boot/config-$(uname -r) | grep CONFIG_USER_NS
Если в результате выводится y, переходите к шагу 4.
Если вывод пустой или указано not set, переходите к шагу 5.
Для сценариев с поддержкой CONFIG_USER_NS проверьте, выключена ли команда unshare.
Если CONFIG_XFRM_ESP или CONFIG_INET_ESP имеют значение m или y, проверьте, отключена ли возможность использования команды unshare. Для этого на виртуальной машине или в контейнере выполните команду создания пользовательского и сетевого пространства имен от имени обычного пользователя:
unshare -Un -r /bin/bash
Если каталог /bin/bash` отсутствует:
unshare -Un -r /bin/sh
Если после выполнения команды появляется ошибка вида unshare failed или Operation Not Permitted, система неуязвима и проверку можно завершить.
Если ошибка не возникает и появляется оболочка с правами root, система уязвима.
Если в системе отсутствует команда unshare или нет интерпретаторов sh, bash (ошибка not found), необходимо самостоятельно скомпилировать тестовый файл unshare-poc.c для проверки:
Создайте файл unshare-poc.c и скопируйте в него код:
#define _GNU_SOURCE#include <sched.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>int main(){int ret;printf("[*] testing unshare(CLONE_NEWUSER)\n");ret = unshare(CLONE_NEWUSER);if (ret == 0) {printf("[+] CLONE_NEWUSER allowed\n");} else {printf("[-] failed: %s (%d)\n",strerror(errno),errno);}return 0;}
Выполните статическую компиляцию тестового файла:
gcc unshare-poc.c -static -o unshare-poc
Запустите файл на целевой системе.
Если вывод содержит строку CLONE_NEWUSER allowed — система уязвима.
Если вывод содержит failed — система неуязвима.
Проверка завершена.
Для сценариев без поддержки CONFIG_USER_NS проверьте, имеет ли обычный пользователь права CAP_NET_ADMIN.
Если CONFIG имеет значение m или y, проверьте, есть ли у обычного пользователя права CAP_NET_ADMIN. Для этого войдите в систему под обычным пользователем и выполните команду:
grep '^CapEff:' /proc/$$/status
Если результат содержит только нули, система неуязвима и проверку можно завершить.
Если в результате не все нули, например 000001ffffffffff, скопируйте свое значение и выполните следующую команду для верификации прав:
capsh --decode=000001ffffffffff # Замените на фактическое значение из вывода
Пример вывода:
0x000001ffffffffff=cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,cap_perfmon,cap_bpf,cap_checkpoint_restore
Если в списке есть CAP_NET_ADMIN, система уязвима.
Если нет, система неуязвима.
Проверка завершена.
Чтобы митигировать уязвимости в дистрибутивах AlmaLinux и Rocky Linux, обновите ОС до последней версии. Для остальных дистрибутивов следуйте шагам митигации ниже.
Способ митигации нарушит функциональность IPsec. Оцените влияние на вашу среду, чтобы избежать сбоев.
Для случаев CONFIG_XFRM_ESP = m или CONFIG_INET_ESP = m проверьте зависимость текущего хоста от модуля ESP:
lsmod | grep esp
Если вывод пустой, отключите ESP:
echo "install esp4 /bin/false" >> /etc/modprobe.d/disable-esp.confecho "install esp6 /bin/false" >> /etc/modprobe.d/disable-esp.confЧтобы проверить, что ESP отключен, выполните команду:
modprobe esp4Если появится сообщение «ERROR», меры митигации применились успешно.
Если вывод команды lsmod не пустой и cодержит esp4 или esp6, примените метод, описанный ниже, для отключения возможности создания новых пространств имен, если это не повлияет на вашу среду негативно.
Для случая CONFIG_XFRM_ESP=y или CONFIG_INET_ESP=y отключите создание новых пространств имен:
echo 0 > /proc/sys/user/max_user_namespaces
Предотвратить использование команды unshare непривилегированными пользователями можно другими методами.