Next.js脆弱性の確認方法と対応:構成で影響を見分ける

影響の有無は構成で決まる。更新は構成によらず続ける

2026年10月14日、Next.jsは臨時のセキュリティリリースとして16.4.1と15.5.28を公開し、深刻度CriticalとHighの脆弱性を合わせて3件修正しました。16.4.0からは、脆弱な版のままnext buildを実行すると、更新を促す通知が出ます。

当社のこのサイトもNext.jsで動いており、10月30日のビルドがこの通知で止まりました。3件はいずれも、使っている機能と配信の構成によって影響の有無が分かれます。当社の構成では3件とも影響しないと判断し、そのうえでNext.jsを更新しました。

この記事の要点

  • 2026年10月14日の3件は、App Routerの「use cache」、Image Optimization APIでのSVGの処理、App RouterのServer Actionsが条件です。修正版は16.4.1と15.5.28です。
  • 影響を受けるかは、バージョン・ルーター・使っている機能・配信方法の順に確認すると見分けられます。npm auditはバージョンの範囲で判定するため、構成上は影響しないサイトでもCriticalと表示します。
  • 当サイト(Pages Router・静的エクスポート・Firebase Hosting)は3件とも影響なしと判断しました。1件は仕様からの推論で判断したため、更新もしています。
  • Next.jsは2026年7月から、予告付きの定例セキュリティリリースをおおむね月1回出しています。予告が出たら、更新する日を先に決めてください。

Next.jsの脆弱性とは?2026年10月14日のセキュリティアップデート3件

Next.jsの脆弱性は、Next.js本体のほか、内部で使っているReactや画像処理ライブラリの不具合からも生じます。今回の3件はいずれも上流の依存ライブラリに原因があり、Next.jsの開発元は10月8日にブログで予告したうえで、10月14日に修正版を出しました。予告によると、3件のうち2件は9月の定例リリースから延期されたものです。

修正された3件の深刻度と影響が出る条件

2026年10月14日に修正されたNext.jsの脆弱性(出典: vercel/next.jsのセキュリティアドバイザリ)
アドバイザリ深刻度起きること影響が出る条件影響を受けるバージョン
GHSA-673q-mjm6-r5xrCritical(CVSS v4で9.5)認証なしでのリモートコード実行App RouterとCache Componentsを使い、複数の型付き配列を返す「use cache」関数がある16.0.0〜16.4.0
GHSA-2464-fhr4-w9xw(CVE-2026-96889)Critical(CVSS v4で9.5)リモートコード実行の可能性Image Optimization APIでSVGを扱い、Next.jsがglibc系のLinux上で動いている。原因は画像処理ライブラリsharpの配下にある10.0.0〜15.5.27、16.0.0〜16.4.0
GHSA-p3m5-59mp-jv5rHigh(CVSS v4で8.2)CPUを使い切らせるサービス妨害(DoS)App Routerで、Server Actionsを1つ以上使っている13.0.0〜15.5.27、16.0.0〜16.4.0

修正版は、Active LTS(長期サポート)の16.4.1と、Maintenance LTSの15.5.28です。10月14日の公式ブログの告知は、npm install next@16.4.1での更新を推奨しています。「use cache」の件については、アドバイザリに回避策がなく、「該当する関数がなくても直ちに更新するように」と書かれています。

画像処理の件は、影響を受ける範囲が10.0.0からと広い一方、修正版が出たのは15系と16系だけです。14系以前で動いているサイトは、メジャーバージョンを上げないと修正版に届きません。

JPCERT/CCとIPAでの扱い

JPCERT/CC(JPCERTコーディネーションセンター)は2026年10月21日のWeekly Reportで「Next.jsに複数の脆弱性」を取り上げ、CVE-2026-96889の概念実証コードが公開されていることを確認したと書きました。対策は修正版への更新です。ただしWeekly Reportの一項目で、単独の注意喚起としては出ていません。IPA(情報処理推進機構)の「重要なセキュリティ情報」にも、今回のNext.jsの項目はありません。

公的機関の注意喚起が出ていないことは、更新しなくてよい理由にはなりません。概念実証コードが公開されている以上、条件に当てはまるサイトは攻撃の手順が手に入る状態にあります。

Next.js脆弱性の確認方法:自分のサイトが影響を受けるかを見分ける

