2026年2月5日、米国サイバーセキュリティ・社会基盤安全保障庁(CISA)は、React NativeのMetro開発サーバーに存在するOSコマンドインジェクション脆弱性 CVE-2025-11953 を「既知の悪用済み脆弱性(KEV)カタログ」に追加した。連邦民間行政機関には2月26日までの対処が命じられている。「Metro4Shell」と呼ばれるこの脆弱性は、開発環境を経由して本番インフラへ到達する新たなサプライチェーン攻撃の起点として、すでに実戦投入されていた。本稿では攻撃チェーンの技術的詳細、Rust製マルウェアの挙動、そして開発環境セキュリティの構造的課題を解析する。
CVE-2025-11953の技術的詳細 ── Metro開発サーバーの致命的欠陥
CVE-2025-11953は、React Native Community CLIのサーバーAPIパッケージ(@react-native-community/cli-server-api)に存在するOSコマンドインジェクション脆弱性である。CVSSスコアは9.8(Critical)、CWE-78に分類される。影響範囲はバージョン4.8.0から20.0.0-alpha.2までと広い。
脆弱性の根本原因は、Metro開発サーバーが公開する /open-url HTTPエンドポイントにある。このエンドポイントは、受信したURLパラメータをnpmパッケージ open の open() 関数にサニタイズなしで直接渡す設計になっていた。JFrogのセキュリティリサーチチームが2025年11月に公開した分析によれば、「安全でない入力処理」がユーザー提供のURLデータからOSコマンド実行への直接的な経路を生んでいた。
さらに深刻なのは、Metroがデフォルトで全ネットワークインターフェース(0.0.0.0)にバインドする点である。localhost ではなく全インターフェースに公開されるため、同一ネットワーク上の攻撃者は認証なしで /open-url エンドポイントにPOSTリクエストを送信できる。ZoomEyeのインターネットスキャンデータによれば、パブリックインターネット上に約3,500台のMetro開発サーバーが露出していたとされる。
攻撃の影響はプラットフォームによって異なる。Windowsではバージョン17.0.0以降で完全な任意コマンド実行が可能であり、それ以前のバージョンでも既存バイナリの実行が可能である。macOSおよびLinuxではバイナリ実行に限定されるが、攻撃の起点としては十分な威力を持つ。
攻撃チェーンの解剖 ── 公開前から始まっていた悪用
VulnCheckのハニーポットデータは、この脆弱性の悪用が2025年12月21日には開始されていたことを示している。これは公式パッチのリリースや一般的な認知よりも大幅に早い時期であり、攻撃者が脆弱性情報を独自に取得していた可能性を示唆する。VulnCheckは2026年1月4日、1月21日にも同一ペイロードによる継続的な攻撃を観測しており、組織的かつ計画的なキャンペーンであったことが裏付けられている。
攻撃チェーンは多段構成で設計されている。第1段階では、攻撃者がMetroの /open-url エンドポイントにBase64エンコードされたPowerShellコマンドを含むPOSTリクエストを送信する。第2段階で、PowerShellスクリプトがMicrosoft Defender Antivirusの保護を無効化する。具体的には Add-MpPreference -ExclusionPath を用いて、カレントディレクトリおよびシステム一時フォルダを除外リストに追加する。
第3段階では、攻撃者管理下のインフラストラクチャ(8.218.43.248:60124 および 47.86.33.195:60130)へのRAW TCPコネクションが確立される。第4段階でGETリクエストによりRust製バイナリがダウンロードされ、第5段階で難読化された引数とともにペイロードが実行される。
VulnCheckは次のように指摘している。「2026年1月末時点でも、公開された議論の多くはCVE-2025-11953を理論上のリスクとして扱っていた。この認識と実態の乖離こそが、防御側が最も不意を突かれやすいポイントである」。
Rust製マルウェアの技術解析 ── 検知回避と環境認識
配布されたマルウェアはRust言語で開発されており、複数の検知回避メカニズムを備えている。まず、実行ファイルはUPXパッキングが施されており、静的解析を困難にしている。VulnCheckが公開したハッシュ値によれば、UPXパック版は d8337df3aff749250557bf11daf069eb(SHA-256先頭)、アンパック版は 7ecbb0cc88dfa5f187c209a28bd25e8e(同)で識別される。
Rustが選択された技術的理由は複数考えられる。Rustバイナリはメモリ安全性を持つため、マルウェア自体のクラッシュによる検知リスクが低い。また、クロスコンパイルによりWindowsとLinuxの両方のペイロードを単一の開発環境から生成できる。さらに、Rustの標準ライブラリは実行ファイルに静的リンクされるため、ターゲット環境のランタイム依存性が排除される。
マルウェアにはランタイムチェック機構が組み込まれており、仮想化環境やサンドボックスの検出を試みる。セキュリティ研究者による動的解析を妨害する目的である。検知されたペイロードはWindowsおよびLinux双方を標的としており、攻撃者が開発者の使用するOSを問わず攻撃可能な体制を整えていたことがわかる。
脅威アクターについて、VulnCheckの分析ではAPT(国家支援型持続的脅威)グループではなく、金銭目的のサイバー犯罪者または初期アクセスブローカー(IAB)であると評価されている。攻撃パターンの一貫性と数週間にわたる継続的な運用は、組織的な犯罪活動を示唆している。
開発環境は「本番」である ── 新たな脅威モデルの確立
Metro4Shellが提起する最も重要な問題は、開発環境と本番環境の境界が事実上消滅している現実である。VulnCheckは「CVE-2025-11953が注目に値するのは、脆弱性が存在するからではない。開発インフラストラクチャは、到達可能になった瞬間に本番インフラストラクチャとなる――意図にかかわらず――というパターンを防御側が繰り返し学び直していることが注目に値する」と総括している。
この構造的課題は複数のレイヤーで顕在化している。第一に、CI/CDパイプラインにおけるリスクである。GitHub Actions、GitLab CI、Jenkinsなどの自動ビルドプロセスでMetroが実行されている場合、ビルドサーバー自体が攻撃対象となる。開発者のローカル環境だけでなく、ビルドインフラの侵害は成果物(アプリバイナリ)の改ざんにつながり、典型的なサプライチェーン攻撃となる。
第二に、@react-native-community/cli パッケージの週間ダウンロード数は約200万回にのぼる。影響を受ける開発者・プロジェクトの規模は極めて大きく、パッチ適用の遅延がそのまま攻撃対象の残存につながる。
第三に、開発ツールのセキュリティ設計思想の問題がある。Metroが 0.0.0.0 にデフォルトバインドする設計は、開発利便性を優先した結果である。だが、リモートワークの普及やクラウド開発環境の増加により、「開発サーバーはローカルネットワーク内で安全」という前提はもはや成立しない。
対策と今後の展望 ── 開発環境のゼロトラスト化
直接的な対策として、@react-native-community/cli-server-api をバージョン20.0.0以降(または19.1.2、18.0.1)にアップデートすることが最優先である。即座のアップグレードが困難な場合は、--host 127.0.0.1 フラグを明示的に指定し、開発サーバーをlocalhostにバインドする暫定策が推奨される。
しかし、個別パッチの適用だけでは構造的課題は解決しない。開発環境にもゼロトラストの原則を適用する必要がある。具体的には、開発サーバーのネットワーク露出を最小化するファイアウォールルールの設定、開発環境とビルドインフラのネットワークセグメンテーション、/open-url のような管理エンドポイントへの認証要求の実装、SBOMによるCLIツールチェーンの脆弱性管理が挙げられる。
Metro4Shellは、開発ツールの脆弱性が直接的に本番環境への侵入経路となることを実証した事案である。CISAがKEVカタログに追加したことは、開発環境のセキュリティがもはや「ベストプラクティス」ではなく「コンプライアンス要件」へと格上げされつつある転換点を示している。React Nativeに限らず、すべてのローカル開発サーバーを運用するフレームワークが同種のリスクを内包している可能性を、開発組織は認識すべきである。
FAQ
Metro4Shell(CVE-2025-11953)とは何ですか?
React Native Community CLIのMetro開発サーバーに存在するOSコマンドインジェクション脆弱性である。CVSSスコア9.8のCritical評価で、/open-url エンドポイントを通じて認証なしでリモートからの任意コマンド実行が可能となる。
どのバージョンが影響を受けますか?
@react-native-community/cli-server-api のバージョン4.8.0から20.0.0-alpha.2が影響を受ける。修正済みバージョンは20.0.0以降、19.1.2、18.0.1である。npm list @react-native-community/cli-server-api で自環境のバージョンを確認できる。
なぜ開発サーバーの脆弱性がサプライチェーン攻撃になるのですか?
開発サーバーが侵害されると、開発者のマシン上でコードが改ざんされ、最終的にユーザーに配布されるアプリバイナリに悪意あるコードが混入する可能性がある。CI/CDパイプラインのビルドサーバーが標的になった場合、影響はさらに広範囲に及ぶ。
すぐにアップデートできない場合の暫定対策はありますか?
開発サーバー起動時に --host 127.0.0.1 フラグを明示的に指定し、localhostのみにバインドすることで、ネットワーク経由の攻撃を防止できる。ただし根本的にはパッケージのアップデートが必要である。
参考文献
- CVE-2025-11953 – Critical React Native Community CLI Vulnerability — JFrog Security Research, 2025年11月
- Metro4Shell: Exploitation in the Wild — VulnCheck, 2026年2月
- CISA Adds Two Known Exploited Vulnerabilities to Catalog — CISA, 2026年2月5日
- Hackers Exploit Metro4Shell RCE Flaw in React Native CLI — The Hacker News, 2026年2月
- Hackers exploit critical React Native Metro bug to breach dev systems — Bleeping Computer, 2026年2月
- Hackers abused React Native CLI flaw to deploy Rust malware before public disclosure — Security Affairs, 2026年2月



