CVE-2021-3493
Linux Kernel
2022-10-20
The overlayfs stacking file system in Linux kernel does not properly validate the application of file capabilities against user namespaces, which could lead to privilege escalation.
Технический анализ и план устранения
Суть уязвимости
CVE-2021-3493 — это критическая уязвимость в реализации файловой системы OverlayFS в ядре Linux. Проблема заключается в некорректной проверке прав доступа (capabilities) при копировании файлов между слоями OverlayFS в контексте пользовательских пространств имен (user namespaces).
Злоумышленник с низкими привилегиями может создать пространство имен пользователя, смонтировать OverlayFS и установить произвольные Capability (например, CAP_SETUID) на исполняемый файл. Из-за ошибки в ядре эти атрибуты некорректно переносятся на нижележащую файловую систему хоста, что позволяет локальному пользователю получить права суперпользователя (root).
Как исправить
Основным способом устранения уязвимости является обновление ядра Linux до версии, в которой исправлена логика проверки xattr в OverlayFS.
- Обновите индексы пакетов:
sudo apt update
- Установите последние доступные обновления безопасности для ядра:
sudo apt upgrade
- Перезагрузите систему для применения изменений:
sudo reboot
- После перезагрузки проверьте версию ядра, чтобы убедиться, что исправление применено (версии должны быть выше, чем те, что были выпущены до апреля 2021 года):
uname -a
Для популярных дистрибутивов исправления включены в следующие версии (и выше): - Ubuntu 20.04 LTS: ядро 5.4.0-72.80 - Ubuntu 18.04 LTS: ядро 4.15.0-143.147 - Ubuntu 16.04 LTS: ядро 4.4.0-210.242 - Ubuntu 20.10: ядро 5.8.0-50.56
Временные меры
Если немедленное обновление ядра и перезагрузка невозможны, необходимо ограничить доступ к функционалу, который позволяет эксплуатировать уязвимость. Основной вектор атаки требует возможности создания пользовательских пространств имен (unprivileged user namespaces).
- Отключите возможность создания пользовательских пространств имен (актуально для Debian/Ubuntu):
sudo sysctl -w kernel.unprivileged_userns_clone=0
- Чтобы настройка сохранилась после перезагрузки, выполните:
echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-userns.conf
Примечание: Данная мера может нарушить работу некоторых приложений, использующих контейнеризацию или песочницы (например, Docker, некоторые браузеры или Electron-приложения).