Next.jsのアドバイザリには、影響を受けるバージョンと、影響が出る条件の両方が書かれています。バージョンが範囲に入っていても、条件にある機能を使っていなければ影響しない脆弱性があります。

確認する4つの項目と順番

  1. バージョン。プロジェクトでnpm ls nextを実行し、インストールされている版がアドバイザリの範囲に入るかを見ます
  2. ルーター。appディレクトリでページを作っていればApp Router、pagesディレクトリならPages Routerです。両方を併用しているプロジェクトもあります
  3. 使っている機能。Server Actions("use server")、"use cache"、next/imageによる画像最適化、middleware(16系ではproxy)を使っているかを、コードを検索して確かめます
  4. 配信方法。Vercelなどのホスティング、next startやstandaloneでのセルフホスト、output: 'export'による静的エクスポートのどれかを、next.config.jsと公開先の設定で確かめます

静的エクスポートでは、Next.jsの公式ドキュメントにあるとおり、Server Actions、既定のローダーでの画像最適化、proxy(旧middleware)が使えません。公開中のサイトでNext.jsのサーバーが動かないためです。

構成ごとの影響:過去の脆弱性を含む5件の比較

今回の3件に、2025年の重大な2件を加えて並べました。2025年3月のCVE-2025-29927は、内部用のヘッダーを付けるだけでmiddlewareの認可を素通りできた脆弱性です。2025年12月のReact2Shell(CVE-2025-55182)は、React Server Componentsの処理の欠陥で認証なしにコードを実行でき、実際に悪用されました。どちらも、構成によって影響が分かれた例です。

構成ごとの影響(各アドバイザリ、Vercelのポストモーテム、JPCERT/CCの注意喚起、Next.jsのドキュメントより)
脆弱性App Router(サーバーで動かす)Pages Router(サーバーで動かす)静的エクスポート
use cacheのリモートコード実行(2026年10月)影響あり。公式は該当する関数がなくても更新を求めている条件のApp RouterとCache Componentsを使わないApp Routerで作っている場合は、アドバイザリに除外の記載なし
画像最適化のリモートコード実行(2026年10月)Image Optimization APIでSVGを扱うと影響ありImage Optimization APIでSVGを扱うと影響ありアドバイザリに記載なし。既定のローダーでの画像最適化が使えないため、当社は影響なしと判断した
Server ActionsのDoS(2026年10月)Server Actionsを使っていれば影響あり影響なしとアドバイザリに明記Server Actionsが使えない
CVE-2025-29927(middlewareの認可バイパス)next startやstandaloneでセルフホストしていると影響あり。Vercel・Netlify・Cloudflare Workersは影響なしと公式に明記影響なしと公式に明記
React2Shell(CVE-2025-55182)影響あり影響なしとJPCERT/CCの注意喚起に明記記載なし

表の中で「明記」と書いた欄は、アドバイザリや公式の文書に書かれていることです。それ以外は、条件と構成を照らし合わせた判断です。自社のサイトで判断するときも、この2つを分けて記録してください。

npm auditで分かること・分からないこと

当社は2026年10月30日、Next.js 16.4.0のままの当サイトでnpm auditを実行しました。nextはCriticalとして報告され、今回の3件のアドバイザリがすべて表示されました。影響範囲は「16.0.0から16.4.0」で、修正できる更新があるとも表示されました。

npm auditはインストールされた版がアドバイザリの範囲に入るかで判定し、ルーターや配信方法は見ません。当サイトのように構成上は影響しないサイトでも、Criticalのまま残ります。逆に、npm auditの結果だけで「影響なし」とも「影響あり」とも決められないため、前の項の4項目と合わせて判断します。

gintrick.comのNext.js脆弱性対応:影響がない構成でも更新した理由

ノートパソコンとメモを使って作業内容を確認している机の上

ここからは、当サイトで10月30日に行った対応です。判断の根拠のうち、公式に書かれていることと、当社の推論とを分けて書きます。

当サイトの構成

当サイトはNext.jsのPages Routerで作り、next.config.jsでoutput: 'export'を指定して静的なHTMLを書き出しています。書き出したファイルはFirebase Hostingから配信しており、本番でNext.jsのサーバーは動いていません。App Router、Server Actions、use cache、middleware、next/imageによる画像最適化は使っていません。

next buildが更新の通知で止まった

当社はClaude Codeなどのコーディングエージェントと一緒にサイトを更新しています。10月30日、エージェントが実行したnext buildが最初の更新通知で止まり、Next.js 16.4.0が既知の脆弱性の影響を受けると表示されました。同じコマンドをもう一度実行すると、警告を出したうえでビルドが最後まで通りました。

ビルドが止まったことで、この日のうちに3件のアドバイザリを読む作業に入れました。人が端末で実行していれば、10秒の通知が出るだけでビルドは止まりません。

3件をどう切り分けたか

  • Server ActionsのDoSは、アドバイザリに「Pages RouterまたはServer Actionsを使わないアプリは影響を受けない」と書かれています。当サイトは両方に当てはまるため、影響なしと確定できました
  • use cacheのリモートコード実行は、条件がApp RouterとCache Componentsです。当サイトはApp Routerを使っていないため、条件に当てはまりません
  • 画像最適化のリモートコード実行は、アドバイザリに静的エクスポートについての記載がありません。静的エクスポートでは既定のローダーでの画像最適化が使えず、本番でNext.jsのサーバーも動かないことから、当社は影響なしと判断しました。これはNext.jsの仕様からの推論です。依存関係を確かめると、アドバイザリが回避策に挙げるsharp 0.35.5がすでに入っていました

影響がなくても16.4.3へ更新した理由

切り分けの結果は影響なしでしたが、2026年10月30日にNext.jsを16.4.0から16.4.3へ更新しました。理由は3つあります。

  • 画像最適化の件は推論で判断しており、公式の記載で確定していない
  • 脆弱な版のままにすると、ビルドのたびに通知が出て、npm auditにもCriticalが残る。次に対応が要る警告が出ても見分けにくくなる
  • 今の版から離れるほど、次の修正版へ上げるときの差分が大きくなる。同じ16.4系のうちに追いつくほうが確認が少なく済む

更新で変わったのはpackage.jsonとpackage-lock.jsonだけでした。更新後はnpm auditから今回の3件が消え、next buildも通知で止まらずに最後まで通りました。

Next.jsのセキュリティアップデートを追う仕組み

Next.jsには、修正版の予定を事前に知らせる仕組みと、手元で脆弱な版を使っていると知らせる仕組みの両方があります。どちらも2026年に始まったものです。

月1回の定例セキュリティリリースと事前の予告

Next.jsの開発元は2026年7月13日、「Next.js Security Release and Our Next Patch Release」で、セキュリティリリースの制度を始めると公表しました。おおむね月1回、ブログで予定日と最大の深刻度を予告してから修正版を出す制度です。背景には、LLM(大規模言語モデル)を使った脆弱性の発見が増えたことがあると書かれています。緊急のものや悪用が確認されたものは、これまでどおり臨時で修正されます。

2026年のNext.jsのセキュリティリリース(出典: nextjs.orgのブログ)
公開日種類修正版
7月21日定例(初回)-
8月25日定例16.3.3 / 15.5.24
9月30日定例16.3.8 / 15.5.27
10月14日臨時(10月8日に予告)16.4.1 / 15.5.28

9月30日の定例では、Pages RouterのSSG・ISRでセルフホストしている場合のキャッシュ汚染(CVE-2026-94543)も修正されました。今回Pages Routerが対象外だったことは、次のリリースでも対象外になることを意味しません。

next buildとnext devの更新通知(16.4.0から)

Next.js 16.4.0で、脆弱な版を使っているときに更新を促す機能(experimental.agentUpgrade)が加わり、既定で有効になっています。人が端末でnext buildやnext devを実行すると、「Upgrade now」「Skip」「Skip until next version」を選べる通知が10秒表示され、ビルドは止まりません。コーディングエージェントが実行したときは、最初の通知でコマンドが止まり、再実行すると警告付きで続行します。next devの画面に出る開発者ツールにも、脆弱性の情報が表示されます。

この機能は設定でfalseにすると止められます。当社は止めずに使っています。今回のように、ビルドが止まったことが更新作業を始めるきっかけになるためです。

next upgrade --agentで更新先の版を決める

実験的な機能として、next upgrade --agentがあります。方針に沿って更新先の版を決め、移行ガイドを用意してコーディングエージェントに作業を渡すコマンドです。securityの方針を選ぶと、今の版が脆弱な安定版であれば、対象となる最も近いメジャーバージョンの中で最新の安全な版を選びます。Pages Routerにも対応しています。

GitHubのアドバイザリとDependabot alertsで知る

アドバイザリの原文は、GitHubのvercel/next.jsのSecurityタブに、影響を受けるバージョンと修正版、条件付きで公開されます。自社のリポジトリをGitHubで管理しているなら、Dependabot alertsを有効にしてください。GitHub Advisory Databaseに新しい脆弱性が加わると、依存パッケージが該当するリポジトリに通知が届きます。

Next.js脆弱性への対応の進め方と更新を続ける体制

アドバイザリを読んでから公開するまでを、4つの段階に分けて進めます。影響なしと判断した場合も、同じ流れで更新します。

Next.jsの脆弱性に対応する4つの段階
段階やること記録しておくこと
1. 確認アドバイザリを読み、バージョン・ルーター・機能・配信方法の4項目で影響を切り分ける脆弱性ごとの判断と根拠。公式に明記されたことか、推論かを分ける
2. 更新npm install next@修正版のように版を指定して更新し、package-lock.jsonの差分を確かめる更新前と更新後の版
3. ビルドと動作確認ビルドが警告なしで通るか、主要なページの表示と問い合わせフォームが動くかを確かめる確かめたページと機能
4. デプロイ公開先に反映し、本番のページを開いて表示を確かめる公開した日時

更新を誰がいつ行うかを決めておく

今回の3件は、10月8日の予告から10月14日の公開まで6日ありました。予告が出た時点で、誰が影響を切り分け、どの日に更新するかを決めておくと、公開日には更新作業から始められます。月1回の定例を前提に、更新の担当者と、ビルドと動作確認の手順を決めてください。

制作会社にサイトを作ってもらった場合は、公開後の依存パッケージの更新が保守の契約に入っているかを確かめてください。入っていなければ、セキュリティリリースが出ても誰も更新しないまま時間が過ぎます。PHPで作られたサイトで同じ状況になったときの考え方は、PHPの脆弱性にどう対応するかを書いたコラムにまとめています。

Next.jsサイトの運用・更新ならGinTrick

GinTrickは、TypeScript・React・Next.jsによるWebサイト・Webアプリケーションを開発し、公開後の保守と機能追加まで支援しています。サイバーエージェント・ドワンゴ出身のエンジニアが設計段階から入り、成果物を検品します。開発の流れと事例はシステム開発のページでご覧いただけます。

今のNext.jsサイトが脆弱性の影響を受けるかの切り分けや、更新を続けるための手順づくりは、要件定義から運用保守まで支援するGinTrickの無料相談をご活用ください。

参考

Next.js「Next.js Security Update for Upstream Vulnerabilities」(2026年10月14日)
Next.js「Upcoming Next.js Security Update for Upstream Vulnerabilities」(2026年10月8日)
vercel/next.js GitHub Security Advisory「GHSA-673q-mjm6-r5xr」(2026年10月)
vercel/next.js GitHub Security Advisory「GHSA-2464-fhr4-w9xw」(CVE-2026-96889、2026年10月)
vercel/next.js GitHub Security Advisory「GHSA-p3m5-59mp-jv5r」(2026年10月)
JPCERT/CC「JPCERT/CC WEEKLY REPORT 2026-10-21」(2026年10月21日)
Next.js「Next.js Security Release and Our Next Patch Release」(2026年7月13日)
Next.js「September 2026 Security Release」(2026年9月)
Next.js Docs「agentUpgrade」
Next.js Docs「Upgrade with a coding agent」
Next.js Docs「How to create a static export of your Next.js application」
Vercel「Postmortem on Next.js Middleware bypass」(2025年3月)
JPCERT/CC「React Server Componentsの脆弱性(CVE-2025-55182)について」(2025年12月5日、2026年1月7日更新)
GitHub Docs「About Dependabot alerts」

【Q&A】Next.jsの脆弱性と対応についての解説

