Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-55182 — React Server ComponentsのCVE-2025-55182プロトタイプ汚染脆弱性のCodeQLベースの分析。エクスプロイトPOCと、安全でないプロパティトラバーサルの静的検出クエリ付き。 | Kitploit
ツール/GitHubGitHub/klassiker/cve-2025-55182
静的分析脆弱性分析コード分析ウェブセキュリティ論文と研究学習と教育
GitHubklassiker/cve-2025-55182

CVE-2025-55182

React Server ComponentsのCVE-2025-55182プロトタイプ汚染脆弱性のCodeQLベースの分析。エクスプロイトPOCと、安全でないプロパティトラバーサルの静的検出クエリ付き。

リポジトリを見る
29ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-55182

脆弱なアプリケーション

ビルドして実行:

root@kitploit:~
docker compose build
docker compose run --rm --entrypoint 'npm install' node
docker compose run --rm --entrypoint 'npm run build' node
docker compose up

POC(https://github.com/msanft/CVE-2025-55182 より):

root@kitploit:~
node poc.js

unbundled での実験:

root@kitploit:~
yarn --immutable

node --conditions react-server app.js

CodeQL

facebook/react をクローンして unbundled を作成:

root@kitploit:~
yarn --immutable

yarn cross-env RELEASE_CHANNEL=experimental node ./scripts/rollup/build.js react-server-dom-webpack/ --type=NODE_DEV

cp ./build/node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js \
    codeql/${version}/

CodeQL を準備:

root@kitploit:~
codeql database create db -l javascript -s codeql

cd queries && codeql pack install

codeql query run ./queries/PrototypeTraversal.ql -d db

TODO

  • Promise.resolve(userData) を検出するクエリを追加
    • ユーザー定義オブジェクトで resolve するすべての async 関数を検出する
    • これはコード実行の問題が発生する直接の箇所である
  • await non-native-promise を検出するクエリを追加
    • ネイティブの Promise を返さない関数に対するすべての await を検出する
    • 呼び出し側が(時々)生データを返すメソッドに対して誤って await を使う可能性がある

結果

このクエリは、getOutlinedModel 内のパッチ適用済みの使用箇所(hasOwnProperty.call が追加された)と、createModelResolver から削除された使用箇所(現在は fulfillReference)を検出しました。

ファイル名ソースシンク
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]安全でないプロトタイプトラバーサル: 変数 'parentObject' はループ内で自身のプロパティによって更新されます。
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsparentObject[reference[key]]parentObject[reference[key]]安全でないプロトタイプトラバーサル: 変数 'parentObject' はループ内で自身のプロパティによって更新されます。
./19.2.0/react-server-dom-webpack-server.node.unbundled.development.jsvalue[path[i]]value[path[i]]安全でないプロトタイプトラバーサル: 変数 'value' はループ内で自身のプロパティによって更新されます。
./tests.jsvalue[path[i]]c安全でないプロトタイプトラバーサル: 変数 'value' はループ内で自身のプロパティによって更新されます。
./tests.jsvalue[path[i]]c安全でないプロトタイプトラバーサル: 変数 'value' はループ内で自身のプロパティによって更新されます。
./tests.jsvalue[path[i]]value[path[i]]安全でないプロトタイプトラバーサル: 変数 'value' はループ内で自身のプロパティによって更新されます。
./vuln.jsparentObject[reference[key]]parentObject[reference[key]]安全でないプロトタイプトラバーサル: 変数 'parentObject' はループ内で自身のプロパティによって更新されます。
./vuln.jsvalue[path[i]]value[path[i]]安全でないプロトタイプトラバーサル: 変数 'value' はループ内で自身のプロパティによって更新されます。

最初と2番目が同じ場所を指すのに、vuln.js に抽出したものがそうならない理由はわかりません。

例

codeql/tests.js には次の3つのバリアントがあります:

root@kitploit:~
var value = {};
for (let i = 0; i < path.length; i++) {
  value = value[path[i]] // VarAccess
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c = value[path[i]] // VarDecl
  value = c
}

var value = {};
for (let i = 0; i < path.length; i++) {
  let c
  c = value[path[i]] // use VarRef
  value = c
}

リファレンス: https://codeql.github.com/docs/codeql-language-guides/abstract-syntax-tree-classes-for-working-with-javascript-and-typescript-programs/

ツールをダウンロード