是否構成安全風險?

By: WEEX|2026/04/05 23:55:17
0

了解 SVG 腳本注入

可縮放矢量圖形(SVG)文件的獨特之處在於,它們是一種基於 XML 的圖像格式。與 JPEG 或 PNG 等傳統位圖圖像不同,SVG 本質上是一個文本文件,它通過程式碼來描述形狀、路徑和顏色。由於它基於 XML,因此也可以包含互動元素,包括 JavaScript。字串 <SVG onload=alert(document.domain)> 是一個典型的跨站腳本攻擊(XSS)有效載荷示例。它會指示瀏覽器在圖片加載完成後立即執行一段 JavaScript 程式碼——在本例中,是一段顯示網站域名的簡單提示框。

在 2026 年,這仍然是網頁開發人員和安全專家的一大擔憂。當用戶將 SVG 文件上傳到未對程式碼進行適當清理的平台時,該腳本就會成為頁面文檔對象模型(DOM)的一部分。如果其他用戶查看該圖片,腳本會在其瀏覽器會話中自動運行。雖然提示框本身無害,但真正的攻擊者會將該程式碼替換為專門用於竊取會話 Cookie、將用戶重定向至釣魚網站,或冒用已登錄用戶身份執行未經授權操作的程式碼。

SVG 漏洞的工作原理

XML 的作用

由於 SVG 文件是以 XML 格式解析的,因此瀏覽器對其處理具有很高的靈活性。它們的設計旨在實現互動性和動態性。這意味著 onloadonerroronclick 等屬性在 SVG 模式中是有效的。當瀏覽器遇到這些屬性時,它會按照標準規範執行相關的程式碼。SVG 格式的這一「特性」正是使其成為「黑客畫布」的原因,因為它允許將惡意程式碼隱藏在看似標準的圖像文件中。

運行環境

SVG 有效載荷的危險性在很大程度上取決於文件的渲染方式。如果透過 <IMG> 標籤加載 SVG 檔案,出於安全考量,大多數現代瀏覽器會禁用腳本。但是,如果 SVG 檔案是在瀏覽器標籤頁中直接打開的、透過 <IFRAME> 標籤嵌入的,或者直接內聯到頁面的 HTML 代碼中,這些腳本就會執行。開發人員往往會忽略這一點,他們總以為所有「圖片」上傳都是天生安全的。

常見風險與攻擊

存儲型跨站腳本攻擊

存儲型跨站腳本攻擊是與 SVG 檔案上傳相關最常見的風險之一。在此場景中,攻擊者將惡意 SVG 檔案上傳至個人簡介頭像區域、文件共享服務或內容管理系統(CMS)。伺服器在保存檔案時不會檢查腳本標籤。每當合法用戶或管理員查看該檔案時,惡意腳本就會被執行。2026年近期發布的安全報告指出,數個平台存在安全漏洞,其後端驗證僅檢查檔案是否為有效的 XML,卻未能移除其中的活動事件處理程序。

網路釣魚與重定向

除了簡單的腳本執行之外,SVG 檔案在複雜的網路釣魚攻擊中正被越來越廣泛地使用。可以透過精心設計,使 SVG 檔案看起來像一個真實的登錄按鈕或「點擊此處查看文件」的綁定/連結。當用戶與圖片進行互動時,嵌入的 JavaScript 可能會立即觸發重定向,將用戶引導至一個竊取憑據的網站。由於檔案擴展名為 .svg,它通常能繞過那些經過訓練、專門檢測危險的 .html 或 .exe 附件的傳統郵箱/郵件過濾器。由於 Chrome 和 Safari 等瀏覽器對 SVG 的原生支持,這些腳本在運行時不會向用戶顯示任何安全警告。

-- 價格

--

安全最佳實踐

輸入驗證

防範基於 SVG 的攻擊最有效的方法是進行嚴格的數據淨化。開發人員應使用專門用於解析和清理 SVG 檔案的庫,移除所有 <SCRIPT> 標籤以及 onload 等事件處理程序屬性。僅檢查檔案副檔名是不夠的;必須檢查檔案的實際內容。如果某個平台允許用戶上傳資產,實施嚴格的《內容安全政策》(CSP)也能起到幫助作用,它能限制腳本的加載來源,並阻止內聯腳本的執行。

安全的渲染方法

在可能的情況下,請使用 <IMG> 標籤顯示用戶上傳的 SVG 檔案。這是最安全的方法,因為瀏覽器會自動將 SVG 視為靜態圖像,並阻止其中任何腳本的執行。如果您的應用程式要求 SVG 具有互動性或內聯顯示,則必須確保程式碼已通過「白名單」過濾器,該過濾器僅允許使用安全的標籤和屬性。對於從事數位資產管理或交易的人士而言,使用 WEEX 這樣的安全平台,可以確保其底層基礎設施遵循現代安全標準,從而保護用戶資料和會話安全。

2026年漏洞趨勢

漏洞類型機制潛在影響
儲存型XSS惡意SVG檔案被上傳至伺服器並被他人查看。會話劫持、帳戶接管、資料竊取。
釣魚重定向SVG 中的腳本會觸發 window.location 的更改。用戶被引導至虛假登入頁面或惡意軟體網站。
HTML 注入SVG 包含在客戶端組裝的編碼有效載荷。繞過網路防火牆來傳播惡意軟體。
XXE注入利用SVG中的XML外部實體引用。內部文件洩漏或伺服器端請求偽造(SSRF)。

保障使用者體驗

開發者的責任

隨著網頁應用程式日益複雜,開發者有責任將所有使用者提供的資料視為不可信。這包括圖片。隨著“AutoSmuggle”工具及其他自動腳本嵌入程式的興起,技術水平較低的攻擊者生成危險的SVG檔案變得更加容易。透過採用“安全設計”的方法,開發者可以在這些風險影響使用者之前加以緩解。這包括定期更新依賴項、進行安全審計,以及使用具備內建防護機制以抵禦常見注入漏洞的現代框架。

使用者意識

從使用者的角度來看,在下載或打開意外收到的檔案附件時,即使它們看起來只是簡單的圖片,也需保持警覺。到2026年,網路釣魚已不再局限於簡單的綁定/連結,而是演變為隱藏在矢量圖形中的“像素級精準”陷阱。使用者應確保瀏覽器保持最新版本,因為瀏覽器供應商會頻繁發布補丁,以應對SVG標準中出現的新腳本繞過和執行方法。認識到圖像可能具有“活性”,是維護數位安全的第一步。

SVG安全的未來

攻擊者與防禦者之間持續不斷的較量,仍在不斷推動著網路標準的演進。W3C及其他標準組織內部正在討論進一步收緊瀏覽器處理SVG檔案的方式,以防範最常見的跨站腳本(XSS)攻擊途徑。然而,由於SVG的互動性是正式設計師和開發者所依賴的核心功能,因此全面禁止腳本的可能性不大。相反,重點仍放在更完善的隔離措施和更強大的預設安全標頭上。隨著2026年的深入,人工智慧驅動的威脅檢測技術的整合正幫助各平台即時識別SVG代碼中的惡意模式,從而針對<SVG onload=alert(document.domain)>這類攻擊提供了額外的防禦層。

Buy crypto illustration

以1美元購買加密貨幣

分享
copy

漲幅榜