Cайт программиста Ruby, веб-разработчика Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Четыре старые ошибки Linux получили рабочие эксплойты для root

Четыре ошибки в ядре Linux, которые прожили в коде от 10 до 21 года, получили рабочие публичные эксплойты для повышения привилегий до root. Уязвимости затрагивают разные сетевые подсистемы, а одна из них при определённой конфигурации теоретически способна перейти от локальной атаки к удалённому захвату системы.

Специалист по безопасности Асим Манизада назвал уязвимости DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) и DiagSpill (CVE-2026-74469). Манизада сообщил об ошибках команде безопасности Linux в середине июля, после чего исправления постепенно вошли в стабильные ветки ядра. Похожая ситуация недавно произошла с другой серией Linux-уязвимостей, для которых сразу опубликовали 18 эксплойтов.

DirtyAH6 скрывается в обработке Authentication Header для IPv6. Некорректное значение segments_left заставляет ядро вычислить указатель за пределами нужного буфера и выполнить операцию memmove с выходом за его границы. Рабочий PoC повреждает структуры сетевого буфера, а затем использует похожую на Dirty Frag технику, чтобы подменить данные в памяти и открыть root-оболочку через su.

TUNderflow связан с виртуальными сетевыми устройствами TUN/TAP и некорректным расчётом места перед данными сетевого пакета. Слишком большое значение headroom вызывает целочисленное переполнение, после чего обработка пакета выходит за пределы выделенной области памяти.

PPPoEject использует другую ошибку: код PPPoE продолжает обращаться к старому указателю внутри сетевого буфера после перераспределения памяти и фактически получает use-after-free.

DiagSpill находится в SCTP. Счётчик адресов узла хранится в 16-битном поле и обнуляется при добавлении 65 536-го транспорта. Ядро после переполнения резервирует слишком маленький ответ Netlink, но продолжает копировать полный список, записывая около 8 МБ за пределами буфера. Похожая подсистема уже становилась причиной SCTPhantom, которая прожила в Linux 18 лет и позволяла получать root и выходить из контейнеров.

Опубликованные эксплойты нельзя считать "универсальной кнопкой root" для любого Linux. Все четыре ошибки повреждают память, поэтому PoC приходится настраивать под конкретное ядро, процессор и расположение объектов в памяти. DirtyAH6, TUNderflow и PPPoEject в показанных цепочках требуют непривилегированных пользовательских пространств имён. DiagSpill отличается сильнее всего: при доступных SCTP и sctp_diag ошибка не требует ни user namespaces, ни специальных capability. В тестах Манизады SELinux и AppArmor сами по себе не остановили эксплуатацию после выполнения необходимых условий.

Часть ошибок имеет и ограниченный удалённый потенциал. DirtyAH6 может привести к удалённому сбою Linux-машины, которая работает как IPv6-маршрутизатор и добавляет AH в транспортном режиме. Манизада также получил удалённый root в лаборатории после предварительной подготовки памяти, но назвал полностью удалённую эксплуатацию крайне сложной. Для DiagSpill возможен удалённый отказ в обслуживании только при нестандартных настройках SCTP, а практического пути к удалённому root автор не нашёл.

В опубликованном 18 сентября разборе четырёх уязвимостей главным способом защиты названо обновление ядра. Первые стабильные версии, содержащие сразу все четыре исправления, это Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 и 7.2.4. Отключение непривилегированных user namespaces закрывает обычному пользователю путь к первым трём ошибкам, но не защищает от DiagSpill. Если AH6, TUN, PPPoE или SCTP не нужны, соответствующие возможности также можно отключить.

Возраст новой четвёрки хорошо показывает, почему старый код ядра нельзя автоматически считать проверенным временем. В августе похожая история произошла с Dirty COW: спустя годы после исправления специалисты показали, как адаптировать старый эксплойт под современные сценарии и устройства, которые продолжают работать на давно устаревших ядрах.

Весной Linux уже пережил серию похожих находок вокруг кэша страниц. В частности, Copy Fail позволял всего несколькими строками кода получить root, меняя защищённые данные в памяти без правки файла на диске.

Ещё один свежий пример связан с pedit COW. Уязвимость позволяла непривилегированному пользователю подменять setuid-программу непосредственно в кэше памяти, поэтому обычная проверка целостности файла могла не заметить уже состоявшийся захват root.

SecurityLab