CVE-2024-1086
Linux Kernel
2024-05-30
Linux kernel contains a use-after-free vulnerability in the netfilter: nf_tables component that allows an attacker to achieve local privilege escalation.
Технический анализ и план устранения
Суть уязвимости
CVE-2024-1086 — это критическая уязвимость типа use-after-free (использование памяти после освобождения) в подсистеме ядра Linux netfilter: nf_tables. Проблема кроется в функции nft_verdict_init_inc, где ошибки при обработке вердиктов позволяют манипулировать счетчиком ссылок.
Локальный злоумышленник может использовать этот баг для: * Чтения и записи в произвольные области памяти ядра. * Локального повышения привилегий (LPE) до уровня root. * Обхода механизмов защиты, таких как KASLR.
Уязвимость затрагивает версии ядра Linux от 5.14 до 6.6 включительно. Особую опасность представляет наличие публичных эксплойтов, обеспечивающих стабильный root-доступ на большинстве современных дистрибутивов (Debian, Ubuntu, Fedora, Kernel 6.x).
Как исправить
Основным и рекомендуемым способом устранения является обновление ядра до стабильной версии, в которой патч уже применен (версии 6.7+, 6.1.76+, 5.15.149+, 5.10.209+).
Для систем на базе Debian/Ubuntu:
sudo apt update && sudo apt upgrade linux-image-generic
Для систем на базе RHEL/CentOS/Fedora:
sudo dnf update kernel
После обновления необходимо перезагрузить систему для применения изменений:
sudo reboot
Проверка текущей версии ядра после перезагрузки:
uname -r
Временные меры
Если немедленное обновление ядра и перезагрузка невозможны, необходимо ограничить доступ к функционалу, который эксплуатирует уязвимость.
- Запрет использования User Namespaces. Большинство эксплойтов для этой уязвимости полагаются на возможность создания не привилегированных пространств имен пользователей для взаимодействия с
nf_tables.
sudo sysctl -w kernel.unprivileged_userns_clone=0
Чтобы настройка сохранилась после перезагрузки:
echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-unpriv-userns.conf
- Отключение модуля
nf_tables. Если ваша система не используетnftables(например, вы используете классическийiptablesили не имеете правил фильтрации), выгрузите модуль и внесите его в черный список.
sudo modprobe -r nf_tables
echo "blacklist nf_tables" | sudo tee /etc/modprobe.d/blacklist-nftables.conf
Примечание: Отключение User Namespaces может нарушить работу контейнеризированных приложений (Docker, Podman) и некоторых браузеров (Sandboxing в Chrome/Firefox).