
Контейнеризированная лаборатория в корпоративном стиле для исследования и защиты от CVE-2026-27483.
Полноценная, реалистичная Docker-лаборатория в корпоративном стиле для изучения, тестирования и защиты от CVE-2026-27483 (Path Traversal → RCE в MindsDB). Этот репозиторий предоставляет разворачиваемую топологию лаборатории, конфигурации, минимальные образы контейнеров, правила обнаружения и вспомогательные скрипты, чтобы вы могли безопасно поднять изолированную среду для отработки обнаружения, эксплуатации (в санитизированном виде) и защиты.
ВАЖНО: Эта лаборатория намеренно включает уязвимую версию MindsDB в образовательных целях. Запускайте только в изолированных, изолированных от внешних сетей средах и никогда не открывайте доступ к ней из публичных сетей.
Internet (Attacker)
↓
Reverse Proxy (nginx)
↓
┌─────────────────────────────────┐
│ MindsDB (Vulnerable) │ Port 47334
│ - Vulnerable to CVE-2026-27483 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ PostgreSQL Database │ Port 5432 (internal)
│ - Stores MindsDB data │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ ELK Stack (Logging) │
│ - Elasticsearch, Logstash │ Ports 9200, 5000
│ - Kibana Dashboard │ Port 5601
└─────────────────────────────────┘
Сервисы подключены к выделенной Docker-сети через bridge (по умолчанию 172.20.0.0/16). Включён контейнер атакующего для выполнения контролируемых попыток эксплуатации изолированного сервиса MindsDB.
По умолчанию Postgres не предназначен для доступа из публичного интернета. Файл compose сопоставляет внутренние сервисы для локального использования в лаборатории.
Предварительные требования:
git clone https://github.com/nabhan-mohy/cve-2026-27483-lab.git
cd cve-2026-27483-lab
cp .env.example .env
# Откройте .env и подтвердите DB_PASSWORD и другие значения
Важно: Убедитесь, что DB_PASSWORD в .env совпадает с паролем, который ожидает файл compose. В docker-compose.yml есть значение по умолчанию (${DB_PASSWORD:-P@ssw0rd123!}). Либо задайте DB_PASSWORD=P@ssw0rd123! в .env, либо отредактируйте docker-compose.yml, чтобы использовать предпочитаемый вами пароль. При несовпадении MindsDB не сможет подключиться к Postgres, и сервисы не запустятся корректно.
(Необязательно) Отредактируйте .env для настройки поведения (включение/отключение функций, задание IP слушателя атакующего и т. д.).
Запустите лабораторию (полный режим):
docker compose up -d --build
curl http://localhost:47334/api/statushttp://localhost:5601http://localhost:8080docker compose down
Чтобы удалить тома (разрушительно):
docker compose down -v
В README упоминаются минимальный профиль и профиль мониторинга. Для их поддержки вы можете либо:
profiles: в docker-compose.yml, чтобы разделить сервисы на профили minimal и monitoring, либоdocker-compose.minimal.yml, который отключает тяжёлые компоненты (Elasticsearch/Kibana/Wazuh) для тестов с низким потреблением ресурсов.Рекомендуемый минимальный подход к тестированию — закомментировать или пропустить Elasticsearch/Kibana/Wazuh и запустить только: mindsdb, postgres, nginx-proxy и attacker.
Обратный прокси (nginx-proxy): выступает в роли внешней конечной точки и направляет трафик атакующего к уязвимому сервису MindsDB. Прокси также предоставляет простую панель на порту 8080 для быстрых проверок.
MindsDB (уязвимый образ): собран из уязвимого релиза, указанного в README. Хранит данные в Postgres и предоставляет конечные точки API, которые намеренно уязвимы в старых версиях.
Postgres: хранит конфигурацию и артефакты MindsDB. Инициализационные SQL-скрипты и начальные данные предоставлены в configs/postgres/*.sql.
ELK Stack (Elasticsearch, Logstash, Kibana): собирает логи с прокси и приложения, чтобы вы могли строить правила обнаружения и панели мониторинга.
Wazuh (необязательно): агент и менеджер мониторинга безопасности. Включён как заглушка для демонстрации интеграции; TLS-сертификаты и учётные данные в конфигурации являются заглушками и должны быть подготовлены для полной функциональности.
Контейнер атакующего: среда с утилитами (curl, netcat, python) и смонтированной папкой exploits/ для запуска скриптов заданий внутри той же Docker-сети (при желании изолированной от сети вашего хоста).
Сервис резервного копирования: пример контейнера для демонстрации реалистичных корпоративных рабочих процессов (резервное копирование дампов БД из Postgres).
docker compose exec -it attacker /bin/bash), выполните разведку против прокси (порт 80/8080) и API MindsDB (47334).exploits/ и docs/challenges/ с руководствами и безопасными проверками.Пример: выполните базовую разведку из контейнера атакующего
# войдите в контейнер атакующего
docker compose exec -it attacker /bin/bash
# просканируйте сеть или выполните curl к конечным точкам
curl -v http://nginx-proxy:80/
curl -v http://mindsdb:47334/api/status
Скрипт смоук-теста предоставлен в scripts/smoke_test.sh (если присутствует). Он выполняет следующие проверки:
/api/statuspg_isreadyЗапустите его локально:
chmod +x scripts/smoke_test.sh
./scripts/smoke_test.sh
Если смоук-тест завершится неудачей, соберите логи в smoke_compose_logs.txt и поделитесь ими для отладки:
docker compose logs --no-color > smoke_compose_logs.txt
Конвейер Logstash предоставлен в configs/logstash/logstash.conf для пересылки логов в Elasticsearch. Включённое правило Sigma rules/sigma/cve-2026-27483.yml — это простой пример, который помечает подозрительные паттерны path traversal (запросы, содержащие ..). Используйте его как отправную точку и дорабатывайте для снижения ложных срабатываний.
Создайте панели Kibana для визуализации:
.env и docker-compose.yml. Убедитесь, что оба файла используют один и тот же секрет.docker compose logs -f mindsdb на наличие стектрейсов и ошибок подключения к БД.ES_JAVA_OPTS в docker-compose.yml (пример: -Xms256m -Xmx256m) для маломощных хостов.mindsdb:47334) и что контейнер mindsdb здоров.Если вам нужна помощь с отладкой, запустите смоук-тест и поделитесь smoke_compose_logs.txt.
Приветствуются любые вклады. Предлагаемые способы помощи:
docs/ (развёртывание, задания, обнаружение, реагирование на инциденты)exploits/ с пошаговыми учебными руководствамиПожалуйста, открывайте PR против ветки main и следуйте рекомендациям CONTRIBUTING при добавлении учебных материалов по эксплуатации.
Сделано с ❤️ для сообщества специалистов по безопасности.