CVE-2022-0185

Linux Kernel

ВЕРОЯТНОСТЬ 1.7%

Дата обнаружения

2024-08-21

Официальное описание

Linux kernel contains a heap-based buffer overflow vulnerability in the legacy_parse_param function in the Filesystem Context functionality. This allows an attacker to open a filesystem that does not support the Filesystem Context API and ultimately escalate privileges.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2022-0185 представляет собой переполнение буфера в куче (heap-based buffer overflow) в функции legacy_parse_param ядра Linux. Проблема локализована в компоненте Filesystem Context API, который отвечает за обработку параметров монтирования файловых систем.

Уязвимость возникает из-за некорректной проверки границ при копировании данных в буфер, когда используются старые (legacy) методы обработки параметров. Злоумышленник, имеющий доступ к системному вызову fsconfig(), может записать данные за пределы выделенной памяти. Это позволяет перезаписать структуры ядра, что в конечном итоге ведет к выходу из контейнера или локальному повышению привилегий (LPE) до уровня root. Для эксплуатации атакующему обычно требуются права CAP_SYS_ADMIN, однако в современных дистрибутивах это ограничение обходится через использование User Namespaces (непривилегированные пользователи могут создавать свои пространства имен).

Как исправить

Основным способом устранения является обновление ядра Linux до версий, в которых патч уже применен (5.16.2, 5.15.15, 5.10.92, 5.4.172 и выше).

  1. Обновите список пакетов:
sudo apt update

  1. Установите последние обновления безопасности для ядра:
sudo apt upgrade

  1. Перезагрузите систему для применения изменений:
sudo reboot

  1. После перезагрузки проверьте версию ядра, чтобы убедиться в обновлении:
uname -r

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

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

  1. Отключите возможность создания User Namespaces «на лету»:
sudo sysctl -w kernel.unprivileged_userns_clone=0

  1. Чтобы настройка сохранилась после перезагрузки, выполните:
echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf

  1. В дистрибутивах на базе Red Hat (RHEL/CentOS) используйте ограничение количества пользовательских пространств имен:
sudo sysctl -w user.max_user_namespaces=0

  1. Для сохранения настройки на RHEL:
echo "user.max_user_namespaces=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf