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件の深刻度と影響が出る条件
| アドバイザリ | 深刻度 | 起きること | 影響が出る条件 | 影響を受けるバージョン |
|---|---|---|---|---|
| GHSA-673q-mjm6-r5xr | Critical(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-jv5r | High(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つの項目と順番
- バージョン。プロジェクトでnpm ls nextを実行し、インストールされている版がアドバイザリの範囲に入るかを見ます
- ルーター。appディレクトリでページを作っていればApp Router、pagesディレクトリならPages Routerです。両方を併用しているプロジェクトもあります
- 使っている機能。Server Actions("use server")、"use cache"、next/imageによる画像最適化、middleware(16系ではproxy)を使っているかを、コードを検索して確かめます
- 配信方法。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の処理の欠陥で認証なしにコードを実行でき、実際に悪用されました。どちらも、構成によって影響が分かれた例です。
| 脆弱性 | 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(大規模言語モデル)を使った脆弱性の発見が増えたことがあると書かれています。緊急のものや悪用が確認されたものは、これまでどおり臨時で修正されます。
| 公開日 | 種類 | 修正版 |
|---|---|---|
| 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つの段階に分けて進めます。影響なしと判断した場合も、同じ流れで更新します。
| 段階 | やること | 記録しておくこと |
|---|---|---|
| 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開発会社などに関するコラム
- human in the loop(ヒューマンインザループ)とは?AI駆動開発で人が握る判断
- PHPの脆弱性にどう対応する?更新を追えないPHPサイトをReact・Next.jsで作り直す判断基準
- Jev実装事例|TypeSafe AIのSystem Oneモデルで自由記述を採点するAIゲーム「AI Guessr」を作った話
- FDE(Forward Deployed Engineer)とは?AI導入を定着させる伴走型エンジニアと受託・SESとの違い
- ヘッドレスCMSに強いWebシステム開発会社の選び方と依頼の流れ
- アプリ開発の企画から設計までシステム開発会社選びで差がつくポイント
- システム開発会社が解説するAIチャット導入の成果を出す進め方
- システム受託会社が伝えるWebスクレイピングの始め方と活用のコツ
- システム受託会社にアプリ開発を依頼する際の企画から機能選定までの進め方
- AIシステムの受託会社選びで差がつく業務効率化とDX成功の進め方
- AIエージェントで変わるWeb業務の自動化についてAI開発会社が解説
- 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・アプリのシステム開発、自社サービス開発 |
| URL | https://gintrick.com/ |
Contact
お問い合わせ
弊社事業に関するご質問・資料請求、メディア掲載などのお問い合わせはこちらから。
どなたでも気軽にご相談ください。

