Qt5 GUI 開發的應用易受遠程代碼執行漏洞的影響
外媒Bleepingcomputer報導稱使用Qt5 GUI框架開發的應用程序容易面臨遠程代碼執行漏洞。攻擊者通過一個鮮為人知的命令行參數配置自定義協議處理程序,就可利用這個漏洞。許多開發者並不知道當使用Qt5框架時,它還添加了可用於修改框架工作方式的命令行參數,例如要顯示的窗口標題、窗口大小,甚至是圖標。這些命令行參數會被傳遞給初始化Qt框架的函數,然後在其中對它們進行解析。
上文所說的鮮為人知的命令行參數是 platformpluginpath 命令,用於指定從哪個文件夾加載Qt5插件,可以是本地文件夾,或者是遠程UNC URL。
當將此參數提供給程序時,程序將使用已輸入的路徑加載程序的Qt插件,這些插件是由框架加載以擴展其功能的特製DLL程序。
這意味著,如果攻擊者在遠程UNC上託管惡意DLL並且可以使用 platformpluginpath 參數啟動程序,則他們可以遠程加載DLL並執行它,從而進行遠程代碼執行。
不過由上面也能看出,攻擊者要發起這樣的攻擊需要具備三個要素:
- 尋找一個基於 Qt5 框架的GUI 應用程序
- 加載Qt5 插件
- 註冊自定義的URI 處理程序
當然這不是說我們可以因此放鬆警惕,為了緩解這種類型的攻擊,應用程序需要清理命令行參數,以避免遠程共享。