Next.js / Reactの脆弱性「React2Shell」対応メモ
2025年12月、React Server Components(RSC)およびNext.jsにCVSS 10.0(最大深刻度) の脆弱性が発覚した。通称「React2Shell」。12月4日から実際に攻撃が確認されており、IPAも緊急の注意喚起を出している。
⚠️ 緊急性について 米国CISAは12月5日にKEVカタログへ追加し、修正期限を12月12日に設定。追加から1週間という異例の短期限は深刻さを示している。12月9日には「侵害兆候のチェック」も推奨された。
12月11日更新: 追加でDoS脆弱性(CVE-2025-55184 / CVE-2025-67779)とソースコード露出(CVE-2025-55183)が公開された。初回修正が不完全だったため、19.0.1 / 19.1.2 / 19.2.1 にアップデート済みでも再度アップデートが必要。
何が起きるのか
攻撃者が細工したHTTPリクエストを送ると、サーバー上で任意のコードが実行される(Remote Code Execution = RCE)。
攻撃者 → 細工したPOSTリクエスト → Next.jsサーバー
↓
RSCがデータをデシリアライズ
↓
悪意あるコードが実行される
↓
サーバー乗っ取り完了
攻撃者にできること
- サーバー上でシェルコマンドを実行
- 環境変数(APIキー、DBパスワード等)の窃取
- ファイルの読み書き
- バックドアの設置
- 他システムへの横展開
なぜ危険か
- 認証不要: ログイン機能の有無に関係なく攻撃できる
- デフォルト設定で脆弱: 特別な設定ミスがなくても攻撃される
- 攻撃が進行中: 12月4日から中国関連の脅威グループによる悪用が確認されている
影響を受ける条件
| 条件 | 影響 |
|---|---|
| Next.js 15.x / 16.x + App Router | ⚠️ 脆弱 |
| Next.js 14.3.0-canary.77 以降のcanary | ⚠️ 脆弱 |
| react-server-dom-* 19.x | ⚠️ 脆弱 |
| Next.js 14.x 安定版 | ✅ 安全 |
| Next.js 13.x 以下 | ✅ 安全 |
| Pages Router のみ使用 | ✅ 安全 |
| Edge Runtime | ✅ 安全 |
チェック手順
方法1: package.jsonを確認
# Next.jsのバージョン確認
cat package.json | grep next
# react-server-dom-*のバージョン確認
cat package.json | grep react-server-dom
方法2: スキャナーツールで自動チェック
# dry-runで影響を受けるか確認(ファイル変更なし)
npx fix-react2shell-next --dry-run
対策手順
1. パッチを適用
Next.js
| 現在のバージョン | アップデート先 |
|---|---|
| 15.0.0 – 15.0.4 | 15.0.5 |
| 15.1.0 – 15.1.8 | 15.1.9 |
| 15.2.0 – 15.2.5 | 15.2.6 |
| 15.3.0 – 15.3.5 | 15.3.6 |
| 15.4.0 – 15.4.7 | 15.4.8 |
| 15.5.0 – 15.5.6 | 15.5.7 |
| 16.0.0 – 16.0.6 | 16.0.7 |
| 15.x canary | 15.6.0-canary.58 |
| 16.x canary | 16.1.0-canary.12 |
| 14.3.0-canary.77以降 | 14.3.0-canary.76にダウングレード or 15.0.5以上 |
react-server-dom-*
| 現在のバージョン | アップデート先 |
|---|---|
| 19.0.0 – 19.0.2 | 19.0.3 |
| 19.1.0 – 19.1.3 | 19.1.4 |
| 19.2.0 – 19.2.2 | 19.2.3 |
⚠️ 注意: 19.0.1 / 19.1.2 / 19.2.1 は初回のRCE修正版だが、12月11日に公開されたDoS脆弱性(CVE-2025-55184)の修正が不完全だった。19.0.2 / 19.1.3 / 19.2.2 も同様に脆弱。必ず最新版にアップデートすること。
2. 自動修正ツールを使う
# インタラクティブモード(確認しながら修正)
npx fix-react2shell-next
# 自動修正モード(CI/CD向け)
npx fix-react2shell-next --fix
このツールはモノレポにも対応しており、プロジェクト内の全package.jsonを再帰的にスキャンして修正する。
3. デプロイ
パッチ適用後、速やかにデプロイする。
4. シークレットのローテーション
2025年12月4日 13:00 PT(日本時間 12月5日 6:00)以降にオンラインだったアプリケーションは、すでに攻撃を受けている可能性がある。
以下のシークレットをローテーションすることを強く推奨:
- データベース接続情報
- APIキー
- JWTシークレット
- 外部サービスの認証情報
- その他環境変数で管理している秘密情報
12月11日追加: DoS・ソースコード露出の脆弱性
React2Shellの修正検証中に、追加で2種類の脆弱性が発見され、12月11日に公開された。
DoS(サービス拒否)- High
| 項目 | 内容 |
|---|---|
| CVE | CVE-2025-55184, CVE-2025-67779 |
| CVSS | 7.5(High) |
| 内容 | 悪意あるHTTPリクエストでデシリアライズ時に無限ループ発生→サーバーがハング |
Server Functionエンドポイントを実装していなくても、RSCをサポートしている場合は脆弱。
重要: CVE-2025-55184の初回修正が不完全だったため、19.0.2 / 19.1.3 / 19.2.2 はまだ脆弱。CVE-2025-67779は内部で追加発見されたDoS脆弱性。
ソースコード露出 - Medium
| 項目 | 内容 |
|---|---|
| CVE | CVE-2025-55183 |
| CVSS | 5.3(Medium) |
| 内容 | Server Functionのソースコードが漏洩する可能性 |
Server Functionが引数を文字列化して使用している場合、そのソースコードが攻撃者に返される可能性がある。
// 脆弱な例: ソースに秘密がハードコードされている
'use server';
export async function serverFunction(name) {
const conn = db.createConnection('SECRET KEY'); // 漏洩する
return { message: `Hello, ${name}!` };
}
ただし process.env.SECRET のようなランタイム環境変数は保護される。漏洩するのはソースコードに直接埋め込まれた秘密のみ。
修正バージョン
| パッケージ | 脆弱 | 安全 |
|---|---|---|
| react-server-dom-webpack | 19.0.0 – 19.0.2, 19.1.0 – 19.1.3, 19.2.0 – 19.2.2 | 19.0.3, 19.1.4, 19.2.3 |
| react-server-dom-parcel | 同上 | 同上 |
| react-server-dom-turbopack | 同上 | 同上 |
CVE番号の整理
今回の一連の脆弱性に関するCVE番号をまとめる。
| CVE番号 | 対象 | 深刻度 | 説明 |
|---|---|---|---|
| CVE-2025-55182 | React | Critical (10.0) | RSCの安全でないデシリアライゼーション(RCE) |
| CVE-2025-66478 | Next.js | Critical (10.0) | 上記のNext.js固有の問題 |
| CVE-2025-55184 | React | High (7.5) | DoS(初回修正が不完全) |
| CVE-2025-67779 | React | High (7.5) | DoS(追加発見) |
| CVE-2025-55183 | React | Medium (5.3) | ソースコード露出 |
仕事で書く報告書などでは、対応しているCVE番号をすべて記載しておくと良い。
こちらはこれから対応します……。
→対応しました。
CISA KEVカタログ追加について
米国CISAは2025年12月5日、CVE-2025-55182をKnown Exploited Vulnerabilities(KEV)カタログに追加した。
- 追加理由: 実際の攻撃が確認されたため
- 対象: Meta React Server Components
- 修正期限: 2025年12月12日(BOD 22-01に基づく連邦機関向け)
- 12月9日更新: インターネットに公開されているReactインスタンスについて、緩和策適用後も侵害の兆候をチェックするよう推奨
CISAは「BOD 22-01は連邦機関向けだが、すべての組織がKEVカタログの脆弱性を優先的に修正することを強く推奨する」としている。