|
| 1 | +--- |
| 2 | +title: "React Server Components におけるサービス拒否攻撃とソースコード露出" |
| 3 | +author: The React Team |
| 4 | +date: 2025/12/11 |
| 5 | +description: セキュリティ研究者が先週の重大な脆弱性に対するパッチを検証する過程で、React Server Components における 2 つの脆弱性を追加で発見し、開示しました。高深刻度のサービス拒否攻撃 (CVE-2025-55184) と、中程度の深刻度のソースコード露出 (CVE-2025-55183) です。 |
| 6 | + |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +December 11, 2025 by [The React Team](/community/team) |
| 11 | + |
| 12 | +--- |
| 13 | + |
| 14 | +<Intro> |
| 15 | + |
| 16 | +セキュリティ研究者が先週の重大な脆弱性に対するパッチをテストする過程で、React Server Components における 2 つの脆弱性を追加で発見し、開示しました。 |
| 17 | + |
| 18 | +**これらの新しい脆弱性はリモートコード実行を許すものではありません**。React2Shell に対するパッチはリモートコード実行の悪用を防止するために引き続き有効です。 |
| 19 | + |
| 20 | +</Intro> |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +新しい脆弱性は以下のように公開されています。 |
| 25 | + |
| 26 | +- **Denial of Service - High Severity**: [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) and [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779) (CVSS 7.5) |
| 27 | +- **Source Code Exposure - Medium Severity**: [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) (CVSS 5.3) |
| 28 | + |
| 29 | +新たに開示された脆弱性の深刻さを鑑み、直ちにアップグレードすることを推奨します。 |
| 30 | + |
| 31 | +<Note> |
| 32 | + |
| 33 | +#### 以前に公開されたパッチには脆弱性があります {/*the-patches-published-earlier-are-vulnerable*/} |
| 34 | + |
| 35 | +先週の重大なセキュリティ脆弱性の対応のため既にアップデートを行っている場合でも、再度アップデートが必要です。 |
| 36 | + |
| 37 | +19.0.2、19.1.3、および 19.2.2 にアップデート済みの場合でも、[これらは不完全](#additional-fix-published)であり、再度アップデートする必要があります。 |
| 38 | + |
| 39 | +アップグレード手順については、[前回記事のガイド](/blog/2025/12/03/critical-security-vulnerability-in-react-server-components#update-instructions)を参照してください。 |
| 40 | + |
| 41 | +</Note> |
| 42 | + |
| 43 | +これらの脆弱性の詳細については、修正のロールアウトが完了した後に提供される予定です。 |
| 44 | + |
| 45 | +## 直ちに対応を {/*immediate-action-required*/} |
| 46 | + |
| 47 | +これらの脆弱性は、[CVE-2025-55182](/blog/2025/12/03/critical-security-vulnerability-in-react-server-components) と同じパッケージおよびバージョンに存在します。 |
| 48 | + |
| 49 | +以下のパッケージのバージョン 19.0.0、19.0.1、19.0.2、19.1.0、19.1.1、19.1.2、19.1.2、19.2.0、19.2.1、および 19.2.2 が該当します。 |
| 50 | + |
| 51 | +* [react-server-dom-webpack](https://www.npmjs.com/package/react-server-dom-webpack) |
| 52 | +* [react-server-dom-parcel](https://www.npmjs.com/package/react-server-dom-parcel) |
| 53 | +* [react-server-dom-turbopack](https://www.npmjs.com/package/react-server-dom-turbopack?activeTab=readme) |
| 54 | + |
| 55 | +修正はバージョン 19.0.3、19.1.4、および 19.2.3 にバックポートされています。上記のパッケージを使用している場合は、直ちに修正済みバージョンのいずれかにアップグレードしてください。 |
| 56 | + |
| 57 | +以前と同様、アプリの React コードがサーバを使用していない場合、アプリはこれらの脆弱性の影響を受けません。アプリが React Server Components をサポートするフレームワーク、バンドラ、またはバンドラプラグインを使用していない場合、アプリはこれらの脆弱性の影響を受けません。 |
| 58 | + |
| 59 | +<Note> |
| 60 | + |
| 61 | +#### 重大な CVE の後に別の脆弱性報告が続くことはよくあります {/*its-common-for-critical-cves-to-uncover-followup-vulnerabilities*/} |
| 62 | + |
| 63 | +重大な脆弱性が開示されると、研究者は隣接するコードパスを精査し、初期の修正をバイパスする方法がないかテストし、類似の悪用手段を見つけようとします。 |
| 64 | + |
| 65 | +これは JavaScript だけでなく、業界全体で見られるパターンです。たとえば [Log4Shell](https://nvd.nist.gov/vuln/detail/cve-2021-44228) の後にも、コミュニティがオリジナルの修正を検証する中で追加の CVE ([1](https://nvd.nist.gov/vuln/detail/cve-2021-45046), [2](https://nvd.nist.gov/vuln/detail/cve-2021-45105)) が報告されました。 |
| 66 | + |
| 67 | +開示が続くとフラストレーションを感じるかもしれませんが、一般的には健全な対応サイクルの兆候です。 |
| 68 | + |
| 69 | +</Note> |
| 70 | + |
| 71 | +### 影響を受けるフレームワークとバンドラ {/*affected-frameworks-and-bundlers*/} |
| 72 | + |
| 73 | +一部の React フレームワークやバンドラが、脆弱性のある React パッケージに依存しているか、peer dependency として依存しているか、あるいはそれらを含んでいました。影響を受ける React フレームワークやバンドラは以下の通りです:[next](https://www.npmjs.com/package/next)、[react-router](https://www.npmjs.com/package/react-router)、[waku](https://www.npmjs.com/package/waku)、[@parcel/rsc](https://www.npmjs.com/package/@parcel/rsc)、[@vite/rsc-plugin](https://www.npmjs.com/package/@vitejs/plugin-rsc)、[rwsdk](https://www.npmjs.com/package/rwsdk) |
| 74 | + |
| 75 | +アップグレード方法について、[前回の記事の手順](https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components#update-instructions)を参照してください。 |
| 76 | + |
| 77 | +### ホスティングプロバイダによる緩和策 {/*hosting-provider-mitigations*/} |
| 78 | + |
| 79 | +以前と同様、我々は多くのホスティングプロバイダと協力し、一時的な緩和策 (mitigation) を適用しています。 |
| 80 | + |
| 81 | +ただしアプリの保護のためにこれらに依存しないでください。引き続き直ちにアップデートを適用するべきです。 |
| 82 | + |
| 83 | +### React Native {/*react-native*/} |
| 84 | + |
| 85 | +モノレポや `react-dom` を使用していない React Native ユーザの場合、`react` バージョンは `package.json` で固定されているはずですので、追加の手順は必要ありません。 |
| 86 | + |
| 87 | +モノレポで React Native を使用している場合は、以下のパッケージがインストールされている場合に*それらのみ*を更新してください。 |
| 88 | + |
| 89 | +- `react-server-dom-webpack` |
| 90 | +- `react-server-dom-parcel` |
| 91 | +- `react-server-dom-turbopack` |
| 92 | + |
| 93 | +これはセキュリティ上の問題を緩和するために必要ですが、`react` および `react-dom` を更新する必要はなく、そのため React Native でのバージョン不一致エラーが発生することはありません。 |
| 94 | + |
| 95 | +詳細については[この issue](https://github.com/facebook/react-native/issues/54772#issuecomment-3617929832) を参照してください。 |
| 96 | + |
| 97 | +## 高深刻度:サービス拒否攻撃 {/*high-severity-denial-of-service*/} |
| 98 | + |
| 99 | +**CVE**: [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) および [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779) |
| 100 | +**Base Score**: 7.5 (High) |
| 101 | + |
| 102 | +セキュリティ研究者は、悪意のある HTTP リクエストを作成して任意のサーバ関数 (Server Function) エンドポイントに対して送信することで、React がそれをデシリアライズする際に、サーバプロセスをハングさせて CPU を消費する無限ループを引き起こすことができることを発見しました。アプリが React のサーバ関数のエンドポイントを実装していない場合でも、React Server Components をサポートしている場合は脆弱性の影響を受ける可能性があります。 |
| 103 | + |
| 104 | +これにより、攻撃者がユーザによる製品へのアクセスを不能にし、サーバ環境のパフォーマンスに影響を与えうる手段が生じます。 |
| 105 | + |
| 106 | +本日公開されたパッチは、無限ループを防ぐことでこの問題を緩和します。 |
| 107 | + |
| 108 | +<Note> |
| 109 | + |
| 110 | +#### 追加の修正が公開されました {/*additional-fix-published*/} |
| 111 | + |
| 112 | +[CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) における DoS に対処する元の修正は不完全でした。 |
| 113 | + |
| 114 | +これにより、バージョン 19.0.2、19.1.3、19.2.2 が脆弱な状態のままでした。バージョン 19.0.3、19.1.4、19.2.3 は安全です。 |
| 115 | + |
| 116 | +我々は追加のケースを修正し、脆弱なバージョンに対して [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779) を提出しました。 |
| 117 | + |
| 118 | +</Note> |
| 119 | + |
| 120 | +## 中深刻度:ソースコード露出 {/*low-severity-source-code-exposure*/} |
| 121 | + |
| 122 | +**CVE**: [CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) |
| 123 | +**Base Score**: 5.3 (Medium) |
| 124 | + |
| 125 | +セキュリティ研究者は、脆弱なサーバ関数に送信された悪意のある HTTP リクエストが、安全でない方法で任意のサーバ関数のソースコードを返す可能性があることを発見しました。悪用には、明示的または暗黙的に引数の文字列化を行い露出するサーバ関数の存在が必要です。 |
| 126 | + |
| 127 | +```javascript |
| 128 | +'use server'; |
| 129 | + |
| 130 | +export async function serverFunction(name) { |
| 131 | + const conn = db.createConnection('SECRET KEY'); |
| 132 | + const user = await conn.createUser(name); // implicitly stringified, leaked in db |
| 133 | + |
| 134 | + return { |
| 135 | + id: user.id, |
| 136 | + message: `Hello, ${name}!` // explicitly stringified, leaked in reply |
| 137 | + }} |
| 138 | +``` |
| 139 | + |
| 140 | +攻撃者は以下のような情報を漏洩させる可能性があります。 |
| 141 | + |
| 142 | +```txt |
| 143 | +0:{"a":"$@1","f":"","b":"Wy43RxUKdxmr5iuBzJ1pN"} |
| 144 | +1:{"id":"tva1sfodwq","message":"Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!"} |
| 145 | +``` |
| 146 | + |
| 147 | +本日公開されたパッチは、サーバ関数のソースコードが文字列化されるのを防ぎます。 |
| 148 | + |
| 149 | +<Note> |
| 150 | + |
| 151 | +#### 漏洩可能性があるのはソースコード内の秘密情報のみ {/*only-secrets-in-source-code-may-be-exposed*/} |
| 152 | + |
| 153 | +ソースコードにハードコードされた秘密情報は漏洩の可能性がありますが、`process.env.SECRET` などのランタイムシークレットは影響を受けません。 |
| 154 | + |
| 155 | +漏洩されるコードの範囲は、サーバ関数内のコードに限定されますが、バンドラが行うインライン化の程度によっては他の関数が含まれる可能性があります。 |
| 156 | + |
| 157 | +必ず本番バンドルに対して検証を行ってください。 |
| 158 | + |
| 159 | +</Note> |
| 160 | + |
| 161 | +--- |
| 162 | + |
| 163 | +## タイムライン {/*timeline*/} |
| 164 | +* **12 月 3 日**:[Andrew MacPherson](https://github.com/AndrewMohawk) 氏が Vercel および [Meta Bug Bounty](https://bugbounty.meta.com/) に漏洩の問題を報告。 |
| 165 | +* **12 月 4 日**:[RyotaK](https://ryotak.net) 氏が [Meta Bug Bounty](https://bugbounty.meta.com/) に DoS 問題を初期報告。 |
| 166 | +* **12 月 6 日**:React チームが両方の問題を確認し、調査を開始。 |
| 167 | +* **12 月 7 日**:初期の修正が作成され、React チームが新しいパッチの検証と計画を開始。 |
| 168 | +* **12 月 8 日**:影響を受けるホスティングプロバイダとオープンソースプロジェクトに通知。 |
| 169 | +* **12 月 10 日**:ホスティングプロバイダの緩和策が導入、パッチの検証が完了。 |
| 170 | +* **12 月 11 日**:Shinsaku Nomura 氏が [Meta Bug Bounty](https://bugbounty.meta.com/) に追加の DoS を報告。 |
| 171 | +* **12 月 11 日**:パッチが公開され、[CVE-2025-55183](https://www.cve.org/CVERecord?id=CVE-2025-55183) および [CVE-2025-55184](https://www.cve.org/CVERecord?id=CVE-2025-55184) として一般公開。 |
| 172 | +* **12 月 11 日**:不足していた DoS のケースが内部で発見され、修正が適用され [CVE-2025-67779](https://www.cve.org/CVERecord?id=CVE-2025-67779) として一般公開。 |
| 173 | + |
| 174 | +--- |
| 175 | + |
| 176 | +## 謝辞 {/*attribution*/} |
| 177 | + |
| 178 | +ソースコード漏洩を報告してくださった [Andrew MacPherson (AndrewMohawk)](https://github.com/AndrewMohawk) 氏、サービス拒否攻撃の脆弱性を報告してくださった GMO Flatt Security Inc の [RyotaK](https://ryotak.net) 氏および株式会社ビットフォレストの Shinsaku Nomura 氏に感謝します。 |
0 commit comments