行(xíng)業(yè)動态

了解最新公司動态及行(xíng)業(yè)資訊

當前位置:首頁>新聞中心>行(xíng)業(yè)動态
全部 22 公司動态 0 行(xíng)業(yè)動态 22

對WPS Office之中兩個(gè)任意代碼執行(xíng)漏洞的(de)分(fēn)析

時間:2024-09-11   訪問量:1082

▶ 揭秘CVE-2024-7262和(hé) CVE-2024-7263安全漏洞

ESET研究人(rén)員在WPS Office Windows版中發現了一個(gè)代碼執行(xíng)漏洞(CVE-2024-7262)。當時該漏洞正在被網絡諜報組織APT-C-60所利用(yòng)。經過一番根源分(fēn)析,我們随後發現了該錯誤代碼的(de)另一種利用(yòng)方法(CVE-2924-7263)。在按照(zhào)協調披露程序操作,目前這兩個(gè)漏洞均已修補完畢 - 本文(wén)将爲您披露相(xiàng)關技術(shù)細節,以飧讀(dú)者。

本文(wén)要點:


▶ 綜述

在調查APT-C-60活動的(de)過程中,我們發現了一個(gè)不同尋常的(de)電子表格,暗(àn)藏該組織的(de)惡意程序之一。通過分(fēn)析,我們發現了WPS Office Windows版中的(de)一個(gè)代碼執行(xíng)漏洞, APT-C-60正在利用(yòng)該漏洞攻擊東亞國家。最終有(yǒu)毒載體是我們内部命名爲SpyGlace的(de)自定義後門,ThreatBook中錄入的(de)公開(kāi)名稱爲TaskController.dll。

據WPS網站稱,該WPS Office在全球擁有(yǒu)超過5億活躍用(yòng)戶,這使它成爲竊取大(dà)量東亞人(rén)士信息的(de)難得途徑。在我們對漏洞進行(xíng)協調披露的(de)過程中,DBAPPSecurity獨立發布了漏洞攻擊分(fēn)析報告,确認APT-C-60利用(yòng)該漏洞向用(yòng)戶投放(fàng)惡意程序。

惡意文(wén)檔(SHA-1: 7509b4c506c1627c1a4c396161d07277f044ac6)的(de)導出格式,采用(yòng)了XLS電子表格常用(yòng)的(de)MHTML格式,其中暗(àn)藏著(zhe)一個(gè)經過精心設計(jì)的(de)超鏈接。隻要用(yòng)戶在使用(yòng)WPS電子表格應用(yòng)程序時單擊該鏈接,便會(huì)觸發任意庫的(de)執行(xíng)。這一MHTML非常規文(wén)件(jiàn)格式,允許文(wén)件(jiàn)打開(kāi)的(de)同時立即下載文(wén)件(jiàn);因此,利用(yòng)漏洞的(de)同時,可(kě)通過這種技術(shù)實現遠程代碼的(de)執行(xíng)。文(wén)檔在WPS電子表格中的(de)顯示畫面,如(rú)圖1所示。畫面仿冒了Coremail電郵方案的(de)行(xíng)列圖像,暗(àn)藏了惡意超鏈接,以誘人(rén)點擊。 

圖片

圖 1. 最初的(de)毒文(wén)檔嵌入了一張圖片,裏面暗(àn)藏惡意超鏈接 

依據我司的(de)漏洞協調披露政策,從毒文(wén)檔上(shàng)傳到(dào)VirusTotal的(de)那一刻起,到(dào)本文(wén)發布時爲止,整個(gè)事件(jiàn)的(de)時間軸如(rú)下:

CVE-2024-7262漏洞源于,開(kāi)發商缺乏對攻擊者所供文(wén)件(jiàn)路(lù)徑進行(xíng)規範,以及缺乏對加載插件(jiàn)的(de)驗證。在分(fēn)析了相(xiàng)關補丁後,我們發現了另一種該漏洞攻擊方法,即利用(yòng)另一個(gè)邏輯錯誤來竊取信息。


