Исследователи из компании Qualys раскрыли информацию о баге 12-летней давности, обнаруженном в составе pkexec Polkit (ранее PolicyKit). Уязвимость получила идентификатор CVE-2021-4034 и имя PwnKit, и может быть использована для получения привилегий суперпользователя.
Polkit является часть опенсорсного фреймворка, который согласовывает взаимодействие между привилегированными и непривилегированными процессами, а конкретно pkexec позволяет авторизованному пользователю выполнять команды от имени другого пользователя, являясь своеобразной альтернативой sudo.
Эксперты пишут, что обнаружили проблему еще в ноябре 2021 года, но не сообщали о ней публично до этой недели, давая разработчикам всех основных дистрибутивов Linux время на выпуск исправлений.
Сообщается, что pkexec точно может использоваться злоумышленниками для локального повышения привилегий в Ubuntu, Debian, Fedora и CentOS, но также могут быть затронуты и другие дистрибутивы Linux.
«Уязвимость связана с нарушением целостности информации в памяти [и out-of-bounds записью], что позволяет любому непривилегированному пользователю получить полные привилегии root в уязвимой системе, используя конфигурацию polkit по умолчанию», — говорят эксперты Qualys.
Проблема присутствовала в коде с 2009 года, то есть с релиза первой версии pkexec. Видео ниже демонстрирует эксплуатацию данной проблемы.
Исследователи предупредили, что эксплуатация уязвимости настолько проста, что PoC-эксплоит, скорее всего, за несколько дней распространится по всему интернету. К сожалению, так и произошло: первый работающий эксплоит появился в открытом доступе менее чем через три часа после публикации отчета Qualys. Аналитик CERT/CC Уилл Дорманн (Will Dormann) сообщил, что этот PoC прост и универсален, и протестировал его на системе на базе ARM64, показав, что эксплоит в самом деле работает.
The exploit for CVE-2021-4034 is both simple and universal. What's not to love? https://t.co/rXzHjEwFm4 pic.twitter.com/ZRsbd0So53
— Will Dormann (@wdormann) January 25, 2022
Qualys рекомендует администраторам как можно скорее применить патчи, которые авторы Polkit опубликовали на GitLab.
Разработчики дистрибутивов Linux получили доступ к исправлению еще несколько недель назад, и обновленные пакеты pkexec уже выходят. Так, Ubuntu уже выпустила обновления для устранения уязвимости в версиях 14.04 и 16.04 ESM, а также в более новых версиях 18.04, 20.04 и 21.04. Пользователям достаточно запустить стандартное обновление системы, а затем перезагрузить машину, чтобы изменения вступили в силу.
Red Hat также опубликовала патч для polkit для продуктов Workstation и Enterprise, а также для решений с продленным циклом поддержки (TUS и AUS).
Издание Bleeping Computer отмечает, что для ОС, где пока нет патча, доступен временный вариант смягчения проблемы. Он заключается в использовании следующей команды: chmod 0755 /usr/bin/pkexec.
Пользователи, которые захотят поискать признаки эксплуатации PwnKit, могут сделать это, проверив логи на наличие записей «The value for the SHELL variable was not found the /etc/shells file» и «The value for environment variable […] contains suspicious content». Впрочем, эксперты Qualys предостерегают, что использовать уязвимость PwnKit можно и бесследно.