
Ein containerisiertes Enterprise-Lab zur Erforschung und Abwehr von CVE-2026-27483.
Eine vollständige, realistische, unternehmensstilbasierte Docker-Laborumgebung zum Lernen, Testen und Verteidigen gegen CVE-2026-27483 (MindsDB Path Traversal → RCE). Dieses Repository bietet eine bereitstellbare Labor-Topologie, Konfigurationen, minimale Container-Images, Erkennungsregeln und Hilfsskripte, damit Sie sicher eine isolierte Umgebung aufsetzen können, um Entdeckung, Ausnutzung (bereinigt) und Verteidigung zu üben.
WICHTIG: Dieses Labor enthält absichtlich eine verwundbare MindsDB-Version zu Bildungszwecken. Nur in isolierten, luftdicht abgeschotteten Umgebungen ausführen und niemals öffentlichen Netzwerken aussetzen.
Internet (Angreifer)
↓
Reverse Proxy (nginx)
↓
┌─────────────────────────────────┐
│ MindsDB (Verwundbar) │ Port 47334
│ - Verwundbar gegen CVE-2026-27483 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ PostgreSQL Datenbank │ Port 5432 (intern)
│ - Speichert MindsDB-Daten │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ ELK Stack (Protokollierung) │
│ - Elasticsearch, Logstash │ Ports 9200, 5000
│ - Kibana Dashboard │ Port 5601
└─────────────────────────────────┘
Die Dienste sind über ein dediziertes Docker-Bridge-Netzwerk verbunden (standardmäßig 172.20.0.0/16). Ein Angreifer-Container ist enthalten, um kontrollierte Exploit-Versuche gegen den isolierten MindsDB-Dienst auszuführen.
Standardmäßig ist Postgres nicht dafür vorgesehen, dem öffentlichen Internet ausgesetzt zu werden. Die Compose-Datei mappt interne Dienste für die lokale Labornutzung.
Voraussetzungen:
git clone https://github.com/nabhan-mohy/cve-2026-27483-lab.git
cd cve-2026-27483-lab
cp .env.example .env
# .env öffnen und DB_PASSWORD sowie andere Werte bestätigen
Wichtig: Stellen Sie sicher, dass DB_PASSWORD in .env mit dem Passwort übereinstimmt, das die Compose-Datei erwartet. Es gibt einen Standardwert in docker-compose.yml (${DB_PASSWORD:-P@ssw0rd123!}). Setzen Sie entweder DB_PASSWORD=P@ssw0rd123! in .env oder bearbeiten Sie docker-compose.yml, um das von Ihnen bevorzugte Passwort zu verwenden. Wenn sie nicht übereinstimmen, kann MindsDB keine Verbindung zu Postgres herstellen und die Dienste starten nicht korrekt.
(Optional) .env bearbeiten, um das Verhalten anzupassen (Funktionen aktivieren/deaktivieren, Angreifer-Listener-IP festlegen usw.).
Labor starten (Vollmodus):
docker compose up -d --build
curl http://localhost:47334/api/statushttp://localhost:5601http://localhost:8080docker compose down
Zum Entfernen der Volumes (zerstörerisch):
docker compose down -v
Die README verweist auf minimale und Monitoring-Profile. Um diese zu unterstützen, können Sie entweder:
profiles:-Schlüssel in docker-compose.yml verwenden, um Dienste in minimal- und monitoring-Profile zu trennen, oderdocker-compose.minimal.yml erstellen, die schwere Komponenten (Elasticsearch/Kibana/Wazuh) für ressourcenarme Tests deaktiviert.Ein vorgeschlagener minimaler Testansatz besteht darin, Elasticsearch/Kibana/Wazuh auszukommentieren oder zu überspringen und nur Folgendes auszuführen: mindsdb, postgres, nginx-proxy und attacker.
Reverse Proxy (nginx-proxy): fungiert als extern ausgerichteter Endpunkt und leitet Angreifer-Traffic an den verwundbaren MindsDB-Dienst weiter. Der Proxy bietet außerdem einen einfachen Dashboard-Port (8080) für schnelle Überprüfungen.
MindsDB (verwundbares Image): gepackt aus der verwundbaren Version, auf die in der README verwiesen wird. Es speichert Daten in Postgres und stellt API-Endpunkte bereit, die in älteren Versionen absichtlich verwundbar sind.
Postgres: speichert MindsDB-Konfiguration und Artefakte. Initialisierungs-SQL und Seed-Daten werden in configs/postgres/*.sql bereitgestellt.
ELK Stack (Elasticsearch, Logstash, Kibana): sammelt Protokolle vom Proxy und der Anwendung, damit Sie Erkennungsregeln und Dashboards erstellen können.
Wazuh (optional): Sicherheitsüberwachungs-Agent und -Manager. Als Platzhalter enthalten, um die Integration zu demonstrieren; TLS-Zertifikate und Anmeldeinformationen in der Konfiguration sind Platzhalter und müssen für die volle Funktionalität bereitgestellt werden.
Angreifer-Container: eine Umgebung mit Dienstprogrammen (curl, netcat, python) und gemountetem exploits/-Ordner, um Herausforderungsskripte aus demselben Docker-Netzwerk auszuführen (bei Bedarf von Ihrem Host-Netzwerk isoliert).
Backup-Dienst: Beispielcontainer zur Demonstration realistischer Unternehmens-Workflows (Backups, die DB-Dumps von Postgres ziehen).
docker compose exec -it attacker /bin/bash) Aufklärung gegen den Proxy (Port 80/8080) und die MindsDB-API (47334) durch.exploits/ und docs/challenges/ mit Anleitung und Sicherheitsprüfungen hinzufügen.Beispiel: Führen Sie eine grundlegende Aufklärung vom Angreifer-Container aus durch
# Angreifer-Container betreten
docker compose exec -it attacker /bin/bash
# Netzwerk scannen oder Endpunkte mit curl abfragen
curl -v http://nginx-proxy:80/
curl -v http://mindsdb:47334/api/status
Ein Smoke-Test-Skript wird unter scripts/smoke_test.sh bereitgestellt (falls vorhanden). Es führt folgende Prüfungen durch:
/api/status antwortetpg_isreadyLokal ausführen:
chmod +x scripts/smoke_test.sh
./scripts/smoke_test.sh
Wenn der Smoke-Test fehlschlägt, sammeln Sie Protokolle in smoke_compose_logs.txt und teilen Sie sie zur Fehlerbehebung:
docker compose logs --no-color > smoke_compose_logs.txt
Die Logstash-Pipeline wird in configs/logstash/logstash.conf bereitgestellt, um Protokolle an Elasticsearch weiterzuleiten. Die enthaltene Sigma-Regel rules/sigma/cve-2026-27483.yml ist ein einfaches Beispiel, das verdächtige Path-Traversal-Muster (Anfragen mit ..) kennzeichnet. Verwenden Sie sie als Ausgangspunkt und verfeinern Sie sie, um Fehlalarme zu reduzieren.
Erstellen Sie Kibana-Dashboards zur Visualisierung von:
.env und docker-compose.yml zurückzuführen. Stellen Sie sicher, dass beide dasselbe Geheimnis verwenden.docker compose logs -f mindsdb auf Stack-Traces und DB-Konnektivitätsfehler.ES_JAVA_OPTS in docker-compose.yml (Beispiel: -Xms256m -Xmx256m) für kleine Hosts.mindsdb:47334) und dass der Mindsdb-Container fehlerfrei ist.Wenn Sie Hilfe bei der Fehlerbehebung benötigen, führen Sie den Smoke-Test aus und teilen Sie smoke_compose_logs.txt.
Beiträge sind willkommen. Vorgeschlagene Möglichkeiten zur Unterstützung:
docs/ verbessern (Bereitstellung, Herausforderungen, Erkennung, Incident-Response)exploits/ mit Schritt-für-Schritt-Lernanleitungen hinzufügenBitte erstellen Sie PRs gegen main und befolgen Sie die CONTRIBUTING-Richtlinien, wenn Sie lehrreiches Exploit-Material hinzufügen.
Mit ❤️ für die Sicherheits-Community erstellt.