外媒 Bleepingcomputer 报导称使用 Qt5 GUI 框架开发的应用程序容易面临远程代码执行漏洞。攻击者通过一个鲜为人知的命令行参数配置自定义协议处理程序,就可利用这个漏洞。 许多开发者并不知道当使用 Qt5 框架时,它还添加了可用于修改框架工作方式的命令行参数,例如要显示的窗口标题、窗口大小,甚至是图标。这些命令行参数会被传递给初始化 Qt 框架的函数,然后在其中对它们进行解析。
上文所说的鲜为人知的命令行参数是platformpluginpath命令,用于指定从哪个文件夹加载 Qt5 插件,可以是本地文件夹,或者是远程 UNC URL。
当将此参数提供给程序时,程序将使用已输入的路径加载程序的 Qt 插件,这些插件是由框架加载以扩展其功能的特制 DLL 程序。
这意味着,如果攻击者在远程 UNC 上托管恶意 DLL 并且可以使用platformpluginpath参数启动程序,则他们可以远程加载 DLL 并执行它,从而进行远程代码执行。
不过由上面也能看出,攻击者要发起这样的攻击需要具备三个要素:
-
寻找一个基于Qt5 框架的 GUI 应用程序
-
加载 Qt5 插件
-
注册自定义的 URI 处理程序
当然这不是说我们可以因此放松警惕,为了缓解这种类型的攻击,应用程序需要清理命令行参数,以避免远程共享。