はじめに:ピクセル単位の完璧さより重要なもの
Web開発者であれば、一度は「ピクセルパーフェクト」という言葉にこだわった経験があるでしょう。デザインカンプと1pxも違ってはいけないというプレッシャー、ブラウザごとのレンダリング差異を修正するために夜を徹した記憶…。しかし2026年の今、私たちが本当に注力すべき「完全性」は別の場所にあります。
それはセキュリティです。
Vercelが2026年5月、Next.jsとReactエコシステムに対する大規模なセキュリティアップデートを発表しました。なんと13件もの脆弱性(CVE)が一度にパッチされ、その中にはサービス拒否(DoS)、ミドルウェア/プロキシバイパス、サーバーサイドリクエストフォージェリ(SSRF)、キャッシュポイズニング、XSS(クロスサイトスクリプティング)といった実務上クリティカルな問題が含まれています。
本記事では、各脆弱性が実際の運用環境にどのような影響を与えるのか、そして私たちが今すぐ何をすべきかを実戦的な観点から整理します。

最も危険な3つの脆弱性を詳解
1. ミドルウェア & プロキシバイパス (High)
影響: middleware.jsやproxy.jsを使用して認証/認可を処理しているすべてのアプリケーションが対象です。
- App Router セグメントプリフェッチバイパス: 特定のパスへのプリフェッチリクエストが認証ミドルウェアをバイパスできていました。認証が必要なページの一部コンテンツが事前に露出するリスクがあります。
- Pages Router i18n デフォルトロケールパスバイパス: 多言語(i18n)設定時に、デフォルトロケールパスがプロキシ認証をバイパスするバグが見つかりました。例えば
/en/adminはブロックされるが/adminはそのまま通ってしまう、といった具合です。
実務適用のポイント: 現在 middleware.js で request.nextUrl.pathname を基準に認証処理を行っている場合、プリフェッチリクエストと実際のナビゲーションリクエストを区別するロジックを追加で検討する必要があります。以下は参考パターンです。
// middleware.js - プリフェッチバイパス防止パターン
import { NextResponse } from 'next/server';
export function middleware(request) {
const { pathname } = request.nextUrl;
// プリフェッチリクエストでも認証チェックは同一に実行
const isPrefetch = request.headers.get('next-router-prefetch');
// 保護が必要なパス一覧
const protectedPaths = ['/dashboard', '/admin', '/account'];
const needsAuth = protectedPaths.some(path => pathname.startsWith(path));
if (needsAuth) {
const token = request.cookies.get('session_token');
if (!token) {
// プリフェッチでも実際のリクエストでも同一にブロック
return NextResponse.redirect(new URL('/login', request.url));
}
}
return NextResponse.next();
}
2. サービス拒否 (DoS) - React Server Components (High)
この脆弱性はアップストリームのReact Server Components(RSC) で発見され、CVE-2026-23870として追跡されています。悪意のあるリクエストによってサーバーメモリを枯渇させたり、CPU使用率を100%にすることでサービスを停止させることが可能です。
特に Partial Prerendering(PPR) や Cache Components を使用しているアプリケーション、そして Image Optimization API を使用している場合、追加のDoSリスクにさらされます。
3. サーバーサイドリクエストフォージェリ (SSRF) - WebSocket
WebSocketアップグレードリクエストを処理する際、検証されていないURLを経由して内部ネットワークリソース(Redis、内部API、クラウドメタデータエンドポイントなど)にアクセスできる脆弱性です。これは典型的なSSRF攻撃ベクトルであり、クラウド環境では特に深刻です。
4. キャッシュポイズニング & XSS
- キャッシュポイズニング: RSCレスポンスの前にキャッシュ層(CDN、Redisなど)がある場合、誤ったキャッシュキーによって他のユーザーのデータが露出する可能性があります。
- XSS: App RouterのCSP nonce処理と
beforeInteractiveスクリプトにおいて、信頼できない入力値をそのまま使用するとXSS攻撃が可能でした。

パッチバージョンとアップデート方法
| パッケージ | 脆弱バージョン | パッチバージョン | 優先度 ||---|---|---|---|| react-server-dom-webpack | 19.0.0 ~ 19.0.5 | 19.0.6 | 🔴 即時 || react-server-dom-webpack | 19.1.0 ~ 19.1.6 | 19.1.7 | 🔴 即時 || react-server-dom-webpack | 19.2.0 ~ 19.2.5 | 19.2.6 | 🔴 即時 || react-server-dom-turbopack | 同範囲 | 同パッチ | 🔴 即時 || react-server-dom-parcel | 同範囲 | 同パッチ | 🔴 即時 || Next.js (全バージョン) | 15.x 以下 | 15.3.1 以上 | 🔴 即時 |
重要: Vercelは今回のリリースに対して新しいWAFルールを展開していません。つまり、WAFレイヤーでこれらの脆弱性を確実にブロックすることはできません。 パッチが唯一の完全な解決策です。
アップデートコマンド:
# Next.js と React パッケージを一緒にアップデート
npm install next@latest react@latest react-dom@latest
# または yarn
# yarn add next@latest react@latest react-dom@latest
# 特定のパッチバージョンに固定したい場合
npm install next@15.3.1 react@19.2.6 react-dom@19.2.6

日本の開発現場での適用コンテキスト
日本のエンタープライズ / スタートアップ環境では、以下の点に特に注意が必要です。
- ECサイト / 金融系サービス: ミドルウェアバイパスの脆弱性は、決済情報や個人情報の漏洩に直結します。パッチ適用後は必ず認証フロー全体を再テストしてください。
- 受託開発案件: セキュリティ要件が厳しい案件(Pマーク取得、ISMSなど)では、このパッチ未適用が監査で指摘される可能性が高いです。
- Next.js + サーバーレス構成: SSRF脆弱性は内部のLambda関数やAPI Gatewayにまで影響を及ぼす可能性があります。WebSocketアップグレードパスにはホワイトリストベースのURL検証を追加することを推奨します。
本技術の限界と注意点
- パッチを適用したからといって、すべてのセキュリティ問題が解決するわけではありません。今回のアップデートは既知の13件の脆弱性のみを解決します。
middleware.jsの根本的な設計課題(プリフェッチと実際のリクエストの区別)は依然として開発者の責任です。パッチ後も認証ロジックを定期的に監査しましょう。- React Server ComponentsのDoS脆弱性は、サーバーレス環境ではコスト爆発に直結します。Rate Limitingとタイムアウト設定を併用することを強く推奨します。
次のステップ:学習の方向性
- 即座にパッチを適用した後、CI/CDパイプラインに
npm auditまたはyarn auditによる脆弱性スキャンステップを追加しましょう。 - Next.jsミドルウェアのセキュリティベストプラクティスを公式ドキュメントで再学習してください。
- React Server Componentsのセキュリティモデルを深く理解したい場合は、React公式ブログのRSCセキュリティ資料を参照してください。
- 余裕があれば、OWASP Top 10 for Web Application SecurityをNext.jsの観点から再解釈してみるのも良い学習になります。
合わせて読みたい記事
根拠資料: Vercel公式発表 - Next.js May 2026 Security Release
本記事は2026年5月時点の情報に基づいています。セキュリティ脅威は常に進化するため、最新情報を常に確認してください。