
Simulation éducative et sûre de CVE-2025-27520 avec un service Flask vulnérable et un scanner PoC Python pour démontrer les vulnérabilités de désérialisation et de contrôle d'accès défaillant.
⚠️ Important : Il s'agit d'une simulation pédagogique sécurisée de la vulnérabilité CVE-2025-27520.
Le projet inclut un service de simulation (Flask) et un scanner PoC sécurisé (Python).
La simulation crée un fichier de preuve dansdata/à la réception d'un marqueur de test, au lieu d'exécuter des commandes arbitraires.
CVE-2025-27520-final/
├── 📄 README_ru.md # Ce fichier de documentation
├── 🐳 Dockerfile # Image du stand (Flask)
├── 🐳 docker-compose.yml # Configuration pour lancer le conteneur
├── 📊 result.json # Exemple de résultat du scanner
├── ⚙️ setup.cfg # Configuration flake8
├── 📁 app/ # Codes sources du service
│ ├── 🐍 app.py # Service de simulation sur Flask
│ └── 📦 requirements.txt # Dépendances du service
├── 📁 src/ # Codes sources du scanner
│ ├── 🐍 scanner.py # PoC / scanner (Python)
│ └── 📦 requirements.txt # Dépendances du scanner
├── 📁 data/ # Dossier monté pour les preuves
---
## 🎯 Description succincte de la vulnérabilité
**CVE-2025-27520 (simulation)** — démonstration d'une désérialisation vulnérable / broken access control
**Dans un produit réel, cela pourrait entraîner :**
- L'escalade de privilèges
- L'exécution de code à distance
- La divulgation de données confidentielles
**Dans cette version pédagogique, nous :**
- Confirmons en toute sécurité la vulnérabilité en créant un fichier de preuve
- Fournissons un stand léger pour les tests locaux
- Respectons les principes de divulgation responsable
---
## 🛠 Configuration requise
- **Système d'exploitation :** Linux
- **Docker :** Docker
- **Python :** 3.11 ou plus récent
---
## 🚀 Démarrage rapide
### 1. Lancement du service
```bash
docker-compose up -d
curl http://127.0.0.1:5000/health
Réponse attendue : {"status":"ok"} ou 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
# À la racine du projet
docker-compose build --no-cache
docker-compose up -d
docker ps
docker-compose ps
docker logs bento-sim --tail 100
Résultat attendu : le conteneur bento-sim avec le statut Up et la redirection des ports 0.0.0.0:5000->5000/tcp
--urlsource venv/bin/activate
python3 src/scanner.py --url http://127.0.0.1:5000
[
{
"ip": "http://127.0.0.1:5000",
"vuln": true
}
]
Principaux endpoints :
POST /simulate_deserialize - accepte un JSON avec la clé payloadGET /evidence - vérifie la présence du fichier de preuveGET /health - vérifie le bon fonctionnement du serviceLogique de fonctionnement :
EVIDENCE_TRIGGER, crée un fichier de preuve0.0.0.0:5000data/EVIDENCE_LANG_BENTO_SIM.txt - fichier de preuve, créé lors d'une simulation réussieresult.json - résultats du scan, générés par le script PoCvuln: falsedocker 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"}'
Réponse attendue : {"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
# ou
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 dans VMware Workstation / VirtualBoxCVE-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
# Pour ZIP
unzip -t CVE-2025-27520-final.zip
---