之前报导过 KDE 中存在一个很容易被利用的 0day 漏洞,现在 KDE 项目删除了对 Shell 命令的支持来修复该问题。
此漏洞存在于 KDE v4 与 v5 版本中,该漏洞使得嵌入在 .desktop 和 .directory 文件中的命令在打开文件夹或者将压缩文件夹提取到桌面时即可执行,目前几乎所有 Linux 发行版都在使用易受攻击的 KDE 版本。
.desktop 和 .directory 文件是符合 freedesktop.org 标准的桌面环境使用的配置文件,它们用于配置应用和文件夹的显示方式。.desktop 文件用于在 KDE 菜单中注册应用程序,而 .directory 文件用于描述 KDE 应如何显示文件夹。
问题主要出在 KDE 允许 Shell 扩展通过环境变量或执行命令动态生成字段的值,它们使用与 freedesktop 规范相同的语法,但是因为它们也允许 Shell 扩展(freedesktop 不允许这样做),所以这是可利用的。
如开头 gif 所示,BleepingComputer 做了个简单的测试,可以很直观地了解该漏洞的执行过程。该测试特别简单,测试者创建了一个 ZIP 文件,其中包含了一个带有 .directory 文件的子文件夹,在该配置文件的 icon 字段中,嵌入了一个启动并执行 kcalc 计算器的 test.sh 脚本。
为了修复该漏洞,KDE 项目删除了对 KConfig 条目中的 Shell 命令的支持,但继续允许支持环境变量扩展。
仔细考虑后,KConfig 条目中支持 Shell 命令的整个功能已被删除,因为我们找不到它的实际用例。如果您确实已使用该功能,请与我们联系,以便我们评估是否可以提供安全的解决方案。
请注意,[$e] 对环境变量扩展仍然有用。
KDE 用户可以通过将 KConfig 更新到 5.61.0 或更高版本来修复此漏洞,或者直接打上补丁:
https://cgit.kde.org/kconfig.git/commit/?id=5d3e71b1d2ecd2cb2f910036e614ffdfc895aa22