学術ラボ。CVE-2025-55182(React2Shell)を分析するためのもので、脆弱性のある環境とパッチ適用済みのReact Server Components環境、エクスプロイトシェル、自動評価シナリオ、包括的なセキュリティレポートを備えています。
このリポジトリには、管理されたReact Server Components環境でCVE-2025-55182を分析するためのローカルな学術用ラボが含まれています。このラボは、脆弱性、その悪用、および適用されたパッチをシミュレーションします。
app/vulnerable/: 脆弱なReactアプリケーションプロファイルです。
src/framework/entry.rsc.tsx: execSync()を介して__flight_actionペイロードが実行される安全でない逆シリアライズポイントを含みます。[email protected]の動作をシミュレーションします。app/patched/: パッチ適用済みのReactアプリケーションプロファイルです。
src/framework/entry.rsc.tsx: 逆シリアライズ前に__flight_actionペイロードを403レスポンスでブロックする緩和ロジックを含みます。infra/: 分離された実行のためのDocker構成です。
docker-compose.yml: 脆弱 (ポート3100) とパッチ適用済み (ポート3200) の両プロファイルを起動します。scripts/: 自動化およびエクスプロイトスクリプトです。
exploit-shell.ps1: 脆弱性を利用してシミュレートされたリモートターミナル (root@container$) を提供する対話型エクスプロイトシェルです。run-scenarios.ps1: tests/run-scenarios.mjsの自動評価テストを実行するラッパースクリプトです。start-lab.ps1: Docker Compose環境をすばやく起動するためのヘルパースクリプトです。stop-lab.ps1: Docker Compose環境をシャットダウンしてクリーンアップするためのヘルパースクリプトです。demo-lab.ps1: Dockerを使わずに両アプリをローカルで実行し、一連のテストリクエストを送信する代替デモスクリプトです。report/: 最終分析を含みます。
findings.md: 攻撃チェーン、CVSS分析、評価指標、緩和策の推奨事項を網羅した包括的なセキュリティレポートです。CSE472_ProjectProposal_Revised.md: 改訂版のプロジェクト提案書と方法論のドキュメントです。tests/: 自動評価です。
run-scenarios.mjs: 正常系、疑わしい系、エクスプロイト系のシナリオを両プロファイルに対して実行し、成功率と検出率を計算するNode.jsスクリプトです。logs/: テレメトリ出力です。
vulnerable-requests.log & patched-requests.log: 分析用のsuspiciousReasonsを含む詳細なリクエストトレースを保存します。このプロジェクトをGitHubから.zipファイルとしてダウンロードした場合は、以下の手順に従って、ローカルマシンでラボを実行し、脆弱性シミュレーションを操作できます。
PowerShell実行ポリシーに関する注意:
.ps1ファイルを実行する際に、スクリプトcannot be loadedまたはis not digitally signedというエラーが発生した場合は、現在のセッションの実行ポリシーをバイパスする必要があります。スクリプトを実行する前に、PowerShellウィンドウで次のコマンドを実行してください:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass(スコープが"Process"であるため、新しいPowerShellウィンドウまたはタブを開くたびに、このコマンドを再度実行する必要があります!)
.zipファイルを任意のフォルダーに解凍します。PowerShellウィンドウを開き、解凍したプロジェクトフォルダーに移動します:
cd path\to\extracted\folder
Dockerを使用して、脆弱なアプリケーションを安全に分離します。提供されているヘルパースクリプトを使用してコンテナを起動します:
.\scripts\start-lab.ps1
(または、cd infra; docker-compose up --build -d を手動で実行することもできます)
起動後:
http://localhost:3100 で実行されますhttp://localhost:3200 で実行されます環境が起動したら、シミュレートされたエクスプロイトシェルを起動して、リモートコード実行 (RCE) の脆弱性をテストできます。新しいPowerShellタブ/ウィンドウを開いて実行します:
.\scripts\exploit-shell.ps1
このスクリプトは、攻撃者として.rscエンドポイントに細工されたペイロードを送信します。次のようなコマンドを実行してみてください:
whoamils /workspaceenvcat /etc/passwdパッチ適用済みバージョンをテストするには:
.\scripts\exploit-shell.ps1 -Target "http://localhost:3200"
パッチ適用済みバージョンはリクエストをブロックし、[BLOCKED]メッセージを返すことに気づくでしょう。
評価指標 (成功率、検出率) を生成するには、Node.jsテストスクリプトを実行します:
node .\tests\run-scenarios.mjs
(またはラッパー: .\scripts\run-scenarios.ps1 を使用)
これにより、コンソールにサマリーが出力され、詳細なJSONレポートがtests/results/scenario-report.jsonに保存されます。
実験が終了したら、コンテナを安全にシャットダウンしてリソースを解放できます:
.\scripts\stop-lab.ps1