CVE-2024-7262


本節闡明(míng)了APT-C-60所采用(yòng)的(de)漏洞攻擊手法,即通過劫持WPS Office插件(jiàn)promecefpluginhost.exe的(de)控制(zhì)流來執行(xíng)代碼。此外,我們還解釋了該漏洞的(de)觸發過程,以及貌似正規的(de)電子表格文(wén)檔是如(rú)何被用(yòng)作竊密工(gōng)具的(de)。

根源分(fēn)析

安裝過程中,WPS Office Windows版套件(jiàn)會(huì)注冊一個(gè)名爲ksoqing的(de)自定義協議處理(lǐ)程序。當用(yòng)戶單擊以URI方案ksoqing://開(kāi)頭的(de)網址時,便能(néng)夠執行(xíng)外部應用(yòng)程序。在Windows操作系統中,自定義協議處理(lǐ)程序的(de)注冊是在注冊表中完成的(de)。這種情況下,鍵值HKCRksoqingshellopencommand下的(de)默認值,便會(huì)指示Windows系統執行(xíng)C:Users<用(yòng)戶名>AppDataLocalKingsoftWPS Office<版本号>office6wps.exe,參數爲/qingbangong "%1",其中%1被替換爲完整的(de)網址。爲了顯得更加直觀,我們特地(dì)通過截圖來說明(míng),在WPS電子表格應用(yòng)程序(et.exe)中,用(yòng)戶點擊自定義協議ksoqing的(de)超鏈接時發生的(de)情況,如(rú)圖2所示。 

圖片

圖2. WPS電子表格應用(yòng)程序會(huì)啓動wps.exe來處理(lǐ)自定義協議ksoqing

CVE-2024-7262漏洞的(de)控制(zhì)流程,見圖3

圖片

圖3. 漏洞控制(zhì)流程一覽圖

啓動後,wps.exe會(huì)加載qingbangong.dll,該組件(jiàn)負責解析和(hé)驗證超鏈接的(de)某些參數。我們發現,毒文(wén)檔中的(de)惡意鏈接采用(yòng)了以下格式ksoqing://type=ksolaunch&cmd=<base64-encoded string>&token=<MD5 hash>&launchname=promecefpluginhost.exe。經我們分(fēn)析測試,這會(huì)導緻系統上(shàng)已有(yǒu)的(de)某款應用(yòng)程序(本例中爲promecefpluginhost.exe)啓動,執行(xíng)攻擊者提供的(de)base64編碼命令行(xíng)。

令牌參數是,與字符串_qingLaunchKey_相(xiàng)連的(de)cmd參數編碼的(de)MD5哈希值,其後是launchname參數的(de)編碼值。後者必須是可(kě)執行(xíng)文(wén)件(jiàn),位于C:Users<用(yòng)戶名>AppDataLocalKingsoftWPS Office<版本号>office6,具備金(jīn)山有(yǒu)效證書(shū)的(de)簽名。

解碼cmd參數後我們發現,向promecefpluginhost.exe傳輸的(de)命令行(xíng)是/qingbangong -CefParentID=1 -JSCefServicePath=<base64編碼的(de)文(wén)件(jiàn)路(lù)徑>。經過一番初始化後,可(kě)執行(xíng)文(wén)件(jiàn)便會(huì)加載庫ksojscore.dll并解碼JSCefServicePath參數。結果會(huì)得到(dào)一個(gè)參數字符串,通過Qt’s QLibrary::load方法傳輸和(hé)加載。具體文(wén)件(jiàn)路(lù)徑由攻擊者定義,從而使攻擊者可(kě)以通過加載任意DLL來執行(xíng)代碼。有(yǒu)關ksojscore.dll處理(lǐ)攻擊者指定JSCefServicePath參數的(de)具體方法,詳見圖4。

圖片

圖4. 解碼JSCefServicePath參數(左),用(yòng)作通過QLibrary::load方法加載的(de)句柄(右)

從本質上(shàng)講,的(de)确存在ksoqing方案協議遭到(dào)濫用(yòng)、生成超鏈接的(de)可(kě)能(néng)性。一旦用(yòng)戶點擊該超鏈接,軟件(jiàn)便會(huì)從指定的(de)遠程文(wén)件(jiàn)路(lù)徑加載庫。APT-C-60将該漏洞用(yòng)作網絡竊密工(gōng)具,通過它來執行(xíng)第一階段的(de)木馬下載器(qì)(SHA-1:08906644B0EF1EE6478C45A6E0DD28533A9EFC29)。


利用(yòng)漏洞


爲了利用(yòng)此漏洞,攻擊者需要将惡意庫文(wén)件(jiàn)存儲在系統,或遠程共享存儲器(qì)中目标計(jì)算機可(kě)訪問的(de)某個(gè)位置,并提前知道其文(wén)件(jiàn)路(lù)徑。此漏洞攻擊人(rén)員掌握有(yǒu)助于實現這一目的(de)的(de)相(xiàng)關技巧。


利用(yòng)MHTML格式下載遠程文(wén)件(jiàn)


漏洞攻擊者選擇利用(yòng)MHTML文(wén)件(jiàn)格式的(de)一些特性,通過可(kě)以預測的(de)途徑,将惡意組件(jiàn)下載并存儲到(dào)系統中。這種特殊類型的(de)文(wén)件(jiàn)是Microsoft Word和(hé)Excel應用(yòng)程序提供的(de)一種導出格式,允許用(yòng)戶在浏覽器(qì)中查看文(wén)檔。它是集HTML、CSS和(hé)JavaScript文(wén)件(jiàn)于一體的(de)多元檔案組合體,以便通過顯示屏來顯示。隻要在其中一個(gè)HTML文(wén)件(jiàn)中插入img标記,可(kě)以使電子表格應用(yòng)程序在加載文(wén)檔時下載遠程文(wén)件(jiàn)。例如(rú)我們測試文(wén)件(jiàn)當中的(de)img标記及其src元素,便指向本地(dì)存儲的(de)庫文(wén)件(jiàn),如(rú)圖5所示。

圖片

圖5. 插入img标記

當使用(yòng)WPS電子表格應用(yòng)程序et.exe打開(kāi)電子表格文(wén)檔時,遠程庫文(wén)件(jiàn)會(huì)自動下載并存儲在磁盤上(shàng),見圖6中的(de)ProcMon監測結果。

圖片

圖6. WPS電子表格應用(yòng)程序下載并在系統中存儲庫文(wén)件(jiàn)


查找可(kě)以預測的(de)文(wén)件(jiàn)路(lù)徑


對于文(wén)件(jiàn)路(lù)徑的(de)可(kě)預測性問題,我們發現下載的(de)文(wén)件(jiàn)存儲在%localappdata%TempwpsINetCache下,文(wén)件(jiàn)名是UTF 16LE編碼網址的(de)MD5哈希值。本例中,測試文(wén)件(jiàn)的(de)網址是http://localhost/Dll1.dll,MD5哈希值就是914CBE6372D5B7C93ADDC4FEB5E964CD。但(dàn)是,當我們試圖将變量JSCefServicePath設置爲指向該文(wén)件(jiàn)路(lù)徑時,它會(huì)轉向位于%localappdata%KingsoftWPS Office<版本号>office6下的(de)WPS Office應用(yòng)程序根目錄。如(rú)果找不到(dào)該文(wén)件(jiàn),promecefpluginhost.exe便會(huì)嘗試從其他(tā)路(lù)徑檢索庫文(wén)件(jiàn),如(rú)圖7所示。

圖片

圖7. JSCefServicePath指向的(de)文(wén)件(jiàn)路(lù)徑轉向WPS Office的(de)根目錄

雖然如(rú)此,WPS Office應用(yòng)程序根目錄中的(de)相(xiàng)對路(lù)徑卻可(kě)以正常使用(yòng),例如(rú)......TempWPSINetCache914cbe6372d5b7c93addc4feb5e964cd。


