
Un laboratorio containerizzato in stile enterprise per la ricerca e la difesa contro CVE-2026-27483.
Un laboratorio Docker completo, realistico e in stile enterprise per apprendere, testare e difendersi da CVE-2026-27483 (Path Traversal → RCE in MindsDB). Questo repository fornisce una topologia di laboratorio distribuibile, configurazioni, immagini container minime, regole di rilevamento e script di supporto per poter avviare in sicurezza un ambiente isolato per esercitarsi su scoperta, sfruttamento (sanitizzato) e difesa.
IMPORTANTE: Questo laboratorio include intenzionalmente una versione vulnerabile di MindsDB per scopi educativi. Eseguirlo solo in ambienti isolati e air-gapped e non esporlo mai a reti pubbliche.
Internet (Attaccante)
↓
Reverse Proxy (nginx)
↓
┌─────────────────────────────────┐
│ MindsDB (Vulnerabile) │ Porta 47334
│ - Vulnerabile a CVE-2026-27483 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ Database PostgreSQL │ Porta 5432 (interna)
│ - Memorizza i dati di MindsDB │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ Stack ELK (Registrazione) │
│ - Elasticsearch, Logstash │ Porte 9200, 5000
│ - Dashboard Kibana │ Porta 5601
└─────────────────────────────────┘
I servizi sono connessi su una rete Docker bridge dedicata (172.20.0.0/16 di default). È incluso un container attaccante per eseguire tentativi di sfruttamento controllati contro il servizio MindsDB isolato.
Di default Postgres non è pensata per essere esposta a internet pubblico. Il file compose mappa i servizi interni per l'uso nel laboratorio locale.
Prerequisiti:
git clone https://github.com/nabhan-mohy/cve-2026-27483-lab.git
cd cve-2026-27483-lab
cp .env.example .env
# Aprire .env e confermare DB_PASSWORD e altri valori
Importante: assicurarsi che DB_PASSWORD in .env corrisponda alla password che il file compose si aspetta. C'è un valore predefinito in docker-compose.yml (${DB_PASSWORD:-P@ssw0rd123!}). Impostare DB_PASSWORD=P@ssw0rd123! in .env oppure modificare docker-compose.yml per usare la password preferita. Se non corrispondono, MindsDB non riuscirà a connettersi a Postgres e i servizi non si avvieranno correttamente.
(Opzionale) Modificare .env per regolare il comportamento (abilitare/disabilitare funzionalità, impostare l'IP di ascolto dell'attaccante, ecc.).
Avviare il laboratorio (modalità completa):
docker compose up -d --build
curl http://localhost:47334/api/statushttp://localhost:5601http://localhost:8080docker compose down
Per rimuovere i volumi (distruttivo):
docker compose down -v
Il README fa riferimento a profili minimale e di monitoraggio. Per supportarli si può:
profiles: in docker-compose.yml per separare i servizi nei profili minimal e monitoring, oppuredocker-compose.minimal.yml che disabilita i componenti pesanti (Elasticsearch/Kibana/Wazuh) per test a basse risorse.Un approccio minimale suggerito per i test è commentare o saltare Elasticsearch/Kibana/Wazuh ed eseguire solo: mindsdb, postgres, nginx-proxy e attacker.
Reverse proxy (nginx-proxy): funge da endpoint esterno e instrada il traffico dell'attaccante al servizio MindsDB vulnerabile. Il proxy fornisce anche una semplice dashboard sulla porta (8080) per controlli rapidi.
MindsDB (immagine vulnerabile): impacchettato dalla release vulnerabile citata nel README. Memorizza i dati in Postgres e fornisce endpoint API che sono intenzionalmente vulnerabili nelle versioni precedenti.
Postgres: memorizza la configurazione e gli artefatti di MindsDB. SQL di inizializzazione e dati seed sono forniti in configs/postgres/*.sql.
Stack ELK (Elasticsearch, Logstash, Kibana): raccoglie i log dal proxy e dall'applicazione così da poter creare regole di rilevamento e dashboard.
Wazuh (opzionale): agente e manager di monitoraggio della sicurezza. Incluso come segnaposto per dimostrare l'integrazione; i certificati TLS e le credenziali nella configurazione sono segnaposto e devono essere forniti per la piena funzionalità.
Container attaccante: un ambiente con utilità (curl, netcat, python) e la cartella exploits/ montata per eseguire script di sfida dall'interno della stessa rete Docker (isolata dalla rete host se desiderato).
Servizio di backup: container di esempio per dimostrare flussi di lavoro enterprise realistici (backup che estraggono dump del DB da Postgres).
docker compose exec -it attacker /bin/bash), eseguire ricognizione contro il proxy (porta 80/8080) e l'API MindsDB (47334).exploits/ e docs/challenges/ con indicazioni e controlli di sicurezza.Esempio: eseguire una ricognizione di base dal container attaccante
# entrare nel container attaccante
docker compose exec -it attacker /bin/bash
# scansionare la rete o fare curl agli endpoint
curl -v http://nginx-proxy:80/
curl -v http://mindsdb:47334/api/status
Uno script di smoke test è fornito in scripts/smoke_test.sh (se presente). Esegue i seguenti controlli:
/api/status di MindsDB rispondapg_isreadyEseguirlo localmente:
chmod +x scripts/smoke_test.sh
./scripts/smoke_test.sh
Se lo smoke test fallisce, raccogliere i log in smoke_compose_logs.txt e condividerli per il debug:
docker compose logs --no-color > smoke_compose_logs.txt
La pipeline Logstash è fornita in configs/logstash/logstash.conf per inoltrare i log a Elasticsearch. La regola Sigma inclusa rules/sigma/cve-2026-27483.yml è un semplice esempio che segnala pattern di path traversal sospetti (richieste contenenti ..). Usarla come punto di partenza e perfezionarla per ridurre i falsi positivi.
Creare dashboard Kibana per visualizzare:
.env e docker-compose.yml. Assicurarsi che entrambi concordino sullo stesso segreto.docker compose logs -f mindsdb per stack trace ed errori di connettività al DB.ES_JAVA_OPTS in docker-compose.yml (esempio: -Xms256m -Xmx256m) per host piccoli.mindsdb:47334) e che il container mindsdb sia sano.Se serve aiuto per il debug, eseguire lo smoke test e condividere smoke_compose_logs.txt.
I contributi sono benvenuti. Modi suggeriti per aiutare:
docs/ (distribuzione, sfide, rilevamento, risposta agli incidenti)exploits/ con guide di apprendimento passo passoSi prega di aprire PR verso main e seguire le linee guida CONTRIBUTING quando si aggiunge materiale exploit educativo.
Fatto con ❤️ per la community della sicurezza.