React Nativeの開発基盤であるMetro開発サーバーに、CVSS 9.8のクリティカルなコマンドインジェクション脆弱性(CVE-2025-11953)が発見された。「Metro4Shell」と名付けられたこの脆弱性は、2025年12月から野生環境での悪用が確認されており、攻撃者はRustベースのマルウェアを開発者ワークステーションに展開している。CISAは2026年2月5日、同脆弱性をKEVカタログに追加し、連邦機関に対して2月26日までの修正を義務付けた。本稿では、開発環境そのものを標的とするこの新たな攻撃ベクトルの技術的詳細と防御策を解析する。

CVE-2025-11953の技術的メカニズム

Metro4Shellの根本原因は、@react-native-community/cli-server-apiパッケージ内の/open-urlエンドポイントにある。このエンドポイントは、開発中にURLをブラウザで開くための便利機能として実装されたものである。POSTリクエストのボディに含まれるURLフィールドの値が、サニタイズされることなくopen()関数に直接渡される設計となっていた。

JFrogのセキュリティ研究チームが2025年11月にこの脆弱性を初めて文書化した。影響を受けるバージョンは@react-native-community/cli-server-apiの4.8.0から20.0.0-alpha.2までの広範囲に及ぶ。npmでの週間ダウンロード数が約200万件に達するパッケージであり、影響範囲は甚大である。

特にWindows環境では深刻度が高い。openパッケージ(v6.4.0)がWindows上でcmd /c start "" /b [ユーザー入力]というコマンド構造を生成するため、攻撃者は任意のOSコマンドを完全に制御された引数で実行できる。たとえば、URLフィールドにcalc.exeを送信するだけで電卓が起動し、より悪意のあるコマンドチェーンも同様に実行可能である。

macOSおよびLinux環境では、openxdg-openがシェルを介さずに引数を受け渡すため、直接的なコマンドインジェクションは制限される。しかし、URIスキームハンドラを悪用した攻撃経路が残存しており、リスクを完全に排除することはできない。

野生環境での悪用実態

VulnCheckのCanaryハニーポットネットワークは、2025年12月21日にCVE-2025-11953の最初の悪用を検出した。同社はこの観測結果を受け、同日中にVulnCheck KEVカタログへの登録を行っている。その後、2026年1月4日および1月21日にも攻撃が確認され、散発的な試行ではなく持続的な作戦活動であることが判明した。

攻撃インフラとして、65.109.182[.]231、223.6.249[.]141、134.209.69[.]155の3つのIPアドレスが攻撃元として特定された。ペイロードの配信には8.218.43[.]248:60124(Windows向け)および47.86.33[.]195:60130(WindowsとLinux両方向け)が使用されている。

攻撃は多段階のプロセスで構成される。まず、Base64エンコードされたPowerShellスクリプトが/open-urlエンドポイントへのPOSTリクエスト経由で配信される。このスクリプトは以下の処理を順次実行する。

  • Microsoft Defender Antivirusの除外パス設定(カレントディレクトリおよびシステムの一時フォルダ)
  • 攻撃者インフラへのTCPコネクション確立
  • 「GET /windows」リクエストによる二次ペイロードのダウンロード
  • UPXパックされたRustベースバイナリの展開と実行

ダウンロードされるRustバイナリには静的解析を妨害するアンチアナリシスロジックが組み込まれており、攻撃者の技術的洗練度の高さを示している。VulnCheckの研究者は、「ペイロードが数週間にわたる悪用活動を通じて一貫していた」と指摘し、脆弱性の探索ではなく運用レベルの攻撃であると評価している。

開発環境を狙う攻撃の構造的リスク

Metro4Shellの特異性は、本番アプリケーションではなく開発環境を直接標的とする点にある。従来のサプライチェーン攻撃は、悪意のあるパッケージの配布や依存関係の汚染を通じて本番環境に侵入することを目的としてきた。しかし本脆弱性は、開発者のワークステーションやCI/CDパイプラインそのものが攻撃対象となる。

Metro開発サーバーがデフォルトで全インターフェース(0.0.0.0)にバインドされるという二次的な設定不備も、リスクを増幅させている。これにより、同一ネットワーク上の任意の端末から開発サーバーへの到達が可能となる。カフェやコワーキングスペースの共有Wi-Fi環境、あるいはVPNで接続された社内ネットワークにおいて、攻撃面が意図せず拡大する。

さらに深刻なのはCI/CD環境への影響である。自動テストやビルドプロセスの一環としてMetroサーバーが起動されるケースでは、ビルドインフラ全体が攻撃対象となりうる。開発者ワークステーションの侵害はソースコードリポジトリへのアクセスを意味し、そこからより広範なサプライチェーン攻撃への踏み台となる可能性がある。

注目すべきは、EPSS(Exploit Prediction Scoring System)が本脆弱性に対して0.00405という低い悪用確率を割り当てていた点である。実際には数週間にわたる組織的な悪用が確認されていたにもかかわらず、リスク評価システムが現実の脅威を反映できていなかった。この乖離は、開発ツールの脆弱性に対する業界全体の認識不足を浮き彫りにしている。

CISAの対応と修正指針

米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)は2026年2月5日、CVE-2025-11953をKnown Exploited Vulnerabilities(KEV)カタログに追加した。これにより、連邦文民行政機関(FCEB)は2026年2月26日までに修正を適用することが義務付けられた。

根本的な修正は、@react-native-community/cli-server-apiをバージョン20.0.0以降にアップデートすることである。このバージョンではopenURLMiddlewareハンドラに入力サニタイズ処理が追加され、ユーザー入力が危険なopen()関数に到達する前に検証される。

即座のアップデートが困難な場合、以下の緩和策が有効である。

  • ローカルホストバインド: Metro開発サーバーの起動時に--host 127.0.0.1フラグを明示的に指定し、外部からのアクセスを遮断する
  • ファイアウォール制御: Metro開発サーバーのポート(デフォルト8081)へのネットワークアクセスを開発マシンのループバックインターフェースに制限する
  • CI/CD環境の隔離: ビルドパイプラインでMetroサーバーが外部ネットワークに露出しないよう、ネットワークポリシーを見直す
  • ネットワーク分離: 開発用ネットワークセグメントを分離し、他のワークステーションからの横移動を防止する

サプライチェーンセキュリティの新たな戦線

Metro4Shellは、ソフトウェアサプライチェーンの攻撃面が「依存パッケージの汚染」から「開発ツール自体の脆弱性」へと拡大していることを端的に示す事例である。SolarWindsやLog4Shellが本番環境の脆弱性を突いたのに対し、Metro4Shellはビルド段階のインフラを直接標的とする。

React Nativeは世界中で数十万の開発者に利用されており、MetaやMicrosoft、Shopifyを含む大規模組織のモバイルアプリ開発基盤でもある。開発サーバーのセキュリティは歴史的に「ローカル環境だから安全」という前提で軽視されてきたが、リモートワークの普及とクラウドベースCI/CDの一般化により、その前提は崩壊している。

組織は開発環境のセキュリティを本番環境と同等に扱う必要がある。具体的には、開発ツールのバージョン管理と定期的なアップデートの自動化、開発サーバーのネットワーク露出の最小化、SBOMによる開発依存関係の可視化、そして開発者ワークステーションのエンドポイント保護の強化が求められる。Metro4Shellは、開発環境を「信頼済み」と見なすセキュリティモデルの再考を迫る警鐘である。

FAQ

Metro4Shell(CVE-2025-11953)はどのような脆弱性か?

React Native CLIのMetro開発サーバーに存在するコマンドインジェクション脆弱性で、CVSS 9.8のクリティカル評価を受けている。/open-urlエンドポイントへのPOSTリクエストを通じて、認証なしで任意のOSコマンドを実行できる。

本番アプリケーションに影響はあるか?

Metro4Shellは開発サーバーの脆弱性であり、ビルド済みの本番アプリケーションには直接影響しない。ただし、開発環境やCI/CDパイプラインが侵害されることで、ソースコード改ざんなど間接的なサプライチェーンリスクが生じる。

どのバージョンが影響を受けるか?

@react-native-community/cli-server-apiの4.8.0から20.0.0-alpha.2が影響を受ける。修正はバージョン20.0.0で提供されており、早急なアップデートが推奨される。

すぐにアップデートできない場合の緩和策は?

Metroサーバー起動時に--host 127.0.0.1フラグを指定してローカルホストにバインドすることで、外部ネットワークからの攻撃を遮断できる。併せてファイアウォールでポート8081へのアクセスを制限することも有効である。

CISAのKEVカタログ追加により何が義務付けられたか?

2026年2月5日のKEV追加により、米国連邦文民行政機関は2月26日までにCVE-2025-11953への修正適用が義務付けられた。民間組織に法的義務はないが、実際の悪用が確認されている以上、同等の緊急度で対応すべきである。

参考文献