根據(jù) Dominik 的說法,此漏洞存在于 KDE v4 與 v5 版本中,該漏洞使得嵌入在 .desktop 和 .directory 文件中的命令在打開文件夾或者將壓縮文件夾提取到桌面時即可執(zhí)行,目前幾乎所有 Linux 發(fā)行版都在使用易受攻擊的 KDE 版本。
.desktop 和 .directory 文件是符合 freedesktop.org 標準的桌面環(huán)境使用的配置文件,它們用于配置應用和文件夾的顯示方式。.desktop 文件用于在 KDE 菜單中注冊應用程序,而 .directory 文件用于描述 KDE 應如何顯示文件夾。
在 BleepingComputer 的采訪中,Dominik 解釋:“KDE 4/5 容易受到 KDesktopFile 類中的命令注入漏洞的攻擊。當實例化 .desktop 或 .directory 文件時,它通過 KConfigGroup::readEntry() 函數(shù)使用 KConfigPrivate::expandString() 不安全地評估環(huán)境變量和 shell 擴展。使用特制的 .desktop 文件,當用戶在文件管理器中下載和查看文件,或者將鏈接拖放到文檔或桌面上,就會被攻擊?!?
問題主要出在 KDE 允許 Shell 擴展通過環(huán)境變量或執(zhí)行命令動態(tài)生成字段的值,“它們使用與 freedesktop 規(guī)范相同的語法,但是因為它們也允許 Shell 擴展(freedesktop 不允許這樣做),所以這是可利用的?!?
如開頭 gif 所示,BleepingComputer 做了個簡單的測試,可以很直觀地了解該漏洞的執(zhí)行過程。
該測試特別簡單,測試者創(chuàng)建了一個 ZIP 文件,其中包含了一個帶有 .directory 文件的子文件夾,在該配置文件的 icon 字段中,嵌入了一個啟動并執(zhí)行 kcalc 計算器的 test.sh 腳本。
因為目前無法關(guān)閉 KDE 桌面的 Shell 擴展來緩解該問題,所以 Dominik 建議用戶檢查每一個 .desktop 或 .directory 文件并禁用任何動態(tài)條目。