CVE-2022-0185
Linux Kernel
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 и выше).
- Обновите список пакетов:
sudo apt update
- Установите последние обновления безопасности для ядра:
sudo apt upgrade
- Перезагрузите систему для применения изменений:
sudo reboot
- После перезагрузки проверьте версию ядра, чтобы убедиться в обновлении:
uname -r
Временные меры
Если немедленное обновление ядра невозможно, необходимо ограничить доступ к функционалу User Namespaces для непривилегированных пользователей. Это заблокирует основной вектор эксплуатации уязвимости.
- Отключите возможность создания User Namespaces «на лету»:
sudo sysctl -w kernel.unprivileged_userns_clone=0
- Чтобы настройка сохранилась после перезагрузки, выполните:
echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf
- В дистрибутивах на базе Red Hat (RHEL/CentOS) используйте ограничение количества пользовательских пространств имен:
sudo sysctl -w user.max_user_namespaces=0
- Для сохранения настройки на RHEL:
echo "user.max_user_namespaces=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf