Blog

ブログ

React Server Componentsの脆弱性「React2Shell」(CVE-2025-55182)

Webアプリケーション開発の基盤となる React および Next.js において、最も深刻なレベル(CVSSスコア 10.0)の脆弱性が発見されました。 「React2Shell」 と呼ばれ、最大限の警戒が呼びかけられています。

ReactおよびNext.jsは、非常に人気があり膨大な数のWebサイトで採用されています。そのため、本脆弱性の影響範囲は極めて広く、攻撃者にとって容易に攻撃可能な標的が無数に存在するという、非常に危険な状況にあります。

安全でないデシリアライゼーション

この脆弱性の根本原因は、データの「復元処理(デシリアライゼーション)」における確認不足にあります。

Webサーバーとブラウザが通信する際、アプリケーション内部の構造をもったデータを、保存・伝送する目的でバイト列に変換することをシリアライズと言い、シリアライズされたデータから元のデータに戻すことをデシリアライズと言います。

  • シリアライズ:データを送信可能な形式(文字列やバイト列)に変換する。
  • デシリアライズ:受け取った側が、形式変換されたデータから元のプログラムデータを復元する。

今回、React Server Componentsが、外部から送られてきたデータを復元(デシリアライズ)する際、「そのデータが安全なものか」という検証を行わずに処理してしまうバグが見つかりました。

これにより、攻撃者は「本来受信するはずのない不正なプログラムの部品」をデータの中に紛れ込ませることが可能になります。サーバーはそれを拒否せず、自身のプログラムの一部として読み込み、実行してしまいます。

React2Shellは、最高レベルの危険度

JVNやIPAなどの公的機関が、このReact2Shellを最も警戒すべき「Critical(致命的)」と評価している理由は、以下の3つの条件が全て揃っているためです。

① 認証が不要(Unauthenticated)

サーバーへの攻撃はIDやパスワードを盗むところから始まることもありますが、React2Shellはログインしていない状態でも攻撃が可能です。 インターネットに公開されているWebサイトであれば、誰でも攻撃のリクエストを送ることができます。

 ②サーバーの乗っ取りが可能(Remote Code Execution)

攻撃が成功すると、攻撃者はWebサーバー上で任意のコマンドを実行できます。 これは、Webサーバーの管理者が操作するのと同等のことが、外部から可能になることを意味します。

  • 情報の窃取:データベースのパスワードや顧客情報の持ち出し
  • システムの破壊:データの削除や改ざん、サービス停止
  • 踏み台:そのサーバーを拠点に、他のサーバーへ侵入する

③攻撃の容易さ

理論上だけでなく、実際に攻撃可能であることを証明する概念実証(PoC)コードが公開されており、既に悪用攻撃が観測されています。

脆弱性対策

脆弱性を修正した最新バージョンに置き換える(ライブラリのアップデートを行う)ことが、根本対策となります。

緩和策としてはWAF(Web Application Firewall)の導入があります。

弊社WAF製品「SiteGuardシリーズ」では、既存のシグネチャによる検出を確認しているほか、複数の攻撃パターンの存在を確認したため、2025年12月10日にリリース済みの最新のトラステッド・シグネチャによる対策の強化を行いました。

必要なアクション

以下の対応を行ってください。

  • アップデート:Next.js や React 関連パッケージを、ソフトウェアの提供元が指定する修正済みバージョンへ更新する。
  • 侵害の確認:既に攻撃を受けていないか、サーバーのログや不審なファイルの有無を確認する。

参考記事

React公式ブログ:https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Vercel (Next.js):https://vercel.com/kb/bulletin/react2shell
JVN (Japan Vulnerability Notes):https://jvn.jp/vu/JVNVU91640936/
IPA (情報処理推進機構):https://www.ipa.go.jp/security/security-alert/2025/alert20251209.html

「脆弱性情報」の最新記事

お問い合わせはこちら