【2026年最新】React・Next.jsの重大な脆弱性を解説!RCE・DoS・SSRFの影響と対策

2026年、ReactとNext.jsにおいて複数のセキュリティ脆弱性が報告されました。

特に2026年10月14日には、Next.jsで認証不要のリモートコード実行(RCE)につながる重大な脆弱性が2件、サービス拒否攻撃(DoS)につながる脆弱性が1件公表されています。

Webアプリケーションを開発しているエンジニアにとって、無視できない問題です。

本記事では、2026年に報告された主な脆弱性について、具体的なコードやシステム構成を交えながら解説します。

※本記事は2026年10月21日時点の公式情報に基づきます。

1. React・Next.jsのどこに脆弱性があるのか?

まず、ReactとNext.jsの違いを簡単に整理します。

  • React:ユーザーインターフェースを構築するJavaScriptライブラリ
  • Next.js:Reactをベースに、サーバー側でのレンダリングやルーティングなどを提供するフレームワーク

一般的なReactのSPA(Single Page Application)では、ブラウザ上でJavaScriptを実行し、バックエンドAPIからデータを取得します。

一方、Next.jsではサーバー側でコンポーネントを実行することも可能です。

例えば、Spring Bootと組み合わせた場合、次のような構成が考えられます。

React SPAの場合

[ブラウザ]
    |
    | Reactを実行
    |
    | HTTPリクエスト
    v
[Spring Boot API]
    |
    v
[データベース]

Next.jsの場合

[ブラウザ]
    |
    | HTTPリクエスト
    v
[Next.jsサーバー]
    | React Server Components
    | Server Actions
    |
    | APIリクエスト
    v
[Spring Boot API]
    |
    v
[データベース]

Next.jsでは、JavaScriptの処理がブラウザだけでなくサーバー上でも動作します。

今回報告された重大な脆弱性には、こうしたサーバー側の処理に関係するものがあります。

ただし、Reactを使用しているすべてのアプリケーションが影響を受けるわけではありません。

特にReact Server Components(RSC)を使用しているかどうかが重要な判断材料となります。

2. 2026年に報告された主な脆弱性一覧

2026年には以下のような脆弱性が公表されています。

公表時期脆弱性ID内容
1月26日CVE-2026-23864React Server ComponentsのDoS
5月6日CVE-2026-23870React Server ComponentsのDoS
9月30日CVE-2026-94483画像最適化におけるSSRF
9月30日CVE-2026-94543SSG・ISRのキャッシュ汚染
10月14日GHSA-673q-mjm6-r5xruse cacheを利用したRCE
10月14日CVE-2026-96889SVG画像処理によるRCE
10月14日GHSA-p3m5-59mp-jv5rServer ActionsのDoS

※代表的な脆弱性の抜粋であり、2026年に報告されたすべての問題を網羅したものではありません。また、GHSAはGitHub Security Advisoryの識別子であり、必ずしもCVE番号が割り当てられているとは限りません。

ここからは特に重要な脆弱性を具体例で確認していきます。

3. 脆弱性① use cacheによるリモートコード実行(RCE)

識別子:GHSA-673q-mjm6-r5xr

深刻度:Critical(CVSS v4.0:9.5)

2026年10月14日に公表された、Next.js 16系の重大な脆弱性です。

RCEとは?

RCE(Remote Code Execution)は、攻撃者がネットワーク越しに対象サーバーで不正なコードを実行できる問題です。

例えば、Webサーバーが侵害された場合、そのプロセスに与えられた権限の範囲で、ファイルや環境変数などにアクセスされる可能性があります。

use cacheとは?

Next.jsには、処理結果をキャッシュして再利用するためのuse cacheという仕組みがあります。

例えば、次のコードを考えてみましょう。

// app/lib/image-data.ts

export async function getImageData(label: string) {
  'use cache'

  return {
    label,
    header: new Uint8Array([1, 2, 3]),
    pixels: new Uint8Array([4, 5, 6])
  }
}

use cacheを指定することで、関数の戻り値をキャッシュできます。

Uint8Arrayは、バイナリデータを扱うための型付き配列(TypedArray)です。

今回の脆弱性では、複数の型付き配列と攻撃者が制御できる値を含むデータを、React Server Componentsの通信で扱う特定の条件が問題となります。

上記は条件をイメージするためのサンプルコードです。このコードを記述するだけで攻撃が成功するという意味ではありません。

どのような被害が考えられる?

脆弱なNext.jsサーバーで条件が成立した場合、細工されたリクエストによって、意図しないサーバー側のコード実行につながる可能性があります。

例えば、Next.jsをAWS上のコンテナで実行していた場合、コンテナに設定された認証情報や環境変数が攻撃の影響を受けるおそれがあります。

