Четыре локальных root-уязвимости в ядре Linux: DirtyAH6, TUNderflow, PPPoEject и DiagSpill

· Безопасность
Исследователь Асим Манизада раскрыл четыре уязвимости в ядре Linux, позволяющие непривилегированному пользователю получить права root. Ошибкам от 10 до 21 года, а исправления уже вошли в стабильные ветки.

cover.svg

После истечения согласованного с linux-distros эмбарго исследователь Асим Манизада опубликовал сведения о четырёх уязвимостях локального повышения привилегий (LPE) в ядре Linux. Все они были переданы в security@kernel.org и профильным сопровождающим в середине июля, а лежащие в их основе ошибки существуют, по оценке автора, от 10 до 21 года.

Уязвимости получили запоминающиеся имена и идентификаторы: DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) и DiagSpill (CVE-2026-74469). Для каждой подготовлен работающий PoC, дающий переход от обычного пользователя к выполнению кода с правами root.

Как они устроены

Первые три требуют либо непривилегированных user/network namespaces, либо конкретных привилегий (CAP_NET_ADMIN, CAP_NET_RAW) в контролируемом злоумышленником сетевом пространстве имён. DiagSpill выделяется: ему не нужны ни namespaces, ни особые CAP — достаточно, чтобы в системе были доступны SCTP и sctp_diag.

Природа ошибок классическая для сетевого стека: DirtyAH6 связана с некорректной проверкой поля segments_left в заголовке маршрутизации IPv6, что приводит к обращению за пределы буфера в memmove(). TUNderflow вызывает переполнение при вычислении headroom для устройства TUN. PPPoEject использует «висячий» указатель на область skb, освобождённую внутри dev_hard_header(). DiagSpill эксплуатирует переполнение 16-битного счётчика транспортов SCTP: при 65 536 транспортах он обнуляется, и sctp_diag выплёскивает около 8 МиБ данных за пределы Netlink-ответа.

Автор подчёркивает, что перечисленные предусловия не экзотичны — соответствующие модули и пути присутствуют в обычных сборках дистрибутивов. AppArmor и SELinux в его тестах эксплойты не блокировали. Все четыре бага способны повредить и ядро хоста из контейнера, что теоретически открывает путь к выходу из изоляции, хотя этот сценарий Манизада не доводил до конца.

Удалённый вектор и защита

DirtyAH6 и DiagSpill при определённых условиях достижимы удалённо. Если система работает IPv6-маршрутизатором и добавляет AH в транспортном режиме, DirtyAH6 превращается как минимум в удалённый отказ в обслуживании; в лабораторных условиях автору удалось довести её до удалённого root, но чисто дистанционная реализация выглядит крайне сложной. DiagSpill при включённых ASCONF/ADD-IP (по умолчанию отключены) грозит удалённым крашем, но не полным захватом.

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


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.