В ядре Linux обнаружены четыре старые ошибки, которые прожили в коде от 10 до 21 года и теперь получили рабочие эксплойты для получения привилегий администратора. Уязвимости затрагивают разные сетевые подсистемы. Одна из них при определённой конфигурации способна перейти от локальной атаки к удалённому захвату системы.
Специалист по безопасности Асим Манизада выявил четыре уязвимости: DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) и DiagSpill (CVE-2026-74469). Об ошибках сообщили команде безопасности Linux в середине июля. Исправления постепенно вошли в стабильные ветки ядра.
DirtyAH6 находится в обработке Authentication Header для IPv6. Некорректное значение segments_left заставляет ядро вычислить указатель за пределами буфера и выполнить операцию memmove с выходом за его границы. Рабочий эксплойт повреждает структуры сетевого буфера, затем использует технику похожую на Dirty Frag, чтобы подменить данные в памяти и открыть root-оболочку.
TUNderflow связан с виртуальными сетевыми устройствами TUN/TAP и некорректным расчётом места перед данными пакета. Слишком большое значение headroom вызывает целочисленное переполнение, после чего обработка пакета выходит за пределы выделенной памяти. PPPoEject использует другую ошибку в коде PPPoE: программа продолжает обращаться к старому указателю внутри сетевого буфера после перераспределения памяти, создавая уязвимость use-after-free.
DiagSpill находится в подсистеме SCTP. Счётчик адресов узла хранится в 16-битном поле и обнуляется при добавлении 65 536-го транспорта. Ядро после переполнения резервирует слишком маленький ответ Netlink, но продолжает копировать полный список, записывая около 8 МБ за пределами буфера. Похожая ошибка в SCTP (SCTPhantom) прожила в Linux 18 лет и позволяла получать root и выходить из контейнеров.
Опубликованные эксплойты не универсальны. Все четыре ошибки повреждают память, поэтому код приходится настраивать под конкретное ядро, процессор и расположение объектов в памяти. DirtyAH6, TUNderflow и PPPoEject требуют непривилегированных пользовательских пространств имён. DiagSpill отличается: при доступных SCTP и sctp_diag ошибка не требует ни user namespaces, ни специальных capability. В тестах SELinux и AppArmor сами по себе не остановили эксплуатацию.
Часть ошибок имеет ограниченный удалённый потенциал. DirtyAH6 может привести к удалённому сбою Linux-машины, которая работает как IPv6-маршрутизатор. Манизада получил удалённый root в лаборатории после предварительной подготовки памяти, но назвал полностью удалённую эксплуатацию крайне сложной. Для DiagSpill возможен удалённый отказ в обслуживании только при нестандартных настройках SCTP.
Главный способ защиты — обновление ядра. Первые стабильные версии, содержащие все четыре исправления: 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.
