Year of the Bounty Desktop: Bugs From Binaries by Parsia Hakimian | Bug Bounty Village, DEF CON 33
三句話摘要
桌面應用程式與瀏覽器通信機制的安全漏洞研究。 桌面應用與瀏覽器的無縫整合(協議處理程器、本地 WebSocket 伺服器)在改善用戶體驗的同時,引入了跨應用程式的嚴重攻擊面,多個漏洞可鏈式組合實現完整系統控制,亟需開發者在應用設計時平衡安全與易用性。 協議處理程器的命令注入鏈:桌面應用程式透過協議處理程器(如 `ms-word://` )與瀏覽器整合,但可以接收遠端指令參數。攻擊者可將惡意 XML 檔案傳遞給應用程式,再透過 HTA 格式的寬鬆解析特性,在啟動資料夾中執行任意程式碼。
重點整理
重點- 1
協議處理程器的命令注入鏈:桌面應用程式透過協議處理程器(如 `ms-word://` )與瀏覽器整合,但可以接收遠端指令參數。攻擊者可將惡意 XML 檔案傳遞給應用程式,再透過 HTA 格式的寬鬆解析特性,在啟動資料夾中執行任意程式碼。
- 2
WebSocket 繞過同源策略:本地 HTTP/WebSocket 伺服器(如 Zoom、Electron 應用、PlayStation Now)不受瀏覽器同源策略限制。任何網站上的 JavaScript 可直接與本地伺服器通信,造成跨應用程式攻擊面。
- 3
開放重定向結合 RCE 的鏈式攻擊:通過 WebSocket 誘導 Electron 應用開啟攻擊者控制的頁面,再利用已啟用 nodeIntegration 的應用執行 Node.js 程式碼,從而完全接管系統。
- 4
VS Code 偵錯器的遠端程式碼執行:WSL Remote 擴充功能透過 WebSocket 與 Linux 端伺服器通信,攻擊者可連接到暴露的 Node Inspector 偵錯器實例,直接執行程式碼。
實用技巧與重點
乾貨- 工具與技術:
- Burp Suite(含 AI 功能)
- Wireshark(流量分析)
- Frida、DNSpy(逆向分析)
- Ghidra(二進制反編譯)
- NirSoft URL Protocol View(協議處理程器列舉)
- HTA(HTML Application 格式)
- 具體漏洞參數:
- Burp AI 通訊端點:ai.portswigger.net
- Zoom 本地 HTTP 伺服器:隱藏協議處理程器,卸載後仍保留
- PlayStation Now:WebSocket 伺服器(通常連接埠 13219)
- Electron 應用:nodeIntegration(舊版預設啟用,新版為 false)
- VS Code WSL Remote:Node Inspector 偵錯介面
- Go mux 路由器:正規表示式提取所有路由端點
- 環境變數繞過:`%ADMINPROFILE%`(因瀏覽器編碼無法直接使用)
- 攻擊流程(PlayStation Now 案例):
- 受害者訪問攻擊者網站
- JavaScript 連接至本地 WebSocket 伺服器(127.0.0.1:13219)
- 送出開放重定向命令
- Electron 應用開啟攻擊者控制的頁面
- 利用 nodeIntegration 執行計算機指令(或任意系統命令)
- 賞金結果:
- 某個 15k 美元的漏洞經 MSRC 評估後獲賞 $0
- 演講者在 MSRC 活動上的見面會獲得 $0.10
結論
結論“桌面應用與瀏覽器的無縫整合(協議處理程器、本地 WebSocket 伺服器)在改善用戶體驗的同時,引入了跨應用程式的嚴重攻擊面,多個漏洞可鏈式組合實現完整系統控制,亟需開發者在應用設計時平衡安全與易用性。”
完整解析
詳細演講者 Parsia 分享了在桌面應用程式安全研究中發現的一系列漏洞。首先,他從 Burp Suite 的 AI 功能開始討論。為了分析 Burp AI 的內部通訊,他設置了一個雙層代理結構:第一個 Burp 實例作為客戶端,上游指向第二個實例的通訊埠 9000。然而在建立 HTTPS 連接時遇到憑證驗證失敗,因為 Burp 搭載自己的 Java 運行時環境 (JRE),擁有獨立的憑證儲存。解決方案是使用 keytool 工具將 Burp CA 憑證導入至 JRE,但此操作在每次應用程式升級後都需重新執行。
接著他探索了協議處理程器的攻擊面。Windows 系統註冊了 140+ 個協議處理程器(如 `ms-word://` 、`zoom://` ),每個都關聯到特定應用程式。通過 NirSoft 的 URL Protocol View 工具,他發現許多應用程式可接收開關與參數。在某個 .NET 應用程式中,他發現了一個隱藏的命令列開關,允許傳遞 XML 格式的腳本檔案路徑。由於應用程式支援遠端檔案 URL,攻擊者可指向網路上的惡意 XML,應用程式將其下載、執行並輸出結果到本地檔案。
結合 HTA 格式的寬鬆解析特性,攻擊進一步升級。HTA 檔案本質上是 HTML + VBScript,但解析器容錯程度極高,允許在開頭填充任意垃圾數據後才解析指令碼。攻擊者可將 HTA 檔案放入管理員帳戶的啟動資料夾(`%ADMINPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`),在 Windows 啟動時自動執行。儘管需要知道用戶名稱,但每台 Windows 電腦預設擁有 Administrator 帳戶,問題因此大幅簡化。
更具威脅的是本地 WebSocket 伺服器的漏洞。Zoom、Electron 應用、PlayStations Now 等均運行本地 HTTP 或 WebSocket 伺服器以實現流暢的瀏覽器整合體驗。與常見的 HTTP 不同,WebSocket 連接不受同源策略約束,導致任何網站上的 JavaScript 都可與本地伺服器通信。在 PlayStation Now 案例中,演講者通過以下鏈式攻擊實現遠端程式碼執行:第一步,利用 WebSocket 誘導 Electron 應用開啟特定 URL(開放重定向);第二步,當應用開啟攻擊者網站時,在已啟用 nodeIntegration 的 Electron 中注入程式碼,獲得 Node.js API 呼叫能力;第三步,通過 `require('child_process').exec()` 執行系統命令(如彈出計算機)。
VS Code 的 WSL Remote 擴充功能同樣脆弱。該功能允許 Windows 端 VS Code GUI 與 Linux(WSL)端伺服器透過 WebSocket 通信。若攻擊者能連接到暴露的 Node Inspector 偵錯介面,由於偵錯器預設提供程式碼執行方法,完整的遠端程式碼執行隨之而來。演講者試圖報告 VS Code 漏洞,但因 MSRC 評估問題,最終獲賞為零。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

