プロンプトインジェクション、エージェントシステムの悪用、モデル操作、MCPトラストバウンダリ攻撃を含む50以上のシナリオを備えた実践的なAIセキュリティラボプラットフォーム。安全な攻撃/防御演習のためにOllama + FastAPI + Reactを使用。
AIVPは、4つのフェーズと50以上のラボ(現在コードベースに50以上のシナリオ)にわたる実践的なAIセキュリティ学習プラットフォームです。Ollama + Llama 3.1、FastAPIバックエンド、React/Viteフロントエンドを組み合わせ、実務者が安全に攻撃的・防御的なAIセキュリティ技術を練習できるようにします。
これが役に立つ場合は、リポジトリを ⭐ スター / いいね し、フォークして、自由にPRを開いてください。
専用の実行ガイドRUN_STEPS.mdを使用してください。これには手動(Vite + uvicorn)およびDocker(nginx + API + Redis、Ollamaはホスト上)の手順が含まれており、信頼性の高いラブアクセスのための前提条件もカバーしています。
設定の動作はアクティブな実行パスで厳密です。必須の環境変数が欠けていると、設計上、起動に失敗する可能性があります。
このプラットフォームは4つのトレーニングトラックをカバーしています:
各ラボは動的なラボ固有のシークレットと明確な検証を使用し、安全な環境でエクスプロイトの成功を確認できます。
教育目的のみ — ラボはローカルシステム上の攻撃的および防御的なAIセキュリティシナリオをシミュレートします。所有していない、または明示的なテスト許可がない実際のサービス、データ、インフラをターゲットにしないでください。これらのラボのシークレットは合成であり、ラボごとに再生成されます。本番環境の認証情報ではありません。自己責任で使用してください。保証は提供されません。
POST /api/labs/{lab}/chat少なくとも1回モデルをプルしてください:
ollama pull llama3.1(または好みの他のllama3.1互換バリアント)
apps/
api/ # FastAPIバックエンド(SSE -> Ollama)
main.py
requirements.txt
.env.example
web/ # React + Viteフロントエンド
src/
.env.example
ヒント: 16 GBシステムRAMで動作します。32 GBでブラウザ、Node、Python、IDEに快適な余裕が生まれます。
リポジトリルート(apps\apiとapps\webを含むフォルダ)から:
# 0) モデルが利用可能であることを確認
ollama pull llama3.1
# 1) バックエンドのvenv + 依存関係 + 実行
cd apps/api
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
uvicorn main:app --reload --port 8000
フロントエンド用に新しいPowerShellウィンドウを開く:
cd apps/web
npm install
copy .env.example .env
npm run dev # http://localhost:5173
# 0) モデル
ollama pull llama3.1
# 1) バックエンド
cd apps/api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --reload --port 8000
別のシェルで:
cd apps/web
npm install
cp .env.example .env
npm run dev # http://localhost:5173
ollama serve)。ollama pull llama3.1。:8000で実行。:5173で実行。フロントエンドはバックエンドからServer-Sent Events(SSE)をストリーミングします。
apps/api/.envのCORSオリジンにhttp://localhost:5173を含めてください。
受け入れられるラボID形式(バックエンド):PI-01、PI_01、pi01、p01 → すべてPI_01に正規化。
動的シークレットは、バックエンド再起動後にラボが初めて使用されたときに作成されます。シークレットをリセットすることもできます:
POST /api/secrets/reset/{labId}
各ラボのシークレットは異なり、バックエンド再起動時に再生成されます(メモリ内)。永続性が必要な場合は、ファイル/DBでのバックアップを検討してください。
apps/api/.env)OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3.1
CORS_ORIGINS=http://localhost:5173
SERVER_SALT=change-me-in-production
AIVP_DEFAULT_MODE=off
ENABLE_TRAINING_LABS=false
OLLAMA_MODEL_TRAINING_LABS=llama3.1
REDIS_URL=redis://localhost:6379/0
REDIS_HOST=localhost
REDIS_PORT=6379
MEMORY_TTL_SECONDS=3600
SESSION_TTL_SECONDS=3600
AGENT_B_URL=http://localhost:8001
MM_API_BASE=http://localhost:8000
API_BASE_URL=http://localhost:8000
JIRA_URL=https://example.atlassian.net
GITHUB_API_BASE_URL=https://api.github.com
SLACK_API_BASE_URL=https://slack.com/api
apps/web/.env)# ローカル開発:APIへの完全なURL(Viteはvite.configでも/apiをプロキシ)
VITE_API_BASE=http://localhost:8000/api
VITE_DEV_API_TARGET=http://localhost:8000
[email protected]
Docker / 本番スタイルのビルドでは、ブラウザがnginxの背後で同一生成元パスを使用するように**VITE_API_BASE=/api**を使用します(RUN_STEPS.md → オプションBを参照)。
POST /api/labs/{lab}/chat — data: {"content": "..."}形式のSSEストリームPOST /api/secrets/validate — { labId, answer } → { success, message }POST /api/secrets/reset/{lab} — (オプション、テスト用)スクリーンショットをdocs/screenshots/の下に追加し、ここで参照します:




``
npm install を apps/web 内で実行してください。
``
main.pyにfrom typing import Iteratorを追加するか、アノテーションを削除してください。
CORS / SSEがブロックされる
CORS_ORIGINSにhttp://localhost:5173が含まれていることを確認してください。
Ollamaのエラー
ollama serveが実行中で、モデルがプルされていることを確認してください:ollama pull llama3.1。
curlでの健全性チェック
curl -N -X POST http://localhost:8000/api/labs/PI_01/chat \
-H "Content-Type: application/json" \
-d '{"prompt":"Say hello in one sentence."}'
data: {"content":"Hello …"}のようなストリーミング行が表示されるはずです。
コントリビューションを歓迎します!以下の手順に従ってください:
推奨される分野:
バグを発見した場合やアイデアがある場合:
このプロジェクトが気に入ったら、⭐ スター / いいねをして他の人と共有してください!
MIT.