Fragnesia - ещё одна уязвимость в ядре Linux, позволяющая получить root через изменение страничного кэша
Дата публикации:Wed, 13 May 2026 21:23:07 +0300
В ядре Linux выявлена четвёртая за последние две недели уязвимость (CVE-2026-46300), позволяющая непривилегированному пользователю получить права root, перезаписав данные в страничном кэше. Уязвимости присвоено кодовое имя Fragnesia или Copy Fail 3.0. Суть уязвимости аналогична ранее раскрытым уязвимостям Copy Fail и Dirty Frag. Как и в случае с Dirty Frag новая уязвимость присутствует в подсистеме xfrm-ESP, но вызвана другой ошибкой и требует отдельного исправления. Доступен рабочий эксплоит.
Уязвимость проявляется в ядрах Linux, выпущенных после 5 мая, из-за случайной активации исправлением уязвимости Dirty Frag. Для устранения уязвимости Fragnesia для ядра Linux было предложено исправление. Анализ данного исправления показал, что его недостаточно, после чего был подготовлен второй вариант патча.
Уязвимость присутствует в подсистеме xfrm в реализации механизма инкапсуляции протокола ESP (Encapsulating Security Payload) в TCP (ESP-in-TCP, RFC 8229), применяемой для туннелирования трафика IPsec поверх TCP. Для исключений лишней буферизации операции с использованием алгоритма AES-GCM выполнялись по месту через выполнение операции XOR к данным в страничном кэше. Из-за логической ошибки, возникали условия, позволяющие перезаписать 1 байт в страничном кэше по выбранному смещению. Повторяя операции можно байт за байтом изменить содержимое любого файла в страничном кэше.
Все операции чтения из файлов в первую очередь отдают содержимое из страничного кэша. В случае модификации данных в страничном кэше операции чтения из файла приведут к возвращению не реально хранимой на накопителе информации, а подменённых данных. Эксплуатация уязвимости сводится к изменению страничного кэша для исполняемого файла с флагом suid root, предварительного прочитанного для попадания в страничный кэш. В предложенном исследователями эксплоите первые 192 байт файла /usr/bin/su в страничном кэше перезаписываются кодом для запуска /usr/bin/sh. Последующий запуск утилиты "su" приводит к тому, что в память будет загружен не оригинальный исполняемый файл с накопителя, а изменённая копия из страничного кэша.
Для эксплуатации уязвимости Fragnesia в системе должно быть разрешено создание пространств имён идентификаторов пользователей (user namespace). В Ubuntu подобная операция по умолчанию запрещена, но может быть разрешена через sysctl "kernel.apparmor_restrict_unprivileged_userns=0" или профили AppArmor. В остальных дистрибутивах доступность "user namespace" непривилегированным пользователям зависит от выставления sysctl "kernel.unprivileged_userns_clone" (если 0, то запрещено).
Обновления с исправлениями для ядра Linux и пакетов с ядром в дистрибутивах пока не опубликованы. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora. В качестве обходного пути защиты можно заблокировать загрузку модулей ядра esp4 и esp6:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 2>/dev/null; true"
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65441