Fragnesia — уязвимост в ядрото на Linux, позволяваща получаване на root чрез промяна на страничния кеш

В ядрото на 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 байт в кеша на страниците по избрано offset. Повтаряйки операциите, може байт по байт да се промени съдържанието на всеки файл в кеша на страниците.

Всички операции за четене от файлове първо предоставят съдържанието от кеша на страниците. В случай на модификация на данните в кеша на страниците, операциите за четене от файл ще доведат до връщане на не реално съхраняваната информация на носителя, а на заменени данни. Експлоатацията на уязвимостта се състои в промяна на кеша на страниците за изпълним файл с флаг 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster