Next.js 重大漏洞 CVE-2026-94545:ImageResponse 遭 SVG 注入可導致遠端程式碼執行
資安研究
2026-10-15 by 高田鑑識
本文整理自 Checkmarx Zero 研究團隊發表的〈CVE-2026-94545 – From JSX to SVG Injection〉,說明 Next.js 新揭露的重大漏洞成因、影響範圍與修補方式。
重點摘要
- 漏洞:CVE-2026-94545,Next.js ImageResponse 功能中的重大遠端程式碼執行(RCE)漏洞,根本原因在其相依套件 Satori 未正確跳脫 SVG 內容。
- 受影響版本:Next.js 16.2.0 至 16.3.5。
- 修補版本:Next.js 16.3.6。
- 不受影響:Next.js 15,以及使用 Edge 執行環境版本 ImageResponse 的專案。
- 建議行動:使用 Next.js 16.2.0 以上版本者,請儘速升級至 16.3.6。
Checkmarx SCA 的漏洞資料庫已收錄此漏洞,掃描時會自動標示使用受影響版本的應用程式;Checkmarx 使用者不需要手動逐一排查,直接在掃描結果中就能看到曝險情形。
漏洞概述
Checkmarx 先前曾將 React 生態系的另一個 RCE 漏洞 CVE-2026-75604 稱為「React2Shell2」。這次的 CVE-2026-94545 同樣是影響 Next.js 的重大 RCE 漏洞,問題出在 ImageResponse——一個能把 JSX 與 CSS 轉換成 PNG 圖片的功能,常用於動態產生社群分享縮圖(Open Graph 圖片)等情境。
在產生圖片的過程中,如果傳給 ImageResponse 的 JSX 裡,SVG 內容、屬性或樣式中混入了惡意程式碼,這段程式碼可能會被 Next.js 執行。
根本原因:Satori 的 SVG 跳脫不完整
Next.js 近日發佈 15.5.26 與 16.3.6 兩個版本,主要是更新上游相依套件 Satori。Satori 是一個把 JSX 與 CSS 轉換為 SVG 的函式庫,這次修補的是其中「SVG 元素跳脫不當」(Improper Escaping of SVG Elements)的問題:由於跳脫處理不足,攻擊者可控制的值若出現在 SVG 元素、XML 名稱或內部樣式欄位中,會被當成 SVG 標記解讀。
從 Satori 的修補提交可以看出,修正內容是強化 SVG 序列化流程:在把文字與屬性值寫入 SVG 標記之前先進行跳脫,避免外部傳入的值額外產生新的元素或屬性。這也說明舊版在產生 SVG 標記前,並未充分清理輸入內容。
對 Next.js 的影響:攻擊如何發生
雖然 CVE-2026-94545 是以 Next.js ImageResponse 漏洞的名義揭露,但實際問題出在 Satori 的 SVG 處理。整個流程如下:
- 開發者把 JSX 與 CSS 交給 ImageResponse,用來產生 PNG 圖片。
- ImageResponse 在內部呼叫 Satori,先將 JSX 與 CSS 轉換成 SVG。
- 如果 JSX 中的 SVG 元素帶有攻擊者可控制、偽裝成 SVG 標記的值,Satori 不會正確清理,這些內容就直接被寫進產生出來的 SVG。
- ImageResponse 接著處理這份 SVG 來產生最終的 PNG;由於惡意標記已經被注入,會在這個階段被執行,攻擊因此得逞。
換句話說,凡是會把使用者輸入(例如網址參數、表單內容、文章標題等)帶進 ImageResponse 的 SVG 元素、屬性或樣式中的應用程式,都應優先檢查與修補。
影響範圍與修補方式
- 受影響:Next.js 16.2.0 至 16.3.5。
- 修補版本:Next.js 16.3.6。
- 不受影響:Next.js 15 系列,以及使用 Edge 執行環境版本 ImageResponse 的專案。
確認目前使用的 Next.js 版本:
npm ls next
升級至修補版本:
npm install [email protected]
升級後請一併更新鎖定檔(package-lock.json、pnpm-lock.yaml 或 yarn.lock)並重新部署,確保正式環境實際執行的是修補後的版本。
給開發團隊的提醒
Checkmarx 在文末強調一個重要原則:即使使用 Next.js、React、Spring 等主流框架,開發者仍應自行落實輸入驗證與清理。
把安全控制完全交給上游元件,期待它同時提供完整功能與足夠的安全性,容易產生虛假的安全感。大型、廣泛採用的框架通常內建豐富的安全機制,也遵循安全設計(secure by design)原則,但並非對漏洞免疫。近年即使是最普及的框架與函式庫,也持續出現安全問題。框架層級的安全控制應視為額外的一層防護,而不是取代應用程式本身的驗證與輸入控制。
這也是軟體組成分析(SCA)工具的價值所在:當上游套件出現新漏洞時,能即時比對專案實際使用的版本(包含間接相依的套件,例如這次的 Satori),讓團隊在第一時間知道哪些應用程式受影響、該升級到哪個版本。