ただし、実際の被害はアプリケーションの構成や実行権限によって異なります。

影響を受けるバージョン

  • Next.js 16.0.0〜16.4.0
  • 修正版:Next.js 16.4.1

公式アドバイザリでは、明確な回避策はなく、アップデートが推奨されています。

4. 脆弱性② SVG画像処理によるRCE

CVE-2026-96889

深刻度:Critical(CVSS v4.0:9.5)

こちらも2026年10月14日にNext.js向けの修正が公表された重大な問題です。

原因となる脆弱性は、画像処理に利用されるライブラリの内部に存在します。

具体例:画像アップロード機能

例えば、ユーザーが画像をアップロードできるWebアプリケーションを考えます。

[ユーザー]
    |
    | SVG画像
    v
[Webアプリケーション]
    |
    v
[Next.js画像最適化]
    |
    v
[sharp / 画像処理ライブラリ]
    |
    v
[最適化された画像]

Next.jsでは、画像の最適化にsharpというライブラリが利用されます。

今回の問題では、SVGの処理に使われる下位ライブラリのメモリ関連の脆弱性により、特定の条件下でRCEが発生する可能性があります。

例えば、攻撃者が細工したSVGを画像最適化処理に読み込ませ、脆弱な処理経路を通過した場合に問題となります。

重要なのは、通常のSVG画像を表示するだけで必ず攻撃が成立するわけではないことです。

特に注意する環境

公式アドバイザリでは、glibcベースのLinuxでNext.jsを実行する場合が対象として説明されています。

例えば、Debian系のNode.jsコンテナなどで運用する場合、画像処理ライブラリのバージョンを確認する必要があります。

対策

Next.jsを修正版に更新します。

# Next.js 15.5系列
npm install next@15.5.28

# Next.js 16.4系列
npm install next@16.4.1

また、Next.jsが実際に使用しているsharpが0.35.5以上であることを確認します。

npm ls sharp

Next.jsを更新しただけで安心せず、ロックファイルや依存ライブラリの解決結果も確認しましょう。

5. 脆弱性③ Server ActionsによるDoS攻撃

識別子:GHSA-p3m5-59mp-jv5r

深刻度:High(CVSS v4.0:8.2)

こちらも2026年10月14日に公表された脆弱性です。

DoS攻撃とは?

DoS(Denial of Service)は、サーバーの処理能力などを消費させ、正常なサービス提供を妨害する攻撃です。

今回の問題では、細工されたHTTPリクエストによってCPU使用率が過剰に上昇し、同じプロセスで後続のリクエストを処理できなくなる可能性があります。

Server Actionsとは?

Next.jsでは、'use server'を指定することで、サーバー側で実行する関数を定義できます。

例えば以下のようなコードです。

// app/actions.ts

'use server'

export async function saveSetting(formData: FormData) {
  const theme = String(
    formData.get('theme') ?? 'light'
  )

  // 設定をDBに保存する処理を想定

  return {
    success: true,
    theme
  }
}

通常は、ユーザーから送信されたフォームデータを受け取り、サーバー側で保存処理などを実行します。

今回の脆弱性は、こうしたServer Actionsを持つアプリケーションに対して細工されたリクエストを送ることで発生します。

なお、上記のアプリケーションコードそのものに無限ループがあるわけではありません。

問題は、フレームワーク内部でリクエストを処理する部分にあります。

被害のイメージ

[攻撃者]
    |
    | 細工されたHTTPリクエスト
    v
[Next.jsサーバー]
    |
    | CPU使用率が過剰に上昇
    |
    v
[正常なユーザー]
    |
    | 画面の読み込みが遅い
    | リクエストが処理されない
    v
[サービス利用が困難]

公式情報では、Pages Routerのみを利用するアプリケーションや、Server Actionsを使用していないアプリケーションは、この脆弱性の対象外です。

修正版はNext.js 15.5.28および16.4.1です。

6. 脆弱性④ 画像最適化によるSSRF

CVE-2026-94483

2026年9月30日には、Next.jsの画像最適化処理に関するSSRF(Server-Side Request Forgery)も公表されています。

SSRFとは?

SSRFとは、攻撃者がサーバーに意図しないネットワークリクエストを送信させる脆弱性です。

例えば、以下のシステム構成を考えます。

[インターネット]
       |
       v
[Next.jsサーバー]
       |
       | 内部APIへの通信
       v
[Spring Boot API]
       |
       v
[データベース]

Spring BootのAPIはインターネットから直接アクセスできない構成だとします。

しかし、Next.jsサーバーからは内部APIにアクセスできる場合があります。

