Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux
Компания Qualys выявила уязвимость ( CVE-2021-4034 ) в системном компоненте Polkit (бывший PolicyKit), используемом в дистрибутивах для организации выполнения непривилегированными пользователями действий, требующих повышенных прав доступа. Уязвимость позволяет непривилегированному локальному пользователю повысить свои привилегии до пользователя root и получить полный контроль за системой. Проблема получила кодовое имя PwnKit и примечательная подготовкой рабочего эксплоита, работающего в конфигурации по умолчанию в большинстве дистрибутивов Linux.
Проблема присутствует во входящей в состав PolKit утилите pkexec, поставляемой с флагом SUID root и предназначенной для запуска команд с привилегиями другого пользователя в соответствии с заданными правилами PolKit. Из-за некорректной обработки передаваемых в pkexec аргументов командной строки непривилегированный пользователь мог обойти аутентификацию и добиться запуска своего когда с правами root, независимо от установленных правил доступа. Для атаки не важно какие настройки и ограничения в PolKit заданы. Достаточно чтобы для исполняемого файла с утилитой pkexec был выставлен признак SUID root.
Проблема присутствует с мая 2009 года, со времени добавления команды pkexec. Исправление уязвимости в PolKit пока доступно в виде патча, но так как разработчики дистрибутивов были заранее уведомлены о проблеме, большинство дистрибутивов опубликовало обновление одновременно с раскрытием информации об уязвимости. Проблема устранена в RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux и ROSA. Проблема пока не исправлена в Gentoo и Arch Linux. В качестве временной меры для блокирования уязвимости можно убрать флаг SUID root с программы /usr/bin/pkexec ("chmod 0755 /usr/bin/pkexec").