Специалисты компании Galaxy Hash сообщили об обнаружении и успешной верификации локальной уязвимости повышения привилегий в компоненте act_pedit подсистемы TC (traffic control) ядра Linux. Проблеме присвоен идентификатор CVE-2026-46331, рейтинг опасности по шкале CVSS составил 7,1 балла, что соответствует высокому уровню угрозы. Разработчики уже выпустили патчи, закрывающие брешь, а также рекомендуют временные меры для систем, где обновление ядра пока невозможно.
Детали уязвимости
Уязвимость затрагивает механизм обработки правил редактирования сетевых пакетов в модуле act_pedit. Этот модуль используется для динамического изменения содержимого пакетов при прохождении через стек сетевой обработки Linux. Ключевая проблема заключается в том, что функция tcf_pedit_act выполняет предварительный расчёт области памяти для операции копирования при записи (copy-on-write, COW), опираясь только на статические смещения. При этом она не учитывает динамическое изменение заголовков L3/L4 (сетевого и транспортного уровней) во время выполнения правил. В результате фактическая область записи после расчёта может выходить за пределы предварительно скопированного буфера.
Кроме того, в коде отсутствует обработка ситуации с отрицательным смещением в область заголовка Ethernet, а также нет механизма принудительной линеаризации фрагментированных пакетов. Каждая инструкция редактирования выполняется без дополнительной проверки актуального смещения записи на предмет необходимости повторного COW. Это позволяет атаке напрямую изменять разделяемые страницы кэша, созданные при помощи системных вызовов sendfile или mmap с флагом MAP_SHARED.
Для эксплуатации уязвимости злоумышленнику необходимо иметь локальный доступ к системе с возможностью создания пользовательского сетевого пространства имён (network namespace). Это даёт возможность получить привилегию CAP_NET_ADMIN, необходимую для загрузки правил act_pedit. Используя специально сформированные правила редактирования пакетов в сочетании с фрагментированными пакетами, атакующий может модифицировать содержимое файлового кэша или памяти ядра за пределами разрешённых областей. В итоге локальный пользователь с ограниченными правами способен повысить свои привилегии до root.
Проблема присутствует во всех версиях ядра Linux, начиная с v5.18 (май 2022 года) и вплоть до выпуска v7.1-rc7, в котором был внесён основной исправляющий коммит (899ee91156e57784090c5565e4f31bd7dbffbc5a). Дополнительный патч (d504a978572202ef43ac5ecfec2030adda64b13e) закрывает смежные сценарии эксплуатации. Таким образом, уязвимость оставалась незакрытой около четырёх лет.
Среди дистрибутивов, подверженных риску, значатся Red Hat Enterprise Linux 10.0 (ядро 6.12.0-228.el10), Debian 13 trixie (ядро 6.12.90+deb13.1) и Ubuntu 24.04.4 (ядро 6.17.0-22). Пользователям этих и других систем с ядрами из указанного диапазона рекомендуется как можно скорее обновить ядро до версии v7.1-rc7 или более поздней, в зависимости от доступности пакетов в репозиториях дистрибутива.
Для систем, которые не могут быть немедленно обновлены, разработчики предлагают временное решение. В качестве обходного пути можно отключить модуль act_pedit, выполнив команду "echo "blacklist act_pedit" > /etc/modprobe.d/act_pedit.conf" и перезагрузив систему. Эта мера предотвратит загрузку уязвимого компонента, но приведёт к недоступности функциональности редактирования пакетов в traffic control.
Публично доступный proof-of-concept (PoC) для CVE-2026-46331 уже существует, а сложность эксплуатации оценивается как низкая. Это означает, что злоумышленники могут быстро адаптировать опубликованный код для проведения реальных атак. Наличие локального доступа - значительное ограничение, однако во многих сценариях (многоарендные облачные среды, корпоративные серверы с возможностью выполнения кода от имени непривилегированного пользователя) такая предпосылка выполняется. Успешная эксплуатация может привести к полному захвату узла злоумышленником.
Обнаружение данной уязвимости ещё раз подчёркивает сложность обеспечения безопасности сетевой подсистемы ядра, особенно при работе с механизмами, манипулирующими памятью и копированием данных. Разработчики ядра Linux продолжают совершенствовать методы статического и динамического анализа кода, однако подобные ошибки, связанные с неполным учётом всех путей выполнения, остаются серьёзным вызовом. В текущем исправлении, помимо основной проблемы, были усилены проверки границ и добавлены недостающие вызовы COW для всех потенциально опасных операций записи.
Администраторам и владельцам инфраструктуры на базе Linux рекомендуется провести инвентаризацию используемых версий ядра, особенно на серверах и виртуальных машинах, где возможен запуск кода от имени локальных пользователей. Внедрение механизмов изоляции, таких как контейнеры с ограниченными привилегиями, может снизить риск, однако полное устранение уязвимости требует установки патча.
Ссылки
- https://github.com/sgkdev/packet_edit_meme
- https://nvd.nist.gov/vuln/detail/CVE-2026-46331
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=899ee91156e57784090c5565e4f31bd7dbffbc5a
- https://github.com/torvalds/linux/commit/d504a978572202ef43ac5ecfec2030adda64b13e