Давайте попробуем разобраться без злорадства.> Проблема вызвана некорректной реализацией класса KDesktopFile, который при обработке переменной "Icon" без должного экранирования передаёт значение в функцию KConfigPrivate::expandString(), которая выполняет раскрытие спецсимволов shell, в том числе обрабатывая строки "$(..)" как подлежащие исполнению команды.
Эта проблема не частный случай касающийся конкретного куска KDE. Это вообще проблема взаимоотношения DE и оболочки. Сегодня (10 лет назад) на этом споткнулся один разраб, а завтра споткнётся другой. Чтобы обратиться к ресурсному файлу (Icon - явно ресурс) необходимо открыть файл на чтение и прочитать данные +/- какое-то смещение. А тут не просто выполнением занимаются, тут ради иконки запустили целую оболочку! Подумайте, как просто разработчику добраться из графики в оболочку и совершить похожую ошибку.
Тут уже многие писали, что в венде были похожие уязвимости. Я же скажу что этот архитектурный недочет был внутри Win9x. Надо полностью отлучать графику от оболочки. Нужно, чтобы для работы графических API нужно было явно создавать новые экземпляры оболочки, если разработчик хочет запустить скрипт. И тут важно понять разницу между "запустить файл оболочки" и проинстанцировать. В первом случае для запуска оболочки требуется оболочка, а во втором случае создаётся экземпляр оболочки.
Когда оболочку решили убрать из системы инициализации... до сих пор вонь повсюду. А представьте если отлучить её от приложений и целиком завернуть в API... это уже Linux NT какой-то.