
CVE-2026-27483 の調査と防御のための、コンテナ化されたエンタープライズスタイルのラボ。
CVE-2026-27483(MindsDB パストラバーサル → RCE)の学習、テスト、防御を目的とした、現実的でエンタープライズ風の完全な Docker ベースのラボです。このリポジトリには、デプロイ可能なラボ構成、設定ファイル、最小限のコンテナイメージ、検知ルール、補助スクリプトが含まれており、発見、攻撃(サニタイズ済み)、防御の練習を行うための隔離環境を安全に構築できます。
重要: このラボは教育目的で意図的に脆弱な 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 ブリッジネットワーク(デフォルトで 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 とその他の値を確認
重要: .env の DB_PASSWORD が compose ファイルが期待するパスワードと一致していることを確認してください。docker-compose.yml にはデフォルト値(${DB_PASSWORD:-P@ssw0rd123!})があります。.env に DB_PASSWORD=P@ssw0rd123! を設定するか、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 では、最小プロファイルと監視プロファイルについて言及しています。これらをサポートするには、次のいずれかを使用できます:
docker-compose.yml の profiles: キーを使用して、サービスを minimal プロファイルと monitoring プロファイルに分離する、またはdocker-compose.minimal.yml などのオーバーライド compose ファイルを作成して、低リソーステスト用に重いコンポーネント(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 スタック(Elasticsearch、Logstash、Kibana): プロキシとアプリケーションからログを収集し、検知ルールとダッシュボードを構築できます。
Wazuh(任意): セキュリティ監視エージェントおよびマネージャー。統合のデモンストレーション用のプレースホルダーとして含まれています。設定内の TLS 証明書と認証情報はプレースホルダーであり、完全な機能のためにはプロビジョニングが必要です。
攻撃者コンテナ: ユーティリティ(curl、netcat、python)とマウントされた exploits/ フォルダを備えた環境で、同じ Docker ネットワーク内からチャレンジスクリプトを実行できます(必要に応じてホストネットワークから隔離)。
バックアップサービス: 現実的なエンタープライズワークフロー(Postgres から DB ダンプを取得するバックアップ)をデモンストレーションするサンプルコンテナ。
docker compose exec -it attacker /bin/bash)、プロキシ(ポート 80/8080)と MindsDB API(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/status の応答を待機pg_isready で Postgres の準備完了を確認ローカルで実行:
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 は、不審なパストラバーサルパターン(.. を含むリクエスト)をフラグ付けするシンプルな例です。これを出発点として使用し、誤検知を減らすために改良してください。
Kibana ダッシュボードを作成して以下を可視化:
.env と docker-compose.yml の間の DB パスワードの不一致が原因です。両方が同じシークレットを使用していることを確認してください。docker compose logs -f mindsdb でスタックトレースと DB 接続エラーを確認してください。docker-compose.yml の ES_JAVA_OPTS を減らしてください(例: -Xms256m -Xmx256m)。mindsdb:47334)を指していること、および mindsdb コンテナが正常であることを確認してください。デバッグのヘルプが必要な場合は、スモークテストを実行して smoke_compose_logs.txt を共有してください。
コントリビューションを歓迎します。支援方法の提案:
docs/ のドキュメントを改善(デプロイ、チャレンジ、検知、インシデントレスポンス)exploits/ にサニタイズされたチャレンジスクリプトを追加main に対して PR を開き、教育的なエクスプロイト教材を追加する際は CONTRIBUTING ガイドラインに従ってください。
セキュリティコミュニティのために ❤️ を込めて作られました。