В развиваемом компанией Red Hat фоновом процессе tuned, выполняющем автоматическую оптимизацию настроек оборудования и ядра в зависимости от текущей нагрузки, выявлена уязвимость (CVE-2024-52336), позволяющая локальному непривилегированному пользователю выполнить любые команды с правами root.
Проблема присутствует в реализации DBus-метода “com.redhat.tuned.instance_create”, применяемого для создания экземпляров плагинов, в который можно передать параметры “script_pre” и “script_post” для указания скриптов, выполняемых перед или после создания экземпляра плагина. Проблема в том, что настройки Polkit позволяют любому вошедшему в систему локальному пользователю без аутентификации отправить DBus-запрос к данному методу, в то время как сам процесс tuned выполняется с правами root и запускает отмеченные в параметрах “script_pre” и “script_post” скрипты тоже с правами root. Например, для запуска скрипта /path/to/myscript.sh с правами root пользователю достаточно выполнить команду:
gdbus call -y -d com.redhat.tuned -o /Tuned -m com.redhat.tuned.control.instance_create cpu myinstance ‘{“script_pre”: “/path/to/myscript.sh”, “devices”: “*”}’
В DBus-методе “com.redhat.tuned.instance_create” также присутствует менее опасная уязвимость (CVE-2024-52337), вызванная отсутствием чистки значения с именем экземпляра плагина при его выводе в лог. Атакующий может добавить имя, содержащее перевод строки и escape-символы для эмулятора терминала, которые могут использоваться для нарушения структуры лога и выполнения действий при отображении вывода команды “tuned-adm get_instances” в терминале.
EVIL=’echo -e “this isnevil 33[?1047h”‘ gdbus call -y -d com.redhat.tuned -o /Tuned -m com.redhat.tuned.control.instance_create cpu “$EVIL” ‘{“devices”: “*”}’
Уязвимости проявляются начиная с версии tuned 2.23, сформированной в начале июня 2024 года, и устранены в выпуске tuned 2.24.1. Из крупных дистрибутивов проблемы исправлены в RHEL 9, Fedora 40, Arch Linux и Gentoo. В стабильных ветках Ubuntu, Debian и SUSE/openSUSE уязвимости не проявляются, так как в них поставляются старые версии tuned (<2.23), не подверженные уязвимостям.