
安全な教育用シミュレーションとして、CVE-2025-27520を題材に、Flaskの脆弱なサービスとPythonのPoCスキャナを用いて、デシリアライゼーションおよびアクセス制御の脆弱性を実演します。
⚠️ 重要: これはCVE-2025-27520脆弱性の安全な教育用シミュレーションです。
プロジェクトには模擬サービス(Flask)と安全なPoCスキャナー(Python)が含まれています。
シミュレーションは、任意のコマンドを実行する代わりに、テストトークンを受信するとdata/に証拠ファイルを作成します。
CVE-2025-27520-final/
├── 📄 README_ru.md # このドキュメントファイル
├── 🐳 Dockerfile # スタンドイメージ(Flask)
├── 🐳 docker-compose.yml # コンテナ起動設定
├── 📊 result.json # スキャナー結果サンプル
├── ⚙️ setup.cfg # flake8設定
├── 📁 app/ # サービスソースコード
│ ├── 🐍 app.py # Flaskシミュレーションサービス
│ └── 📦 requirements.txt # サービス依存関係
├── 📁 src/ # スキャナーソースコード
│ ├── 🐍 scanner.py # PoC / スキャナー (Python)
│ └── 📦 requirements.txt # スキャナー依存関係
├── 📁 data/ # 証拠ファイル用マウントディレクトリ
---
## 🎯 脆弱性の概要
**CVE-2025-27520 (シミュレーション)** — 脆弱なデシリアライゼーション / アクセス制御不備のデモンストレーション
**実際の製品では、次のような結果を引き起こす可能性があります:**
- 権限昇格
- リモートコード実行
- 機密データの漏洩
**この教育版では、以下のことを行います:**
- 証拠ファイルの作成による脆弱性の安全な確認
- ローカルテスト用の軽量スタンドの提供
- 責任ある開示の原則の遵守
---
## 🛠 システム要件
- **OS:** Linux
- **Docker:** Docker
- **Python:** 3.11 以降
---
## 🚀 クイックスタート
### 1. サービスの起動
```bash
docker-compose up -d
curl http://127.0.0.1:5000/health
期待される応答: {"status":"ok"} または HTTP 200
python3 -m venv venv
source venv/bin/activate
pip install -r src/requirements.txt
python3 src/scanner.py --url http://127.0.0.1:5000
cat result.json
ls -l data/
cat data/EVIDENCE_LANG_BENTO_SIM.txt
# プロジェクトのルートで
docker-compose build --no-cache
docker-compose up -d
docker ps
docker-compose ps
docker logs bento-sim --tail 100
期待される結果: コンテナ bento-sim が Up 状態で、ポートマッピング 0.0.0.0:5000->5000/tcp が行われていること
--url パラメータでターゲットURLを受け付けるsource venv/bin/activate
python3 src/scanner.py --url http://127.0.0.1:5000
[
{
"ip": "http://127.0.0.1:5000",
"vuln": true
}
]
主要エンドポイント:
POST /simulate_deserialize - キー payload を含むJSONを受け付けるGET /evidence - 証拠ファイルの存在を確認するGET /health - サービスの稼働確認動作ロジック:
EVIDENCE_TRIGGER を受信すると証拠ファイルを作成する0.0.0.0:5000 で待機するdata/EVIDENCE_LANG_BENTO_SIM.txt - シミュレーション成功時に作成される証拠ファイルresult.json - PoCスクリプトで生成されるスキャン結果vuln: false と報告する場合docker ps
curl http://127.0.0.1:5000/health
curl -v -X POST http://127.0.0.1:5000/simulate_deserialize \
-H "Content-Type: application/json" \
-d '{"payload":"Hello EVIDENCE_TRIGGER"}'
期待される応答: {"result":"evidence created"}
docker logs bento-sim --tail 200
sudo ss -ltnp | grep 5000
sudo iptables -L -n -v
pip install black autopep8
black src/scanner.py
# または
autopep8 --in-place --aggressive --aggressive src/scanner.py
7z a -v3g -m0=Copy "CVE-2025-27520-stand.7z" "file.ova"
tar -tf file.ova | head -n 20
File → Import を使用CVE-2025-27520-final/
├── 📄 README_ru.md
├── 🐳 Dockerfile
├── 🐳 docker-compose.yml
├── 📁 app/
├── 📁 src/
├── 📊 result.json
├── 📁 data/
zip -r CVE-2025-27520-final.zip CVE-2025-27520-final
sha256sum CVE-2025-27520-final.zip > CVE-2025-27520-final.zip.sha256
# ZIPの場合
unzip -t CVE-2025-27520-final.zip