
Next.jsに「ログインなしで乗っ取れる」重大な脆弱性。修正版から2週間、PoCらしきコードも出てきたので、まだの人は16.4.1/15.5.28へ
ざっくり3行で言うと
Next.jsが10月14日、臨時のセキュリティ更新を出した。うち2件は認証なしでサーバー上のコードを実行されうる「Critical」
修正版は16.4.1と15.5.28。use cacheの問題には回避策がなく、アップデートするしかない
悪用の報告はまだないが、GitHubにPoCらしきコードが出始めたとの指摘も。15系は画像処理ライブラリsharpのバージョンも要確認
おはようございます。元古着店員、今はエンジニアのAliです。今日は、Next.jsでサイトを作っている人、作ってもらった人にぜひ確認してほしい話です。
何が起きたか
Next.jsを開発するVercelは10月14日、定例とは別の臨時セキュリティ更新を公開しました。9月の定例リリースで、依存ライブラリ側の準備が間に合わず見送られていた修正を含むものです。修正版は16.4.1(Active LTS)と15.5.28(Maintenance LTS)で、公式ブログは「すぐにアップデートしてほしい」と呼びかけています。
直された問題は3つです。1つ目は、App RouterでCache Componentsを使い、「use cache」関数が複数の型付き配列を返す場合に、認証なしでリモートコード実行(RCE)につながるもの。深刻度はCriticalで、影響は16.0.0〜16.4.0です。公式は「既知の回避策はない」とし、該当する関数がなくてもアップデートするよう求めています。
2つ目は、画像最適化APIでSVGを扱うときのRCE(CVE-2026-96889)です。原因は画像処理に使われる上流ライブラリのメモリの不具合で、glibc系のLinuxで動かしている場合に影響します。こちらもCriticalです。Next.jsは標準ではSVGを最適化しないため、主にSVGの最適化を有効にしている場合が対象です。3つ目は、Server Actionsを使うApp Routerアプリに細工したリクエストを送り、CPUを使い切らせてサービスを止めるもの(High)です。Pages RouterだけのアプリやServer Actionsを使っていないアプリは影響を受けません。
何が変わるのか
修正版が出てから2週間たち、状況が少し進みました。セキュリティ企業Brandefenseの10月23日の記事によると、Server ActionsのDoSには10月22日にCVE番号(CVE-2026-94482)が付きました。一方で、use cacheのRCEにはまだCVE番号がありません。The Hacker Newsも、CVEがない問題はnpm auditなどの依存関係チェックで見つからない可能性があると指摘しています。「スキャナーが何も言わないから大丈夫」とは言えない状態です。
また同記事は、GitHubにuse cacheとSVGの脆弱性のPoC(攻撃を再現するコード)らしきリポジトリが出てきたと書いています。記事の筆者は中身を検証しておらず、本物かは分かりません。VercelもReactも、現時点で悪用は確認していないとしています。
もう一つの落とし穴が、15系の画像処理です。15.5.28に上げても、古いロックファイルのままだとsharpが0.34系に残る場合があるそうです。SVGの問題を防ぐにはsharpが0.35.5以上である必要があります。
まだ続く:11月3日に次の修正、Node.js側にも
Next.jsは10月27日、次の定例セキュリティリリースを11月3日(米国時間、火曜)に出すと予告しました。中身は「中程度(medium)の脆弱性7件」で、影響や対象バージョンはリリースと同時に公開するそうです。Next.jsは7月から毎月の定例リリースに切り替えていて、9月は定例と臨時で2回、10月も臨時の更新が1回ありました。今回16.4.1に上げても、来週また上げることになります。
Next.jsが動く土台のNode.jsでも、10月21日にセキュリティ修正版(26.12.1/24.22.1/22.23.4)が出ています。いちばん重いのは、Brotliで圧縮されたデータを展開するときの範囲外書き込み(CVE-2026-111497、High)です。原因はGoogleのbrotliライブラリ側にあり、Node.js以外のソフトにも影響しうると指摘されています。20系以前はサポートが終わっていて、修正版は出ません。Next.jsだけ上げても、Node.jsが古いままでは片手落ちです。
現役エンジニアから見てどうか
Next.jsは、個人のブログから会社のサービスまで使われているフレームワークです。自分で作った覚えがなくても、外注したサイトや社内ツールの裏で動いていることはよくあります。今回の2件のCriticalは、どちらも「ログインしていない第三者が、サーバーの上で好きなコードを動かせる」タイプです。サーバーにDBの接続情報やAPIキーが置いてあれば、それごと持っていかれる可能性があります。
実際にやることはシンプルで、16系なら16.4.1以上、15系なら15.5.28以上に上げて、作り直してデプロイし直すことです。そのうえで、本番で動いているコンテナの中で「npm ls sharp」を実行し、0.35.5以上になっているか確かめます。package.jsonを書き換えただけで満足せず、「本番で実際に動いているもの」を見るのが大事だと思います。
少し気になるのは、修正が出てからの2週間で、Next.js本体の更新が16.4.2、16.4.3とさらに続いていることです。セキュリティ修正が入った版の上にバグ修正が積まれていくので、「とりあえず16.4.1で止める」より、LTSの最新に寄せておくほうが後が楽だと思います。
一言感想
古着屋時代、値札の付け替えを忘れた1着だけが、なぜか一番に売れてしまうことがありました。アップデートも「あのサイトだけ忘れてた」が一番危ないので、今日は自分が関わっているNext.jsのサイトを全部書き出してみるつもりです。
▼ AIに仕事を任せるときの指示ルールはこちら(有料) 完成したプロンプトはない。Claude Codeに任せて失敗するたびに増えていった「指示のルール」、全部見せます(800円)
https://note.com/ali_archive/n/nab97438b2e51
出典
Next.js:Next.js Security Update for Upstream Vulnerabilities
https://nextjs.org/blog/nextjs-security-update-october-14-2026GitHub(vercel/next.js):GHSA-673q-mjm6-r5xr
https://github.com/vercel/next.js/security/advisories/GHSA-673q-mjm6-r5xrThe Hacker News:Next.js Ships Out-of-Band Patch for Two Critical RCE Flaws in Caching and SVG Processing
https://thehackernews.com/2026/10/nextjs-ships-out-of-band-patch-for-two.htmlBrandefense:Next.js RCE Vulnerability: Check Your Patch
https://brandefense.io/security-news/next-js-rce-flaws-check-patch-landed/Next.js:Upcoming Next.js November Security Release
https://nextjs.org/blog/upcoming-nextjs-security-release-november-2026Astra:Node.js Security Release (October 2026)
https://www.getastra.com/blog/security-advisory/node-js-security-release/oss-security:Re: Upcoming Node.js security release 2026/10/21
https://www.openwall.com/lists/oss-security/2026/10/23/25