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

Временные меры

Если немедленное обновление ядра и перезагрузка невозможны, необходимо ограничить доступ к функционалу, который эксплуатирует уязвимость.

  1. Запрет использования 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

  1. Отключение модуля 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).