安全研究员 Dominik Penner 在Linux KDE 4和5版本中发现一个未修复的 0day,只需诱骗用户下载压缩文档、解压之后打开文件夹就能执行代码。 

Penner 指出,“KDE4/5 易受KDesktopFile 类中一个命令注入漏洞的攻击。当实例化.desktop 或 .directory 文件时,它以不安全的方式通过 KConfigGruop::readEntry() 函数使用 KConfigPrivate::expandString() 评估环境变量和 shell 扩展。通过一个特殊构造的 .desktop 文件,远程用户在文件管理器中下载并查看文件,或者将链接拖拽到文档或桌面上即可遭攻陷。” Penner 指出,该漏洞存在于 KDE 版本4和5中,可导致内嵌在.desktop 和 .directory 文件中的命令遭执行,只需打开一个文件夹或在某些情况下将压缩文档解压到桌面即可。 Penner 公开该0day 后告知 Ubuntu,不过他原来并不想提交报告,理由是他“想让人们在 Defcon 上对这个0day 进行实验。” 当前几乎所有的Linux 发行版本都在使用易受攻击的 KDE 版本。

Shell 扩展导致代码执行

Freedesktop.org-compalint 桌面环境使用特殊的 .desktop 和 .directory 文件来配置应用和文件夹的显示方式。.desktop 文件用于在 KDE 目录中注册应用,而 .directory 文件用于说明 KDE 应该如何显示文件夹。对于 Windows 用户而言,.directory 文件就类似于 desktop.ini 文件。 每份文件中都有各种字段,告知桌面环境如何显示目录或应用。其中一个字段是“Icon”,在.desktop 文件中它指定了KDE 应该在目录中展示的图标路径,而对于 .directory 文件而言,它将指定在 Dolphin 查看文件夹时所使用的图标。 Penner 解释称,问题在于 KDE 允许使用shell 扩展通过某个环境变量或执行命令的方式动态地生成这些字段的值。他指出,“(扩展)使用和 freedesktop 规范相同的语法,然而由于它们也允许 shell 扩展(freedesktop 不允许这样做),因此也可遭利用。它更应该属于设计缺陷。.desktop 和 .directory 文件应该和 XDG (freedesktop) 的规范一致。没错,任何入口点都可注入。因此从理论上来讲它可在很多地方遭利用,不过最容易的是通过图标读取条目。” 由于在Dolphin 或从Desktop 查看文件时,它们会被自动读取,因此它可导致攻击者构造恶意 .desktop 和 .directory 文件夹,执行位于“Icon”字段中的命令。 Penner 表示必须由 KDE 提供修复方案,禁用文件预览并无法缓解该问题。

测试缺陷

Bleeping Computer 在测试中发现非常容易地就能在易受攻击的机器上滥用该漏洞执行代码执行。测试人员金创建了包含 .directory 文件的子文件夹的 ZIP 文件。这个目录文件的 Icon 字段中包含一个从服务器中下载 test.sh 脚本的命令并执行以启动 Kcalc。

用户下载test.zip 文件后解压并打开,KDE 就会读取 .directory 文件并执行分配给 Icon 字段的命令。Penner 还发布演示视频,展示了如何利用该 bug 打开逆向 shell。

当前无法关闭shell 扩展缓解该缺陷。Penner建议用户检查所有.desktop 或 .directory 文件并禁用任意动态条目。 Ubuntu 和 Fedora 尚未就该漏洞置评。

原文链接

https://www.bleepingcomputer.com/news/security/zero-day-bug-in-kde-4-5-executes-commands-by-opening-a-folder/

声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。