1486 字
7 分鐘

Next.js 2026 年 8 月安全更新怎麼處理?升級 16.3.3/15.5.24

Next.js 官方在 2026 年 8 月 25 日提前發布安全更新,建議使用 Next.js 16.3.3(Active LTS)或 15.5.24(Maintenance LTS)。這次不是只有一個套件版本號變動,而是同時處理 Windows-hosted server 的遠端程式碼執行風險,以及 Image Optimization API 處理 AVIF 時的另一個 Critical 漏洞。

先做的事很簡單:找出 production 實際解析到的 next 版本,依所在 major 升到對應 patch,重新產生 lockfile 與部署映像,再確認 next/image 的圖片流程。不要只更新本機 package.json,也不要把兩個漏洞誤當成只影響 Windows 的同一個問題。

先分清楚兩個漏洞的條件#

兩個官方 GitHub advisory 的受影響面不同,但修補版本相同:

風險受影響條件官方修補版本
Windows-hosted RCE(CVE-2026-75604)使用 Pages 與 App Router、未使用 Cache Components,且伺服器使用 Windows filesystem;受影響範圍包含 >=13.4 <15.5.24>=16.0 <16.3.315.5.2416.3.3
AVIF Image Optimization RCEImage Optimization API 需要處理 AVIF;受影響範圍包含 >=10.0.0 <15.5.24 與 16.x 中低於 16.3.3 的版本15.5.2416.3.3

第一個 advisory 是 Critical、CVSS 9.0,且官方明確表示受影響的 Windows 部署沒有已知 workaround,應直接升級。第二個 advisory 是 Critical、CVSS 9.5,問題來自 Next.js 使用的 sharplibheif 圖片處理鏈;在修正完整傳遞前,修補版本會停用 AVIF optimization。

因此,Linux 部署不能只因為「不是 Windows」就跳過更新:它可能仍然提供 Image Optimization API,或未來切換圖片格式。反過來,Windows 開發機也不等於 production 一定符合第一個漏洞條件,判斷時要看實際部署主機、路由模式與圖片流程。

先查 production 會用到哪個 Next.js#

先在 repository 和建置環境各查一次。package.json 的宣告版本不一定等於 lockfile 或實際安裝版本:

Terminal window
pnpm list next --depth 0
pnpm why next
rg -n '"next"\s*:' package.json pnpm-lock.yaml

如果使用 npm,對應檢查是:

Terminal window
npm ls next --depth=0

接著確認部署映像不是從舊的 lockfile 或快取安裝。CI 至少要保留 pnpm install --frozen-lockfile(可參考 pnpm frozen lockfile 錯誤的排查順序),並把 pnpm list next --depth 0 的結果放進可追蹤的 build log。

依 major 選擇升級指令#

如果專案在 Next.js 15,先升到 maintenance patch;如果已在 Next.js 16,升到 active patch:

Terminal window
# Next.js 15
# Next.js 16
pnpm install --frozen-lockfile
pnpm build
pnpm list next --depth 0

上面兩個升級指令不要同時執行,依專案目前的 major 擇一。reactreact-dom 不需要因為這次 advisory 就盲目改成其他版本;只有在套件的 peer dependency 或 build 錯誤要求時,才把它們當成另一個可審查的變更。

如果目前版本低於官方 advisory 的最低範圍,或需要跨 major,先讀對應 migration guide,再拆成獨立變更。安全更新的目標是得到一個可驗證的 patch,不是把不相關的 framework migration 一起塞進同一個 deploy。

Windows 風險要在部署主機判斷#

第一個漏洞的關鍵是 production server 的 filesystem,不是你在 macOS 或 Linux 上編輯程式碼。可在實際部署映像或主機確認:

Terminal window
node -p "process.platform"
pnpm list next --depth 0

另外盤點專案是否同時使用 app/pages/,以及是否有 Cache Components 的設定。若無法在部署環境可靠判斷,應先完成 patch 升級,再依官方 advisory 重新核對,而不是把「本機能 build」當成風險已消失。

AVIF 要另外檢查圖片處理路徑#

第二個漏洞的判斷點是 Image Optimization API 是否會處理 AVIF。搜尋圖片設定、next/imagesharp 和明確的 AVIF format:

Terminal window
rg -n 'next/image|images|formats|avif|sharp' \
app pages next.config.* package.json

修補後要確認:

  1. 需要優化的 JPEG、PNG 或 WebP 仍能正常回應。
  2. 專案若原本依賴 AVIF optimization,前端有可接受的 fallback,而不是默認圖片一定會回傳 AVIF。
  3. next/image 的 remote patterns、loader 與 CDN cache 沒有把舊的錯誤輸出繼續保存。
  4. 對實際 production URL 做一次圖片請求,確認 status、Content-Type、尺寸與快取標頭。

不要自行尋找方式重新啟用被停用的 AVIF optimization。官方 advisory 說明停用是等待底層修正傳遞期間的保護措施;若你的產品必須使用 AVIF,應追蹤 Next.js 與 sharp 的後續 release,再安排另一個有測試的變更。

CI 與部署後驗證清單#

把更新拆成可回溯的四段,能避免「本機修好了、production 還是舊版」:

  1. 依賴解析:檢查 package.json、lockfile 和安裝後的 next 版本都落在 15.5.2416.3.3
  2. 建置:用乾淨的依賴安裝執行 pnpm build,不要只跑 dev server。
  3. 映像與程序:重新建置並發布 server image,重啟所有 instance;若平台有 dependency manifest,確認它也指向新的 patch。
  4. 請求抽查:各抽查一條 Pages Router、App Router 和圖片最佳化請求;Windows 部署再確認主機平台與 Cache Components 條件。

若部署平台會快取 Docker layer 或 build artifact,先確認 cache key 包含 lockfile。否則即使 Git diff 已經出現 15.5.24,執行中的程序仍可能載入舊的 next

常見問題#

Q: 我使用 Linux,還需要升級嗎?#

A: 需要。Linux 可能不符合 Windows-hosted RCE 的條件,但只要 Image Optimization API 會處理 AVIF,就仍應處理第二個 Critical 漏洞;而且官方針對這次 release 的建議是升到 16.3.315.5.24

Q: 只把 next 更新到 package.json 就完成了嗎?#

A: 不算。還要更新 lockfile、用 frozen install 重建、確認實際解析版本,並重新部署所有 instance。最可靠的證據是 production build log 與執行環境的套件清單,而不是單一檔案的文字 diff。

Q: AVIF 被停用後,圖片會全部壞掉嗎?#

A: 不一定。停用的是 AVIF optimization,不代表所有 next/image 都失效;但依賴 AVIF 輸出的頁面可能改用其他格式或 fallback。請在部署後檢查實際 Content-Type 與圖片顯示,不要只看 build 是否成功。

參考資料:

Next.js Blog:August 2026 Security Release

GitHub Advisory:Windows-hosted servers(GHSA-p293-qw3h-jr36)

GitHub Advisory:Image Optimization API 與 AVIF(GHSA-2xp9-vwfh-vxw4)

Next.js 2026 年 8 月安全更新怎麼處理?升級 16.3.3/15.5.24
https://laplusda.com/posts/nextjs-august-2026-security-release/
作者
Zero
發佈於
2026-08-28
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。