文(wén)件(jiàn)擴展名問題


還有(yǒu)最後一個(gè)障礙需要克服。精明(míng)的(de)讀(dú)者或許已注意到(dào),當promecefpluginhost.exe進程試圖加載庫時,.dll擴展名就會(huì)被添加到(dào)文(wén)件(jiàn)名中。但(dàn)已下載的(de)文(wén)件(jiàn)在生成時,則不會(huì)添加擴展名,如(rú)圖6所示。漏洞攻擊者再一次利用(yòng)自己對Windows API的(de)了解,繞過了這項限制(zhì)。如(rú)前文(wén)所述,QLibrary::Load方法負責加載庫,而庫又(yòu)調用(yòng)LoadLibraryW。相(xiàng)關文(wén)獻資料稱,對于傳遞給該函數的(de)lpLibFileName參數,加入尾随點字符(.)可(kě)以防止該函數添加.dll擴展名。因此,将此字符附加到(dào)相(xiàng)對路(lù)徑,便可(kě)悄無聲息地(dì)加載庫文(wén)件(jiàn)。


複制(zhì)漏洞


綜上(shàng)所述,爲了複現這個(gè)漏洞,我們執行(xíng)了以下操作:

超鏈接創建過程,見圖8。

圖片

圖8. 創建超鏈接

打開(kāi)文(wén)檔後,隻要單擊超鏈接就會(huì)觸發漏洞,自定義庫便會(huì)被加載,如(rú)圖9所示。詳情見圖10。

圖片

圖9.自定義庫被寫入磁盤并加載

圖片

圖10. 正加載庫的(de)堆棧調用(yòng)細目

加載後,自定義庫會(huì)将PID、管理(lǐ)員權限和(hé)托管進程的(de)文(wén)件(jiàn)路(lù)徑寫入一個(gè)日志文(wén)件(jiàn)。我們在多個(gè)版本号的(de)WPS Office Windows版中複現這一漏洞,如(rú)圖11所示。

圖片

圖11. 存在漏洞的(de)WPS Office版本中的(de)日志文(wén)件(jiàn)列表

由于這是一鍵式漏洞,因此攻擊者隻需要在電子表格中嵌入行(xíng)和(hé)列的(de)圖片,以欺騙用(yòng)戶并使其誤認爲這隻是一個(gè)普通的(de)電子表格即可(kě)。惡意的(de)超鏈接被暗(àn)藏在圖像中,隻要用(yòng)戶點擊圖片中的(de)一個(gè)單元格便會(huì)觸發攻擊,如(rú)圖12所示。 

圖片

圖12. 嵌入常規行(xíng)、列圖片的(de)虛假電子表格

有(yǒu)關這個(gè)漏洞的(de)另一個(gè)有(yǒu)趣之處在于,即使在Windows資源管理(lǐ)器(qì)的(de)預覽窗格中點擊一下,也(yě)會(huì)觸發該漏洞,從而使其更加危險。


影響版本


WPS Office Windows套件(jiàn)受此影響的(de)版本範圍包括,從2023年8月(yuè)前後發布12.2.0.13110版之時起,到(dào)2024年3月(yuè)發布12.1.0.16412修正版之前的(de)所有(yǒu)版本。毒文(wén)檔最初于今年2月(yuè)首次上(shàng)傳到(dào)VirusTotal;根據PE時間戳判斷,一些惡意組件(jiàn)是在今年2月(yuè)份構建的(de)。


CVE-2024-7263


本節分(fēn)析了CVE-2024-7262的(de)安全補丁,并通過劫持WPS Office同一插件(jiàn)promecefpluginhost.exe的(de)控制(zhì)流,發現了另一個(gè)代碼執行(xíng)漏洞。


根源分(fēn)析


在确定哪些版本受第一個(gè)漏洞影響的(de)過程中,我們分(fēn)析了12.1.0.16412版(發布于2024年3月(yuè)前後)悄然引入的(de)補丁,以彌補CVE-2024-7262安全漏洞。事實上(shàng),promecefpluginhost.exe和(hé)ksojscore.dll組件(jiàn)還添加了額外的(de)檢查機制(zhì),來驗證攻擊者控制(zhì)變量JSCefServicePath的(de)合法性,但(dàn)補丁卻未涵蓋同類變量:CefPluginPathU8。

第一次檢查發生在promecefpluginhost.exe叠代不同的(de)命令行(xíng)參數時。如(rú)果參數與上(shàng)述變量之一具有(yǒu)相(xiàng)同的(de)名稱(比較時區分(fēn)大(dà)小(xiǎo)寫),則該參數将被忽視,如(rú)圖13所示。

圖片

圖13. 代碼檢查并忽略已傳輸參數

接下來,它會(huì)檢索JSCefServicePath的(de)預期文(wén)件(jiàn)路(lù)徑,即jscefservice.dll的(de)存儲路(lù)徑。真實路(lù)徑應是%LOCALAPPDATA%KingsoftWPS Office<版本号>office6ddonskcef,如(rú)圖14所示。對于CefPluginPathU8也(yě)這樣檢索,真實路(lù)徑應指向%LOCALAPPDATA%KingsoftWPS Office<版本号>office6ddonscef。

圖片

圖14. 待加載正确庫文(wén)件(jiàn)的(de)檢索代碼

利用(yòng)合法命令行(xíng)參數構建一個(gè)新的(de)命令行(xíng),後面是特定變量标識的(de)檢索文(wén)件(jiàn)路(lù)徑。promecefpluginhosts.exe然後加載庫ksojscore.dll,并使用(yòng)重建的(de)命令行(xíng)調用(yòng)其導出的(de)CefRenderEntryPoint。對兩個(gè)特定變量都(dōu)進行(xíng)檢查,但(dàn)是這次比較時不區分(fēn)大(dà)小(xiǎo)寫(參見圖15中的(de)第2行(xíng))。 

圖片

圖15. 選取第一個(gè)出現的(de)變量,但(dàn)不區分(fēn)大(dà)小(xiǎo)寫

這裏蘊含第一個(gè)邏輯缺陷。如(rú)果特定變量中至少(shǎo)有(yǒu)一個(gè)字母被大(dà)寫改小(xiǎo)寫(或小(xiǎo)寫改大(dà)寫),則第一次(區分(fēn)大(dà)小(xiǎo)寫)檢查将不會(huì)導緻攻擊者指定的(de)參數被拒絕,同時命令行(xíng)的(de)形式大(dà)緻如(rú)下(例如(rú)):

-JSCEfServicePath=<ATTACKER_CONTROLLED> <OTHER_PARAMETERS> -JSCefServicePath=<REAL_PATH>(注意第一個(gè)變量名中第一個(gè)字母E的(de)大(dà)小(xiǎo)寫變化)

當這一命令行(xíng)傳遞給ksojscore.dll時,它隻會(huì)接受第一次出現的(de)變量,而攻擊者控制(zhì)的(de)變量總是放(fàng)在有(yǒu)效變量之前。

但(dàn)在加載JSCefServicePath文(wén)件(jiàn)路(lù)徑給出的(de)庫之前,還引入了第二次檢查,即調用(yòng)函數krt::ksafe::KProcess::verifyZhuHaiKingsoftCertSigner來檢查庫文(wén)件(jiàn)證書(shū),以确保它是金(jīn)山的(de)庫文(wén)件(jiàn),如(rú)圖16所示。因此,攻擊者無法加載任意庫。

圖片

圖16. 正在檢查待加載庫文(wén)件(jiàn)的(de)簽名

但(dàn)沒有(yǒu)妥善檢查CefPluginPathU8變量,這是第二個(gè)缺陷。在驗證JSCefServicePath文(wén)件(jiàn)路(lù)徑後,庫文(wén)件(jiàn)jscefservice.dll會(huì)被加載,然後按照(zhào)CefPluginPathU8提供的(de)文(wén)件(jiàn)路(lù)徑,在調用(yòng)LoadLibraryExW時調用(yòng)字符串libcef.dll相(xiàng)連的(de)庫文(wén)件(jiàn),而不檢查其簽名。

