Локальное повышение привилегий через уязвимость DirtyClone в ядре Linux: вышли патчи

linux

В ядре Linux обнаружена и исправлена уязвимость DirtyClone (CVE-2026-43503), позволяющая локальному непривилегированному пользователю повысить привилегии до root и модифицировать содержимое файлов, доступных только для чтения. Проблема затронула дистрибутивы Debian, Ubuntu, Fedora, RHEL и SUSE. Разработчики выпустили обновления ядра, закрывающие брешь.

Уязвимость DirtyClone (CVE-2026-43503)

DirtyClone является продолжением цепочки уязвимостей DirtyPipe и DirtyFrag, связанных с некорректной обработкой флагов shared-frag при копировании структур skb (сокетных буферов). В данном случае ошибка проявляется в модуле xt_TEE - расширении netfilter, предназначенном для дублирования сетевых пакетов. При клонировании пакета через nf_dup_ipv4() функция __pskb_copy_fclone() не переносит флаг SKBFL_SHARED_FRAG, указывающий, что сокетный буфер ссылается на страницу, принадлежащую кешу файловой системы. В результате пакет, содержащий данные из page-cache, попадает на обработку к esp_input() - функции дешифрования ESP-протокола IPsec - без маркера общего ресурса. Это позволяет злоумышленнику, имеющему доступ к отправке ESP-пакетов (через unshare в сочетании с пользовательским пространством имён сети), инициировать расшифровку прямо поверх исходной страницы кеша, изменяя её содержимое.

Атакующий может перезаписать исполняемый файл, например /usr/bin/su, внедрив туда код, который предоставит права root. Технически атака требует наличия в системе модулей esp4/esp6 и xt_TEE. Эксплуатация возможна при условии загрузки этих модулей; в дистрибутивах, где они загружаются по умолчанию при использовании IPsec, риск возрастает. В описании CVE указано, что "два вспомогательных переноса фрагментов (__pskb_copy_fclone и skb_shift) не передают бит SKBFL_SHARED_FRAG при перемещении фрагментов от источника к получателю". Разработчики ядра подчеркнули, что данная недоработка позволяет "непривилегированному пользователю записывать в page-cache файла, доступного только для чтения, через отмывку флага с помощью xt_TEE".

Уязвимость представляет серьёзную угрозу для корпоративных систем, использующих IPsec, а также для любых окружений, где разрешена загрузка модулей esp4/esp6. В сочетании с возможностью создания изолированного сетевого пространства имён атака доступна любому локальному пользователю даже без дополнительных прав. При этом для записи не требуется прав на запись в целевой файл: модификация происходит на уровне page-cache. DirtyClone опасна тем, что она обходит предыдущее исправление DirtyFrag, введённое коммитом f4c50a4034e6. Новая техника "отмывает" флаг shared-frag через netfilter TEE, возвращая возможность прямой записи в кеш. Исследователи безопасности уже подготовили proof-of-concept эксплуататора, который за 25 секунд на уязвимом ядре позволяет получить root.

Исправление включено в версии ядра 7.1, 7.0.10, 5.10.257, 5.15.208, 6.1.174, 6.6.141, 6.12.91 и 6.18.33. Пользователям рекомендуется как можно скорее обновить ядро до одной из указанных сборок. Если обновление невозможно, в качестве временной меры следует заблокировать загрузку модулей esp4 и esp6, например занеся их в чёрный список modprobe. Это предотвратит возможность атаки на ESP-декриптор, хотя не устранит саму ошибку клонирования. Также можно отключить автоматическую загрузку xt_TEE, если он не требуется: блокировка загрузки модуля xt_TEE удаляет вектор "отмывки" флага.

Ситуация демонстрирует, что исправления, введённые для одной уязвимости, могут быть обойдены при наличии смежной ошибки в смежных подсистемах. Разработчики ядра продолжают закрывать подобные цепочки, распространяя защиту на все пути клонирования skb. Выпуск патчей сразу для нескольких стабильных веток свидетельствует о приоритетности проблемы. Владельцам систем, где задействован IPsec, стоит внимательно отнестись к обновлению: задержка с установкой патча может привести к компрометации критичных файлов даже при отсутствии прямых признаков атаки.

Ссылки

Комментарии: 0