14.08.2022

Локальная уязвимость в nftables, позволяющая повысить свои привилегии

В Netfilter, подсистеме ядра Linux, используемой для фильтрации и модификации сетевых пакетов, выявлена уязвимость (CVE не назначен), позволяющая локальному пользователю выполнить код на уровне ядра и поднять свои привилегии в системе. Исследователями продемонстрирован эксплоит, позволивший локальному пользователю получить права root в Ubuntu 22.04 с ядром 5.15.0-39-generic. Изначально информацию об уязвимости планировалось опубликовать 15 августа, но из-за копирования письма c прототипом эксплоита в публичный список рассылки, эмбарго на раскрытие информации было отменено.

Проблема проявляется начиная с выпуска ядра 5.8 и вызвана переполнением буфера в коде для обработки set-списков в модуле nf_tables, произошедшем из-за отсутствия должных проверок в функции nft_set_elem_init. Ошибка внесена в изменении, расширяющем до 128 байт область хранения для элементов списка.

Для проведения атаки требуется наличие доступа к nftables, который можно получить в отдельном сетевом пространстве имён (network namespaces) при наличии прав CLONE_NEWUSER, CLONE_NEWNS или CLONE_NEWNET (например, при возможности запуска изолированного контейнера). Исправление пока недоступно.
Для блокирования эксплуатации уязвимости в обычных системах следует убедиться в отключении возможности создания пространств имён непривилегированными пользователями («sudo sysctl -w kernel.unprivileged_userns_clone=0»).

Источник.