Исследователь Асим Манизада опубликовал технический отчёт и рабочие PoC-эксплойты для четырёх уязвимостей ядра Linux, каждая из которых позволяет повысить привилегии до root. Уязвимости получили имена DirtyAH6ошибка в коде IPsec, обрабатывающем заголовок аутентификации IPv6, TUNderflowошибка в виртуальных сетевых устройствах TUN и TAP, PPPoEjectошибка в коде PPP over Ethernet и DiagSpillошибка в коде отчётности SCTP и идентификаторы CVE-2026-80844идентификатор уязвимости DirtyAH6, CVE-2026-81000идентификатор уязвимости TUNderflow, CVE-2026-68121идентификатор уязвимости PPPoEject и CVE-2026-74469идентификатор уязвимости DiagSpill соответственно. Публикация состоялась 18 сентября — после согласованной с дистрибутивами задержки, чтобы исправления успели выйти раньше эксплойтов.
Все четыре ошибки — это ошибки безопасности памяти в разных частях сетевого кода ядра, и каждая даёт возможность повредить память ядра. Ошибки старые: они существовали в ядре от 10 до 21 года.
Что именно сломано
DirtyAH6 находится в коде IPsec, который обрабатывает заголовок аутентификации IPv6расширение IPsec для проверки подлинности пакетов IPv6, обозначаемое AH. Код доверял полю routing-header — служебному полю заголовка маршрутизации IPv6, в котором перечислены промежуточные адреса, — не сверяя его с фактическим числом адресов в пакете, поэтому специально собранный пакет уводил внутренний указатель далеко за границы буфера и запись шла за его пределы.
TUNderflow затрагивает виртуальные сетевые устройства TUNпрограммный сетевой интерфейс, через который приложение передаёт в ядро IP-пакеты и получает их обратно и TAPпрограммный сетевой интерфейс, через который приложение передаёт в ядро кадры канального уровня и получает их обратно. Завышенное значение, переданное через Open vSwitchпрограммный коммутатор виртуальных сетей, который пересылает трафик между виртуальными машинами и контейнерами, вызывало переполнение при вычислении размера, и данные пакета оказывались вне буфера.
PPPoEject — ошибка в коде PPP over Ethernet. Указатель в сетевой буфер сохранялся на время вызова процедуры устройстваВызов функции ядра, который может освободить или переместить сетевой буфер, пока код продолжает хранить указатель на него., после чего последующие записи работали с уже освобождённой памятью — use-after-freeобращение к памяти после её освобождения, когда содержимое по этому адресу уже принадлежит другому объекту.
DiagSpill — в коде отчётности SCTPтранспортный протокол передачи данных, альтернативный TCP и UDP. Счётчик, отслеживающий конечные точки соединения — адреса и порты участников связи, по которым ядро ведёт учёт открытых соединений, — имеет ширину всего 16 бит, поэтому на 65 536-й конечной точке он обнулился. Код отчётности после этого не выделил место, но скопировал весь список, записав около 8 МиБ за конец буфера.
Условия эксплуатации
Три уязвимости из четырёх — DirtyAH6, TUNderflow и PPPoEject — достижимы обычным пользователем только при включённых непривилегированных пользовательских пространствах имёнмеханизме ядра, позволяющем непривилегированному процессу создавать собственное пространство имён с изолированным представлением части системных ресурсов. DiagSpill — исключение: она не требует ни пользовательских пространств имён, ни специальных привилегий, достаточно доступности модуля SCTPкомпонента ядра, реализующего протокол передачи данных SCTP; его доступность проверяется по наличию этого компонента в системе.
DirtyAH6 и DiagSpill могут срабатывать и по сети, но лишь в узких случаях и в основном приводят к падению системы. DirtyAH6 способен обрушить хост, работающий как IPv6-маршрутизатор или шлюз и добавляющий заголовок аутентификации IPsec в транспортном режиме. DiagSpill обрушивает хост только при включённых нестандартных опциях SCTP, отключённых по умолчанию. Удалённый root через DirtyAH6 был достигнут только в лаборатории автора и лишь после предварительного формирования памяти на цели; для DiagSpill пути к удалённому root не видно вовсе.
Почему эксплойты вышли сейчас
Манизада сообщил об ошибках команде безопасности ядра Linux в середине июля, после чего исправления постепенно вошли в стабильные ветки. Публичный отчёт с эксплойтами вышел 18 сентября после согласованной задержки с дистрибутивами — чтобы сначала вышли патчи.
Уязвимости были найдены с помощью процесса с поддержкой ИИ, который строит карту того, как ядро управляет памятью, и рассуждает о её раскладке. Исправление для DirtyAH6 содержит строку Assisted-by, приписывающую заслугу собственным ИИ-инструментам автора. Это продолжение серии уязвимостей повышения привилегий в ядре Linux, раскрытых в течение 2026 года, часть из которых найдена с помощью больших языковых моделей. Ранее Манизада раскрыл похожую уязвимость Open vSwitch — OVSwrap — в июле, а один из новых эксплойтов повторно использует технику из Dirty Frag, другой уязвимости root в ядре Linux, раскрытой в мае другим исследователем. По словам Манизады, эта партия, вероятно, завершает публичную фазу его поиска ошибок с помощью ИИ.
Что делать
Нужно обновить ядро до версии, содержащей все четыре исправления. Первые стабильные выпуски основного проекта Linux с полным набором:
5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4Это номера основного проекта Linux; дистрибутивы используют собственные номера и добавляют исправления по своему графику. Поэтому нужно проверять бюллетень безопасности дистрибутива, а не сверять номера версий.
Если патч сразу поставить нельзя, есть две меры. Отключение непривилегированных пользовательских пространств имён закрывает обычному пользователю путь к DirtyAH6, TUNderflow и PPPoEject, но не останавливает DiagSpill и не мешает контейнеру или процессу, у которого уже есть сетевые admin-права. Второй шаг — отключить неиспользуемые возможности AH6, TUN/TAP, PPPoE и SCTP. Манизада рекомендует именно патчить, а не отключать функции, поскольку могут существовать другие пути к тем же ошибкам.
Ограничения и открытые вопросы
Опубликованные PoC нельзя считать универсальной кнопкой root для любого Linux: все четыре ошибки повреждают память, поэтому эксплойт приходится настраивать под конкретное ядро, процессор и расположение объектов в памяти. В показанных цепочках DirtyAH6, TUNderflow и PPPoEject требуют непривилегированных пользовательских пространств имён, а DiagSpill при доступных SCTP и sctp_diagинтерфейс диагностики подсистемы SCTP, через который можно получить сведения о соединениях не требует ни пользовательских пространств имён, ни специальных capability.
Открытым остаётся и вопрос защиты: отключение непривилегированных пользовательских пространств имён не защищает от DiagSpill, а SELinux и AppArmor сами по себе не остановили эксплуатацию после выполнения необходимых условий.