如(rú)果變量CefPluginPathU8的(de)至少(shǎo)一個(gè)字母被更改,jscefservice.dll将按照(zhào)變量給出的(de)文(wén)件(jiàn)路(lù)徑,嘗試加載攻擊者控制(zhì)路(lù)徑下的(de)libcef.dll庫,如(rú)圖17所示。

圖片

圖17. 庫文(wén)件(jiàn)jscefservice.dll會(huì)加載攻擊者定義路(lù)徑所指向的(de)庫,而不檢查其簽名


利用(yòng)漏洞


此漏洞的(de)主要局限性是文(wén)件(jiàn)路(lù)徑中添加的(de)字符串libcef.dll。截至本文(wén)撰稿時,我們尚未找到(dào)一種方法來下載某個(gè)文(wén)件(jiàn),并選用(yòng)它的(de)文(wén)件(jiàn)名。但(dàn)在本地(dì)網絡上(shàng),通過在共享存儲器(qì)上(shàng)托管庫文(wén)件(jiàn),使變量CefPluginPathU8指向它的(de)方法很管用(yòng),因爲LoadLibraryExW允許指定網絡路(lù)徑。關于利用(yòng)網絡路(lù)徑劫持promecefpluginhost.exe(12.2.0.16909版本,于2024年4月(yuè)下旬發布)控制(zhì)流的(de)方法,見圖18屏幕截圖。

圖片

圖18. Procmon堆棧視圖顯示了自定義庫的(de)加載過程


影響版本


受此影響的(de)WPS Office Windows版本範圍,從2023年8月(yuè)前後發布12.2.0.13110版時起,到(dào)2024年5月(yuè)底發布12.2.0.17119修正版時止。


結論


由于WPS Office是一款主要在亞洲國家使用(yòng)的(de)辦公套件(jiàn),APT-C-60組織的(de)所作所爲恰如(rú)其分(fēn)地(dì)展現了,它對東亞國家目标志在必得的(de)野心。無論該組織開(kāi)發還是購(gòu)買了CVE-2024-7262漏洞,它肯定需要對應用(yòng)程序内部進行(xíng)一番研究,還需要了解Windows加載進程的(de)行(xíng)爲機制(zhì)。漏洞利用(yòng)手段頗爲狡猾,具有(yǒu)充分(fēn)的(de)欺騙性,足以誘使任何用(yòng)戶點擊貌似正規的(de)電子表格,手段也(yě)非常有(yǒu)效和(hé)可(kě)靠。選擇MHTML文(wén)件(jiàn)格式,使攻擊者能(néng)夠将代碼執行(xíng)漏洞轉變爲遠程漏洞加以利用(yòng)。

此外,我們之所以發現CVE-2024-7263漏洞,從一個(gè)側面凸顯了補丁驗證程序細緻化管理(lǐ)的(de)重要性,以确保核心問題已得到(dào)充分(fēn)解決。

我們強烈建議WPS Office Windows版用(yòng)戶将軟件(jiàn)更新到(dào)最新版本。


IoC


完整的(de)IOC資訊,可(kě)訪問我司GitHub 資料庫查閱。

圖片


上(shàng)一篇:個(gè)人(rén)版6.0功能(néng)升級 | 新增DHCP檢測和(hé)ARP防護兩大(dà)工(gōng)具

下一篇:當心僞裝成人(rén)工(gōng)智能(néng)工(gōng)具的(de)真正惡意程序

發表評論:

評論記錄:

未查詢到(dào)任何數據!

QQ咨訊

點擊這裏給我發消息 産品方案了解

點擊這裏給我發消息 項目技術(shù)支持

QQ咨訊

尋找幫助

接收到(dào)信息第一時間與您聯系

請輸入您的(de)聯系電話(huà),座機請加區号

尋找幫助

微信掃一掃

微信聯系
返回頂部