這篇文章將分析近期揭露的 Bing 圖片搜尋漏洞(CVE-2026-32194 與 CVE-2026-32191)。這個案例非常經典,它揭示了許多開發者在處理圖片上傳或遠端抓取時,最容易忽略的一個安全盲點:圖片處理庫(Image Processing Library)其實也是一種解析器,而解析器就是攻擊者的切入點。
漏洞背景與核心問題
安全研究公司 XBOW 發現,Bing 的圖片處理流程中存在嚴重的命令注入(Command Injection)漏洞。簡單來說,攻擊者只要上傳一個經過特殊設計的 SVG 檔案,或者讓 Bing 的爬蟲去抓取一個惡意的 SVG 網址,就能在微軟的伺服器上以最高權限(Windows 的 SYSTEM 權限或 Linux 的 root 權限)執行任意指令。
這裡最關鍵的技術名詞是 SVG(Scalable Vector Graphics)。不同於 JPG 或 PNG 這種由像素組成的點陣圖,SVG 是一種基於 XML 格式的向量圖。因為它是 XML,所以它可以包含文字、引用外部資源,甚至定義複雜的結構。這使得 SVG 在本質上更像是一個文件,而非單純的圖片。
為什麼圖片處理會導致系統被控制?
Bing 在後端使用了類似 ImageMagick 的圖片處理工具。ImageMagick 是一個功能強大的套件,為了支援數百種圖片格式,它引入了代理機制(Delegates)。
所謂的代理(Delegates),是指當 ImageMagick 遇到自己無法直接處理的格式時,會呼叫外部的第三方程式(透過系統 Shell)來完成轉換工作。例如,處理某些特殊格式時,它可能會在後台執行類似 convert input.eps output.jpg 的系統指令。
攻擊者利用了這個機制。他們在 SVG 檔案中插入了一個特殊的引用路徑,而這個路徑以管線符號(Pipe character )開頭。當 ImageMagick 的代理機制處理到這個符號時,它不會將其視為檔案名稱,而是將其視為一個要傳遞給系統 Shell 執行的指令。
這導致了典型的 OS Command Injection(作業系統命令注入),攻擊者可以藉此執行 whoami 確認權限,甚至使用 curl 將伺服器內部的機密資料傳送到外部伺服器。
攻擊路徑分析
這次漏洞提供了兩種進入點,且都不需要使用者登入或權限驗證:
第一路徑:直接上傳。透過 Bing 的以圖搜尋功能,將惡意的 SVG 檔案以 Base64 編碼上傳到後端 API。
第二路徑:遠端抓取(SSRF 延伸)。利用 Bing 的圖片爬蟲,提供一個存放惡意 SVG 的 URL。這在起初看起來像是一個盲目伺服器端請求偽造(Blind SSRF),因為前端不會回傳任何結果,但後端的圖片處理 worker 依然會抓取並解析該檔案,最終觸發命令執行。
實務上的防禦建議
對於工程師來說,最重要的一點是:不要把圖片處理工具當成單純的管線(Plumbing),而要把它當成一個複雜的解析器(Parser)。只要涉及解析外部輸入,就有風險。
如果你在專案中使用了 ImageMagick 或類似的工具,請採取以下防禦措施:
禁用代理機制。在 ImageMagick 的 policy.xml 設定檔中,明確將 delegate 的權限設為 none。這是最有效的手段,直接切斷工具呼叫系統 Shell 的能力。
限制接受的格式。盡量不要接受 SVG、MVG 或 EPS 等具有解釋執行能力的格式。如果必須支援,請使用更安全的解析庫,或對輸入進行極其嚴格的白名單過濾。
實施最小權限原則。圖片處理 worker 絕對不應該以 SYSTEM 或 root 權限執行。應該將其運行在低權限的獨立使用者帳號下,並使用容器化(Containerization)或沙箱(Sandbox)環境隔離。
切斷對外網路連線。圖片處理伺服器通常不需要訪問外部網路。如果能封鎖 worker 的出站流量(Outbound traffic),即使攻擊者成功注入指令,也無法將資料傳回自己的伺服器,將 RCE(遠端程式碼執行)的影響降到最低。
總結
這次 Bing 的漏洞再次證明了 ImageTragick(2016 年的著名漏洞)類型的問題依然存在。許多團隊在部署時直接使用預設配置,而 ImageMagick 的預設配置是為了功能完整而非安全性設計的。在處理不可信的檔案上傳時,預設拒絕(Deny by Default)才是正確的安全實踐。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。