信息來(lái)源:hackernews
外媒 Bleepingcomputer 報(bào)導(dǎo)稱使用 Qt5 GUI 框架開發(fā)的應(yīng)用程序容易面臨遠(yuǎn)程代碼執(zhí)行漏洞。攻擊者通過(guò)一個(gè)鮮為人知的命令行參數(shù)配置自定義協(xié)議處理程序,就可利用這個(gè)漏洞。
許多開發(fā)者并不知道當(dāng)使用 Qt5 框架時(shí),它還添加了可用于修改框架工作方式的命令行參數(shù),例如要顯示的窗口標(biāo)題、窗口大小,甚至是圖標(biāo)。這些命令行參數(shù)會(huì)被傳遞給初始化 Qt 框架的函數(shù),然后在其中對(duì)它們進(jìn)行解析。
上文所說(shuō)的鮮為人知的命令行參數(shù)是 platformpluginpath 命令,用于指定從哪個(gè)文件夾加載 Qt5 插件,可以是本地文件夾,或者是遠(yuǎn)程 UNC URL。
當(dāng)將此參數(shù)提供給程序時(shí),程序?qū)⑹褂靡演斎氲穆窂郊虞d程序的 Qt 插件,這些插件是由框架加載以擴(kuò)展其功能的特制 DLL 程序。
這意味著,如果攻擊者在遠(yuǎn)程 UNC 上托管惡意 DLL 并且可以使用 platformpluginpath 參數(shù)啟動(dòng)程序,則他們可以遠(yuǎn)程加載 DLL 并執(zhí)行它,從而進(jìn)行遠(yuǎn)程代碼執(zhí)行。
不過(guò)由上面也能看出,攻擊者要發(fā)起這樣的攻擊需要具備三個(gè)要素:
-
尋找一個(gè)基于 Qt5 框架的 GUI 應(yīng)用程序
-
加載 Qt5 插件
-
注冊(cè)自定義的 URI 處理程序
當(dāng)然這不是說(shuō)我們可以因此放松警惕,為了緩解這種類型的攻擊,應(yīng)用程序需要清理命令行參數(shù),以避免遠(yuǎn)程共享。