本文へ移動

AI Buildersのための最新のニュース、知見、事例を毎日お届け

運営会社
企業のセキュリティ対策React

ReactのRSCに遠隔コード実行の脆弱性 19.2.9などへ上げる

Reactの開発チームは、サーバー側で画面の部品を組み立てる仕組み「React Server Components」のパッケージに、外から任意のコードを動かされ得る脆弱性「CVE-2026-126187」があると公表した。19.0.0から19.3.0までの一部が当たり、19.0.9、19.1.10、19.2.9、19.3.1で直った。

記事の内容を自社でどう進めるか、内容が固まっていない段階でも相談できます。仕事の相談

毎週 1 回、その週の記事から 5 本と実践の 1 本を選んでメールで届けます。ニュースレターを購読する(無料)

Reactのロゴが、暗い色の背景の中央に置かれている
画像: React

Reactの開発チームは10月15日(日本時間)、サーバー側で画面の部品を組み立てる仕組み「React Server Components(RSC)」に、外から任意のコードを動かされ得る脆弱性のセキュリティアドバイザリを出した。GitHubの脆弱性データベースは11月11日(日本時間)にこれを確認して載せた。当たるのはreact-server-dom-webpackなど3つのパッケージの19.0.0から19.3.0までの一部で、19.0.9、19.1.10、19.2.9、19.3.1のどれかへすぐ上げる必要がある。

3つのパッケージの19系が当たる

アドバイザリとデータベースの記録によると、影響と修正版は次のとおりだ。

  • 対象のパッケージ: npmのパッケージ「react-server-dom-webpack」「react-server-dom-parcel」「react-server-dom-turbopack」
  • 当たる版: 19.0.0から19.0.8、19.1.0から19.1.9、19.2.0から19.2.8、19.3.0
  • 修正版: 19.0.9、19.1.10、19.2.9、19.3.1(アドバイザリの本文は19.0.9を「19.0.09」と書くが、データベースの記録は19.0.9)
  • CVE番号: CVE-2026-126187
  • 深刻度: CVSS 4.0で9.5(アドバイザリの評価)。認証も利用者の操作も要らない
  • 中身: RSCに対応したフレームワークに細工した通信を送ると、サーバーの上で任意のコードを動かされ得る

アドバイザリは、当たるのは「応答が複数の型付き配列と、攻撃者が操れる値を運ぶ、ごくまれな場合」だとしている。CVSSの評価でも、攻撃には特定の前提条件が要るとされている。それでもアドバイザリは、すぐ上げるよう求めている。なお、Reactのコードをサーバーで動かさないアプリと、RSCに対応したフレームワーク、バンドラー、バンドラーのプラグインを使わないアプリは当たらない。

まず依存の版を確かめる

当たりを決めるのは3つのパッケージの版で、React本体のreactやreact-domの版ではない。アドバイザリの対象の一覧に、この2つは無い。アドバイザリは版の確かめ方を書いていない。npmで依存を入れているならnpmの一般的なコマンド「npm ls」にパッケージの名前を付けて流すと、入っている版と、どの依存が引き込んだかが出る。3つのパッケージのそれぞれで確かめたい。pnpmやYarnを使うならそれぞれの「why」のコマンドで同じことを見られる。ロックファイル(package-lock.jsonなど)に3つのパッケージの名前があるかを文字列で探すのも手早い。

版が当たる範囲にあれば、上げる必要がある。名前が出なくても、フレームワークがパッケージを自分の中に持っていることがある。

今の系列の修正版へ上げる

アドバイザリは、当たるパッケージを使っているなら、すぐ修正版のどれかへ上げるよう求めている。設定で避ける方法は書いていない。上げる先は、今の系列の修正版にする。19.2系なら19.2.9、19.3.0なら19.3.1だ。4つの修正版は同じ10月15日(日本時間)に出ており、19.2.9のリリースノートは、RSCの「通信の手順の改善」とだけ書く。

パッケージをアプリの依存として入れる形なら、アプリ側でパッケージの版を上げれば直る。例えばViteのプラグイン「@vitejs/plugin-rsc」は、npmの登録情報で、react-server-dom-webpackをアプリ側が入れる依存として求めている。npmの登録情報では、19.2.9のreact-server-dom-webpackは、reactとreact-domにも19系の19.2.9以上を求める。上げた後は、もう一度「npm ls」で3つのパッケージが修正版になったかを確かめ、サーバーを動かし直して本番に出す。

フレームワークがパッケージを自分の中に持つ形では、フレームワークの更新を待つことになる。Next.jsのnpmのパッケージは、中にreact-server-dom-webpackの写しを同梱している。そのNext.jsのアドバイザリの一覧にも、11月11日の時点でこの件のアドバイザリは無い。Next.jsの最新の安定版は、11月10日(日本時間)に出た16.4.6だ。使っているフレームワークのアドバイザリと更新を確かめたい。

悪用は確認されていない

CVE-2026-126187は、11月11日の時点で、米CISAの悪用を確認した脆弱性の一覧(KEV)に載っていない。KEVの最新の版は11月11日(日本時間)に出たものだった。アドバイザリにも悪用の報告は無い。それでも、CVSSの評価では認証も利用者の操作も要らないので、外に公開したサーバーは早く塞ぎたい。

SAGUSでも版を確かめた

SAGUSは、自社のサービスと開発の雛形のロックファイルで、3つのパッケージの版を文字列の検索で確かめた。Viteの上でRSCを動かす構成のいくつかが、react-server-dom-webpackの19.2.8を使っていた。どれもパッケージをアプリの依存として入れる形で、reactとreact-domとあわせてアプリの依存を19.2.9へ上げれば直る形だった。RSCのパッケージを使わない構成は当たらなかった。

編集部の見方

修正版が出てから、データベースに載るまで4週間近くかかった。その間、リリースノートは脆弱性の修正だと読めない書き方だった。だから編集部は、RSCを使うアプリを持つ開発者は、今日中にロックファイルで3つのパッケージの版を確かめるべきだと考える。ただ、フレームワークが同梱する版が当たるかは、各社のアドバイザリを待たないと分からない。その場合は、使っているフレームワークの更新を追いたい。

この記事をシェア

この記事は役に立ちましたか