Уязвимость в приложении openSUSE-welcome, позволяющая выполнить код под другим пользователем

В приложении openSUSE-welcome, применяемом в дистрибутиве openSUSE для ознакомления новых пользователей с особенностями системы, выявлена уязвимость (CVE-2023-32184), позволяющая выполнить код с правами другого пользователя. Приложение openSUSE-welcome запускается автоматически после первого входа пользователя в систему и в случае выбора графического окружения Xfce предлагает возможность включения альтернативных вариантов раскладки элементов на рабочем столе. Обработчик, выполняющий выбор раскладки, некорректно обрабатывал временные файлы, что позволяло другому пользователю организовать выполнение своего кода с правами жертвы, перешедшего к выбору раскладки рабочего стола Xfce.

Уязвимость вызвана тем, что в методе PanelLayouter::applyLayout() использовался фиксированный каталог “/tmp/layout” для сохранения tar-архива с настройками Xfce. Архив с настройками обрабатывался через вызов встроенного Python-скрипта, который в свою очередь вызывал скрипт “/usr/share/xfce4-panel-profiles/xfce4-panel-profiles/panelconfig.py” от проекта Xfce. В коде PanelLayouter::applyLayout() выполнялась проверка наличия каталога “/tmp/layout”, но не учитывались коды ошибок, возвращаемые функциями удаления и копирования данных, что в случае размещения вместо каталога “/tmp/layout” файла с тем же именем приводило к продолжению выполнения функции, несмотря на возвращаемые ошибки. В итоге, атакующий получал возможность управлять данными, передаваемыми Python-скрипту.

Запускаемый скрипт panelconfig.py поддерживает не только изменение конфигурации Xfce, но и размещение файлов с ресурсами (“*rc”) в домашнем каталоге пользователя. Имея возможность подставить свои данные вместо исходного tar-архива, атакующий мог разместить в этом архиве дополнительные файлы и добиться их копирования в домашний каталог пользователя. Таким способом атакующий мог разместить свой файл “.bashrc” в домашнем каталоге пользователя, нажавшего в openSUSE-welcome кнопку настройки Xfce, и добиться выполнения своего кода.

Исправление доступно в виде патча, который уже включён в состав пакетов c openSUSE-welcome, предлагаемых в openSUSE Tumbleweed и openSUSE Leap 15.4 / 15.5.

Release. Ссылка here.