Знатную уязвимость подвезли в Linux под номером CVE-2022-0185. Обычно не публикую крупные новости, которые и так из всех источников идут, но тут решил сделать исключение из-за эпичности дыры. Наверняка полно людей, кто не знает о ней. Я сам только вчера вечером прочитал.
Имея права пользователя в системе, можно получить root. Демонстрация работы есть на Github. Подобная уязвимость работает во всех Ubuntu из-за того, что там по дефолту включены user namespaces, чего нет, к примеру, в Debian и RHEL, если не используются контейнеры. Вот тут то ориентированность на простоту и удобство Ubuntu сыграла злую шутку. Чтобы лишний раз не дёргать настройку, её включили по дефолту.
Но вообще, это уязвимость ядра Linux 5.1 и выше, так что все другие дистры с этим ядром тоже ей подвержены и обязательно нужно обновляться, если на хосте используются контейнеры. Если у вас Centos 7 или Ubuntu 18, можно не суетиться. Там более старые ядра.
Если обновление по какой-то причине невозможно, то user_namespaces Redhat советует отключить вот так:
# echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf# sysctl -p /etc/sysctl.d/userns.conf
А Ubuntu так:
# sysctl -w kernel.unprivileged_userns_clone = 0
Хороший повод лишний раз поразмыслить над удобством контейнеров. В виртуальных машинах получить такую дырищу значительно труднее. Я вообще не припомню, чтобы были CVE с побегом из VM на хост. А в контейнерах уже не первый раз.
Примечательно, что код, содержащий эту уязвимость, добавлен около трех лет назад. Кто-то всё это время мог эксплуатировать уязвимость. А сколько их ещё таких там есть?
https://ubuntu.com/security/CVE-2022-0185access.redhat.com/securit…022-0185bugzilla.redhat.com/show_bu…_bug.cgi
#security #ubuntu #docker #devops