В Netfilter, подсистеме ядра Linux, используемой для фильтрации и модификации сетевых пакетов, выявлена уязвимость (CVE-2023-0179), потенциально позволяющая локальному пользователю поднять свои привилегии в системе и выполнить код на уровне ядра. Исследователями подготовлены прототипы эксплоитов (будут опубликованы в течение нескольких дней), позволяющие локальному пользователю поднять свои права до root в системе или получить сведения об адресах в стеке и куче.
Проблема проявляется начиная с выпуска ядра 5.5 и вызвана ошибкой в арифметической операции для определения размера данных, извлекаемых из заголовка VLAN (вместо “ethlen -= offset + len – VLAN_ETH_HLEN – vlan_hlen” было указано “ethlen -= offset + len – VLAN_ETH_HLEN + vlan_hlen”). В функции nft_payload_copy_vlan ошибка привела к записи данных в область вне буфера из-за целочисленного переполнения через нижнюю границу (integer underflow). Исправление пока доступно в форме патча. Проследить за исправлением в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch.
Для проведения атаки требуется наличие доступа к nftables, который можно получить в отдельном сетевом пространстве имён (network namespaces) при наличии прав CLONE_NEWUSER, CLONE_NEWNS или CLONE_NEWNET или при доступе к изолированному контейнеру с правами CAP_NET_ADMIN. Для блокирования эксплуатации уязвимости обходным путём можно отключить возможность создания пространств имён непривилегированными пользователями (“sudo sysctl -w kernel.unprivileged_userns_clone=0”).