Next.js 兩項重大 RCE 修補:香港團隊的升級與核對清單
Tech News

Next.js 兩項重大 RCE 修補:香港團隊的升級與核對清單

圖片:TechLab 自製資訊圖
TechLab 編輯部(譯)·

Next.js 已發布 15.5.28 及 16.4.1 安全更新,修補兩項嚴重度甚高的遠端程式碼執行(RCE)漏洞,以及一項與 Server Actions 有關的高風險拒絕服務漏洞。據 iThome 報道,兩項 RCE 的 CVSS v4.0 分數均為 9.5;在符合利用條件時,攻擊者毋須登入即可設法在網站 server 執行程式碼。對使用 Next.js 經營網站、電商或 SaaS 的團隊而言,這應列為優先處理的供應鏈風險。

不過,三項問題的受影響範圍並不相同。SVG 問題取決於是否啟用相關圖片最佳化設定、部署環境及其他運行條件;Next.js 16 快取問題則限於 App Router、快取元件及特定回傳資料結構的組合;Server Actions 的問題亦不影響 Pages Router 或完全未用 Server Actions 的專案。因此,最實際的做法不應假定所有 Next.js 網站都會受此漏洞影響,而是先以功能、版本和相依套件建立清晰的修補次序,再盡快完成升級。

先按版本與功能分流,而非只看框架名稱

iThome 指出,涉及 SVG 圖片處理的漏洞編號為 CVE-2026-96889,影響 Next.js 10.0.0 至 15.5.27,以及部分 16.x 版本。Next.js 的圖片最佳化機制會使用 Sharp,而 Sharp 處理 SVG 時所依賴的 librsvg 存在記憶體安全漏洞。在採用 glibc 的 Linux 環境中,若其他指定條件同時成立,攻擊者可藉圖片最佳化 API 觸發漏洞,造成 server 端任意程式碼執行風險。

這個限制尤其重要:iThome 報道明確提到,Next.js 預設不會經圖片最佳化 API 處理 SVG,需由開發者另行啟用。換言之,網站有使用 <Image> 或提供圖片上載功能,並不自動等同可受此問題利用;團隊必須實際核對 next.config 內與 SVG 圖片最佳化有關的設定、圖片來源是否可由外部控制,以及實際部署的 Linux 基礎環境。若能接受 SVG 保持原檔提供,暫時停用該最佳化路徑可降低暴露面,但這只是過渡措施,修補相依套件仍是正途。

另一項 RCE 只影響 Next.js 16.0.0 至 16.4.0。據 iThome 報道,當專案採用 App Router 與快取元件,且快取函式回傳多個用來儲存數值資料的特殊陣列,攻擊者可透過特製請求,利用 React Server Components 的漏洞執行程式碼。這反映版本盤點不足以完成風險判斷:即使團隊已升上 Next.js 16,也要由熟悉資料流的工程師檢視快取函式實際回傳值,而非只因「有用快取」便得出結論。

升級至指定版本,同步檢查鎖定相依套件

官方建議的修補版本是 Next.js 15.5.28 與 16.4.1。仍在 15.x 的專案應升至 15.5.28;已採用 16.x 的專案則應升至 16.4.1,然後重新建立及部署正式環境。對版本仍較舊、受 CVE-2026-96889 影響的專案,升級至較新主版本有可能涉及框架相容性驗證;在此情況下,團隊可先確認 SVG 最佳化是否已啟用和是否有外部可控輸入,同時安排可回復的升級、測試與發布流程,避免把風險由安全修補轉移為生產環境故障。

Sharp 是這次排查不能漏掉的一環。iThome 指出,Sharp 0.35.5 已納入修補後的 librsvg,新的 Next.js 版本亦採用該修補版本。若暫時未能升級 Next.js,至少應從套件鎖定檔與實際建置產物確認 Sharp 是否為 0.35.5 或以上;不能只看 package.json 的寬鬆版本範圍,因為最終安裝版本可能由鎖定檔、套件管理器或建置快取決定。這項核對亦應在 CI 及正式映像檔重複進行,確保修補沒有只停留在開發人員電腦。

升級後,測試重點應涵蓋原有圖片處理、登入前可訪問的圖片端點、快取命中與失效邏輯,以及依賴 Server Actions 的表單或資料更新流程。這些測試不是為了重現漏洞,而是確認安全更新沒有改變站點的重要行為。若公司透過容器映像、受管平台或多個 repository 發布,營運與平台團隊亦要確認所有服務均已採用新建置產物;否則同一網域下可能仍遺留舊版服務。

Server Actions 的 DoS 要與兩項 RCE 分開處理

iThome 亦報道第三項高風險漏洞:在至少使用一項 Server Action 的 App Router 網站中,攻擊者可傳送特製請求,令 CPU 用量異常升高,使同一 server 行程未能繼續處理其他請求。該問題的 CVSS 分數為 8.2,影響 Next.js 13.0.0 至 15.5.27,以及 16.0.0 至 16.4.0;使用 Pages Router 或未使用 Server Actions 的網站不受影響。它的後果是服務可用性受損,與前兩項可造成任意程式碼執行的風險性質不同,應在事故分級與監控規則中分開標示。

對有 Server Actions 的團隊,升級後可額外留意單一行程 CPU 持續飆升、表單端點出現異常密集或格式不尋常的請求,以及服務在未見流量高峰時出現逾時。這些訊號本身不能證明漏洞已被利用,卻有助營運人員快速判斷是否需擴大調查。若部署架構容許,亦可檢視請求限制、逾時和行程隔離是否足以減少單一請求拖垮服務的範圍;這是防禦縱深,不能取代框架修補。

將公告轉為可追蹤的工程工作

這次更新的管理難點,在於三個漏洞共用部分版本範圍,利用前提卻明顯不同。較成熟的處理方式是把專案分為「SVG 最佳化已啟用」、「Next.js 16 並使用 App Router 快取」、「使用 Server Actions」及「不符合上述條件」等群組,逐一記錄目前版本、Sharp 實際版本、負責人、測試結果和部署狀態。這樣既能優先處理外部輸入較多的服務,也能向業務與資安團隊清楚解釋哪些系統受影響、哪些只是需要預防性升級。

從香港網站營運角度看,事件提醒團隊把框架安全公告與間接相依套件一併納入資產清單。iThome 所述的 Sharp 與 librsvg 關係顯示,表面上屬於 Next.js 的問題,實際修補有效性仍取決於建置時拉取的底層版本。下一步值得留意的,是各團隊能否在完成 15.5.28 或 16.4.1 升級後,持續驗證部署環境的套件鎖定、圖片設定與 App Router 功能使用情況,避免日後新服務複製了舊有的高風險設定。

延伸閱讀

AI 輔助說明: 本文由 AI 協助整理,並經兩輪獨立自動品質審核;資料及連結仍以原始來源為準。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook