Четыре уязвимости в сетевом коде ядра Linux допускают повышение привилегий до root и удалённый отказ в обслуживании

linux

Четыре уязвимости в сетевом коде ядра Linux позволяют локальному пользователю получить права root, а на части систем - вызвать удалённый отказ в обслуживании. Ошибки затрагивают подсистемы IPsec, виртуальных сетевых устройств TUN/TAP, протокола PPP over Ethernet и транспортного протокола SCTP. Исправления уже вошли в поддерживаемые стабильные ветки ядра, но парк систем с устаревшими версиями остаётся широким: проблемы живут в коде от 10 до 21 года.

Детали уязвимостей

Нашёл их исследователь Асим Вилади оглы Манизаде. В середине июля он передал отчёт команде безопасности ядра Linux, а согласованный срок публикации описания и демонстрационных эксплойтов назначен на 18 сентября, шесть утра по UTC. Задержка нужна, чтобы администраторы успели расставить приоритеты и обновить системы.

Первая уязвимость, получившая имя DirtyAH6, связана с обработкой заголовка аутентификации в IPv6. Ядро проверяет целостность пакета перед вычислением контрольных данных, попутно перестраивая адреса в заголовке маршрутизации. Поле с числом оставшихся сегментов не сверяется с общим числом адресов, поэтому указатель сдвигается далеко за пределы буфера. Уязвимость отслеживается как CVE-2026-80844.

Локальная эксплуатация требует доступа к пространствам имён пользователей - механизму изоляции, который даёт обычному пользователю собственное представление о сетевых и системных ресурсах. Если же машина работает как маршрутизатор или шлюз IPv6 и применяет заголовок аутентификации в транспортном режиме, та же ошибка приводит к удалённому отказу в обслуживании. В лаборатории исследователю удалось добиться и удалённого выполнения кода, подобрав состояние памяти. На практике такой сценарий крайне сложен.

Вторая уязвимость, TUNderflow, содержится в подсистеме виртуальных устройств TUN/TAP. Эти устройства перекладывают пакеты между ядром и прикладными программами. По цепочке из нескольких сетевых интерфейсов к виртуальному устройству может прийти завышенный размер свободного места под заголовки. Вычитание даёт отрицательную величину, которая при преобразовании в беззнаковый размер превращается в огромное число. Расчёт буфера для сокета зацикливается, и обработка пакета выходит за границы выделенной области памяти.

Третья, PPPoEject, касается отправки данных через PPP over Ethernet. Функция отправки сохраняет указатель внутрь сетевого буфера, после чего вызывает драйвер нижележащего устройства. Тот может перераспределить буфер и освободить старую память. Последующие записи идут по уже недействительному указателю, возникает обращение к освобождённой памяти. Такой сбой пригоден для локального повышения привилегий.

Четвёртая, DiagSpill, отличается от остальных с точки зрения условий доступа. Она затрагивает диагностику SCTP через механизм sock_diag и отслеживается как CVE-2026-74469. Ассоциация SCTP может включать до 65 536 адресов партнёра, а счётчик транспортов занимает всего 16 бит. На последнем адресе счётчик обнуляется, ядро резервирует слишком мало места под ответ и перезаписывает около 8 МБ за границей буфера. Ни пространства имён пользователей, ни дополнительные привилегии здесь не нужны. Достаточно того, чтобы в системе были доступны SCTP и sctp_diag.

Все четыре проблемы - ошибки работы с памятью. Надёжность эксплуатации зависит от раскладки памяти на конкретной машине и от подготовки её состояния. Опубликованные исследователем эксплойты всё же приводят к получению оболочки root на отдельных конфигурациях. Средства мандатного контроля доступа AppArmor и SELinux, по его словам, не блокировали эти пути.

Для организаций главное действие - обновить ядро до версии со всеми четырьмя исправлениями. Первые стабильные выпуски: Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 и 7.2.4. Если обновление невозможно, частично снижает риск отключение пространств имён пользователей для непривилегированных процессов. От DiagSpill это не защищает, как и от контейнеров, уже получивших повышенные привилегии.

Дополнительный барьер даёт выключение неиспользуемых подсистем: заголовка аутентификации IPv6, TUN/TAP, PPPoE и SCTP вместе с sctp_diag. Такой шаг сокращает поверхность атаки, но не заменяет установку обновлений от поставщика. Демонстрационные эксплойты требуют осторожности: они настроены под конкретные дистрибутивы и способны повредить память не по назначению. Запускать их допустимо только на одноразовых виртуальных машинах.

История с этими четырьмя уязвимостями показывает, насколько велика доля старых сетевых подсистем в поверхности атаки ядра Linux. Код, написанный больше десяти лет назад, продолжает работать на миллионах машин. Механизм пространств имён пользователей делает его доступным обычному локальному пользователю, а значит, путь к root на серверах и в контейнерах остаётся коротким. Наиболее показателен DiagSpill: он обходится без этого механизма вовсе. Круг потенциально уязвимых систем оказывается шире, чем принято считать при планировании обновлений.

Ссылки

Комментарии: 0