このときSSRFが成立すると、Next.jsを経由して本来想定していない内部ネットワークへのアクセスが発生する可能性があります。

今回の問題では、images.remotePatternsで許可した外部画像URLを攻撃者が制御できる場合に、画像最適化処理がSSRFにつながる可能性があるとされています。

公式情報では、images.remotePatternsを設定していないアプリケーションは対象外です。

対策の考え方

フレームワークの更新に加えて、次のような対策も重要です。

  • 外部画像の取得先を必要最小限に制限する
  • URLやリダイレクト先の検証を行う
  • サーバーから内部ネットワークへの不要な通信を制限する
  • AWS環境ではネットワーク構成やIAM権限を適切に設定する

Spring BootなどのバックエンドAPIを非公開にしている場合でも、フロントエンドサーバーからのアクセス経路を確認する必要があります。

7. 2026年1月・5月にもReact Server ComponentsのDoSが報告

2026年の脆弱性は、10月だけではありません。

React Server Componentsでは、以下のDoS脆弱性も公表されています。

CVE公表日深刻度
CVE-2026-238642026年1月26日High・CVSS 7.5
CVE-2026-238702026年5月6日High・CVSS 7.5

いずれも、細工されたHTTPリクエストにより、サーバーのCPUやメモリが過剰に消費される可能性がある問題です。

2025年12月にはReact2Shell(CVE-2025-55182)というRCE脆弱性が報告されていましたが、今回紹介した2026年公表分とは別の脆弱性です。

過去にReact2Shellへの対応を完了していても、2026年に追加で公表された脆弱性への対応が必要となる場合があります。

8. 自分のプロジェクトが影響を受けるか確認する方法

実務では、まず依存ライブラリのバージョンを確認しましょう。

① Next.jsとReactのバージョン確認

npm ls next react react-dom

② React Server Components関連の依存関係を確認

npm ls react-server-dom-webpack \
  react-server-dom-parcel \
  react-server-dom-turbopack

※Windowsのコマンドプロンプトでは改行せず1行で実行してください。

③ sharpのバージョン確認

npm ls sharp

10月14日のSVG関連の脆弱性については、sharpのバージョンも重要な確認項目です。

④ npm auditを実行

npm audit

既知の依存パッケージの脆弱性を確認できます。

ただし、検出されないことが安全性の保証になるわけではありません。公式アドバイザリと実際の使用機能を照らし合わせる必要があります。

⑤ アップデート後の動作確認

Next.jsのバージョンを更新した後は、以下を実行します。

npm run build

併せて、画面表示、Server Actions、画像表示、キャッシュ処理など、アプリケーションの主要な機能を確認してください。

Docker環境であれば、修正済みの依存関係を使ってイメージを再ビルドし、デプロイする必要があります。

また、package-lock.jsonなどのロックファイルが更新されていることも確認しましょう。

9. Reactだけ利用している場合も対応が必要?

Reactだけで構築したSPAの場合はどうでしょうか。

例えば、ReactをViteでビルドし、ブラウザからSpring BootのREST APIを呼び出す構成です。

[React SPA]
    |
    | fetch / axios
    v
[Spring Boot API]

このようにReact Server Componentsを使用しない構成であれば、今回紹介したReact Server Components固有の脆弱性には該当しません。

一方、Next.jsを使っていても、App RouterやServer Actionsなどの使用状況によって影響が異なります。

重要なのは、ReactかNext.jsかという名前だけでなく、実際にどの機能を利用しているかを確認することです。

もちろん、対象外だったとしても、Reactや周辺ライブラリのアップデート管理は引き続き必要です。

10. まとめ

2026年に報告されたReact・Next.jsの主な脆弱性について紹介しました。

特に2026年10月14日に公表された以下の3件は、Next.jsを利用する開発者にとって重要です。

  • use cacheに関連するリモートコード実行
  • SVG画像最適化に関連するリモートコード実行
  • Server Actionsに関連するDoS攻撃

Next.jsの修正版として、15.5.28および16.4.1が公開されています。

React Server Components関連のパッケージについては、2026年10月14日の修正が19.0.9、19.1.10、19.2.9、19.3.1で提供されています。

既に修正済みのバージョンを使用している場合も含め、依存ライブラリのバージョンと実行環境を確認しましょう。

また、今回の脆弱性からは、フロントエンドの技術であってもサーバー上で処理が実行されることがあり、バックエンドと同じようなセキュリティ対策が必要になることがわかります。

アプリケーションの安全性を維持するためにも、フレームワークやライブラリの脆弱性情報を定期的に確認しておくことが大切です。

参考情報

是非フォローしてください

最新の情報をお伝えします

類似投稿