Q1.Next.jsの脆弱性とは何ですか?
A.Next.js本体や、Next.jsが内部で使うReact・画像処理ライブラリなどの欠陥のうち、悪用されるとサーバー上で任意のコードを実行されたり、サービスを止められたりするものです。Next.jsの開発元はGitHubのvercel/next.jsリポジトリで、GHSAから始まる番号のアドバイザリとして公開しています。アドバイザリには影響を受けるバージョン、影響が出る条件、修正版が書かれます。
Q2.自分のサイトのNext.jsのバージョンはどう確認しますか?
A.プロジェクトのディレクトリで npm ls next を実行すると、実際にインストールされているバージョンが表示されます。package.json の "^16.4.0" のような書き方は範囲の指定なので、実際の版と一致しないことがあります。next build を実行したときの最初の行にも、使われているNext.jsのバージョンが表示されます。
Q3.Vercelで動かしていれば、Next.jsの更新は不要ですか?
A.更新は必要です。2025年3月のmiddlewareの認可バイパス(CVE-2025-29927)では、Vercel上のサイトは影響を受けないと公式のポストモーテムに書かれました。一方、2026年10月14日に公開された3件のアドバイザリには、ホスティング先によって影響がなくなるという記載はありません。ホスティング先で影響が変わるかどうかは脆弱性ごとに違います。
Q4.静的エクスポートのサイトでも、Next.jsを更新する必要がありますか?
A.当社は更新しています。静的エクスポートでも、開発中の next dev やビルドの next build ではNext.jsが手元のパソコンやCIで動きます。2026年9月30日の定例リリースでは、next dev の開発用エンドポイントからの情報漏えい(CVE-2026-94486)が修正されました。公開中のサイトに影響しなくても、開発環境が対象になる脆弱性があります。
Q5.npm audit fix で更新してもよいですか?
A.npm audit fix は、検出したパッケージをまとめて更新します。Next.js以外のパッケージも同時に版が変わるため、何が変わったかを追いにくくなります。Next.jsだけを更新するなら、公式の告知どおり npm install next@16.4.1 のように修正版を指定し、package-lock.json の差分を確かめてからビルドしてください。
Q6.Next.jsを更新すると、サイトが動かなくなることはありますか?
A.メジャーバージョンをまたぐ更新では、設定や書き方の変更が要ることがあります。その場合はNext.jsの移行ガイドを読み、変更点を1つずつ反映します。同じ16系の中での更新でも、ビルドが通ること、主要なページの表示、問い合わせフォームなどの動作を確かめてから公開してください。
Q7.Next.jsサイトの脆弱性対応や保守をGinTrickに依頼できますか?
A.ご相談いただけます。GinTrickは、TypeScript・React・Next.jsによるWebサイト・Webアプリケーションの開発と、公開後の保守・機能追加を行っています。他社が作ったNext.jsサイトでも、構成を伺ったうえで、どの脆弱性が影響するかの切り分けからお手伝いします。

この記事を書いた人

代表取締役 米原 宏郎

米原 宏郎(株式会社GinTrick 代表取締役)

東京電機大学在学中から開発インターンを続け、2020年に株式会社サイバーエージェントへ新卒入社。グループのマッチングアプリのバックエンド開発で、新卒2年目から開発チームリーダーとして大型機能の刷新を納期内リリースまで導く。

2021年5月に株式会社GinTrickを創業し、2022年に本業化。代表取締役として、案件の獲得から要件定義・実装・デプロイ・運用までを一貫して担当する。ChatGPTを組み込んだアプリ「ペットの気持ちAI」の企画・実装を主導。現在はバックエンド・インフラを軸に、Claude Codeを中核としたAI駆動開発のハーネス整備と、その知見を提供する「AI駆動エンジニア講座」の運営責任者を務める。

Webシステム開発会社や受託会社・AI開発会社などに関するコラム

Next.jsサイトの運用・更新ならGinTrickへ

会社名株式会社GinTrick
代表者代表取締役 米原 宏郎
本社所在地〒150-0001 東京都渋谷区神宮前六丁目23番4号 桑野ビル2階
電話番号03-6388-1182
メールcontact@gintrick.com
設立2021年5月25日
資本金500万円
事業内容FDE(Forward Deployed Engineering)、Web・アプリのシステム開発、自社サービス開発
URLhttps://gintrick.com/

Contact

お問い合わせ

弊社事業に関するご質問・資料請求、メディア掲載などのお問い合わせはこちらから。
どなたでも気軽にご相談ください。

→