Выпущены обновления ядра Linux, закрывающие опасную уязвимость CVE-2026-46331, получившую название PEdit-CoW. Проблема затрагивает механизм copy-on-write (копирование при записи) в подсистеме редактирования заголовков сетевых пакетов act_pedit, входящей в состав планировщика пакетов (net/sched). Ошибка позволяет локальному непривилегированному пользователю выполнять запись за пределы выделенного буфера и повреждать страничный кэш, что в итоге ведет к повышению привилегий до root. Уязвимость обнаружил и опубликовал эксплоит исследователь под псевдонимом sgkdev.
Уязвимость PEdit-CoW (CVE-2026-46331)
Причина уязвимости - некорректная проверка допустимой области для записи данных. Функция tcf_pedit_act() рассчитывает диапазон копирования при записи (COW) один раз до начала цикла обработки ключей, используя предварительную подсказку tcfp_off_max_hint. Однако эта подсказка не учитывает изменение смещения на редактируемые поля во время выполнения операции, которое вносят типизированные ключи (typed keys). В результате часть области записи остается без копирования, и злоумышленник может записать данные за границы буфера, попав в страничный кэш.
Эксплуатация строится следующим образом: первый ключ NETWORK изменяет длину заголовка IP (IHL), так что последующий ключ TCP разрешается за пределами рассчитанной ранее области COW. К моменту отправки пакета через sendfile() в буфер ядра попадает содержимое файла из страничного кэша. Эксплоит перезаписывает кэшированный ELF-заголовок утилиты /bin/su, имеющей установленный бит setuid-root, вставляя шелл-код, вызывающий setgid(0), setuid(0) и execve("/bin/sh"). После этого запуск su обычным пользователем приводит к выполнению шелл-кода и получению root.
Уязвимость присутствует в ядре Linux начиная с версии 5.18 (коммит 899ee91156e5, ставший первопричиной) и до исправления, включенного в версию 7.1-rc7. Исправления выпущены для стабильных веток: 7.1, 7.0.13, 6.18.36 и 6.12.94. Под ударением находятся многие популярные дистрибутивы: Red Hat Enterprise Linux 8, 9, 10; Debian 11, 12, 13; openSUSE Leap 15.6; SUSE Linux 15-SP7, 16.0; Ubuntu 18.04, 20.04, 22.04, 24.04, 25.10. В Ubuntu 26.04 по умолчанию заблокировано создание user namespace (пространства имен пользователя), что закрывает основной вектор эксплуатации, однако в более ранних версиях это ограничение отсутствует.
Исследователь sgkdev опубликовал на GitHub готовый эксплоит (packet_edit_meme.c) и примитив для перезаписи страничного кэша. Для успешной атаки требуется, чтобы в системе был доступен механизм unshare с флагами CLONE_NEWUSER и CLONE_NEWNET, дающий непривилегированному пользователю возможность получить CAP_NET_ADMIN в собственном сетевом пространстве имен. По умолчанию такая возможность есть в RHEL, Debian, openSUSE и некоторых версиях Ubuntu (при отключенных AppArmor-ограничениях). В Ubuntu с включенным AppArmor необходимо предварительно переключиться через профиль, разрешающий user namespace (например, trinity, chrome, flatpak), что возможно в версиях до 26.04.
Как временную меру защиты до установки обновления ядра рекомендуется заблокировать загрузку модуля act_pedit. Это можно сделать, выполнив от имени root команду:
| 1 2 | echo "blacklist act_pedit" > /etc/modprobe.d/blacklist-act-pedit.conf rmmod act_pedit |
Следует учитывать, что после этого перестанут работать правила ограничения трафика и перезапись заголовков через утилиту tc pedit. В некоторых сценариях такая блокировка может нарушить штатную работу сетевых сервисов.
Уязвимость PEdit-CoW продолжает серию локальных уязвимостей повышения привилегий, связанных с некорректной обработкой copy-on-write в ядре Linux. Ранее аналогичные проблемы (CopyFail, DirtyFrag) требовали более сложных методов обнаружения, поскольку их эксплуатация опиралась на операции, которые в норме выполняются легитимным ПО. В случае PEdit-CoW сам примитив (создание правил tc с CAP_NET_ADMIN) является привилегированной и относительно редкой операцией, что позволяет детектировать атаку на ранней стадии с помощью eBPF-сенсоров.
Администраторам серверов и рабочих станций на Linux рекомендуется в кратчайшие сроки установить обновления ядра из официальных репозиториев дистрибутива. Особое внимание следует уделить системам, где непривилегированные пользователи имеют доступ к командной оболочке или контейнерным средам.
Ссылки
- https://github.com/advisories/GHSA-cr2w-747q-47qc
- https://github.com/rafaeldtinoco/security/tree/main/exploits/peditcow
- https://github.com/sgkdev/packet_edit_meme