
Uma plataforma intencionalmente vulnerável alinhada à OWASP para aprender e testar a segurança de IA, LLM, RAG, MCP e IA Agêntica.
Treine. Quebre. Defenda. Sistemas de IA.
Uma plataforma de código aberto para treinamento em segurança de IA, red/blue teaming, CTF, benchmarking e pesquisa. Roda 100% localmente. Sem nuvem, sem APIs pagas, nenhum dado sai da sua máquina.
A GPU é opcional. O Ollama roda na CPU, mas a inferência será lenta sem uma.
git clone https://github.com/sonuoffsec/DVAP
cd DVAP
cp .env.example .env
docker compose up -d
Abra http://localhost:8080 assim que todos os contêineres estiverem saudáveis. A primeira execução leva de 30 a 60 segundos.
O DVAP é uma plataforma de código aberto para pesquisa, treinamento, benchmarking e red teaming em segurança de IA, projetada para ajudar profissionais de segurança, engenheiros de IA, pesquisadores, estudantes e organizações a entender como os sistemas de IA modernos falham e como defendê-los.
Construído para a era da IA, o DVAP fornece aplicações de IA intencionalmente vulneráveis, agentes, sistemas RAG, integrações MCP e ambientes específicos de domínio que podem ser atacados, analisados, avaliados e protegidos.
Diferente de playgrounds de IA baseados em nuvem, o DVAP roda inteiramente na sua máquina.
Sem nuvem. Sem assinaturas. Sem custos de API. Sem vendor lock-in.
As aplicações de IA modernas introduzem superfícies de ataque totalmente novas:
No entanto, não existe uma plataforma única que permita aos pesquisadores aprender, praticar, avaliar e validar esses ataques com segurança em um só lugar.
O DVAP tem como objetivo se tornar a plataforma definitiva de código aberto para educação, pesquisa e experimentação em segurança de IA.
O DVAP é uma das primeiras plataformas a combinar labs práticos de ataques a IA, benchmarking local de LLMs, desafios de CTF e relatórios profissionais em um único ambiente auto-hospedado.
Labs de Segurança de IA 15 labs intencionalmente vulneráveis cobrindo técnicas reais de ataque a IA.
Espaço de Pesquisa Inspecione prompts, memória, chamadas de ferramentas, documentos recuperados, ações de agentes e cadeias de ataque.
Benchmarking de Segurança Avalie modelos locais e externos contra suítes de ataques de segurança de IA.
Capture The Flag (CTF) Aprenda segurança de IA por meio de desafios guiados, flags, dicas e passo a passo.
Mecanismo de Relatórios Gere relatórios profissionais de descobertas e benchmarks mapeados para OWASP LLM Top 10, MITRE ATLAS, CWE e CVSS.
100% Local Execute tudo na sua própria máquina. Seus prompts, dados, descobertas e experimentos nunca saem do seu ambiente.

▶ Treine. Quebre. Defenda. Sistemas de IA. · Clique para assistir ao passo a passo completo do ataque
15 labs em contêineres, cada um com flags, dicas, passo a passo e mapeamento OWASP LLM Top 10 + MITRE ATLAS.
Cada lab roda em um contêiner Docker isolado com seu próprio endpoint de LLM baseado em Ollama.
O DVAP está alinhado ao OWASP Top 10 for Large Language Model Applications. Cada categoria é mapeada para um ou mais labs dedicados.
8 das 10 categorias cobertas em 15 labs. LLM04 e LLM10 estão no roadmap da v1.2.
graph TB
User([User Browser]) --> Nginx[Nginx :8080]
Nginx --> Web[Next.js Frontend :3000]
Nginx --> API[FastAPI Backend :8000]
API --> PG[(PostgreSQL)]
API --> Redis[(Redis)]
API --> Qdrant[(Qdrant)]
API --> Sock[Docker Socket]
Sock --> L1[Lab Container]
Sock --> L2[Lab Container]
Sock --> LN[Lab Container ...]
L1 --> Ollama[Ollama :11434]
L2 --> Ollama
LN --> Ollama
subgraph dvap-internal network
Web
API
PG
Redis
Qdrant
end
subgraph dvap-labs network
L1
L2
LN
Ollama
end
Os contêineres dos labs ficam isolados em uma rede Docker separada. Eles podem acessar o Ollama para inferência de LLM, mas não podem acessar o banco de dados, o Redis ou o Qdrant.
Duas redes Docker mantêm o tráfego dos labs separado da infraestrutura da plataforma:
dvap-internal (172.20.0.0/24) - PostgreSQL, Redis, Qdrant, API, frontend, Nginxdvap-labs (172.21.0.0/24) - contêineres dos labs e OllamaOs contêineres dos labs podem acessar o Ollama e nada mais na rede interna. Eles não podem acessar PostgreSQL, Redis ou Qdrant.
Compromisso conhecido: O contêiner da API monta /var/run/docker.sock para criar e parar contêineres de labs sob demanda (Docker-out-of-Docker). Isso concede ao processo da API acesso equivalente a root ao daemon Docker do host.
Esta é uma decisão de design intencional. O DVAP é uma instalação local para um único usuário, voltada a pesquisa e treinamento em segurança, e não um serviço multi-tenant. O compromisso é aceito porque:
Se você estiver implantando o DVAP em um ambiente compartilhado ou em rede, substitua a montagem do socket por um socket Docker rootless ou um socket Podman (/run/user/1000/podman/podman.sock) e restrinja o acesso de rede da API de acordo.
As instâncias dos labs param automaticamente após 1 hora por meio de chaves TTL no Redis. Chame POST /api/v1/instances/cleanup para acionar a limpeza antecipada.
As submissões de flags são limitadas a 15 tentativas por janela de 60 segundos por token de sessão.
Consulte .env.example para todas as variáveis. As principais a alterar antes de qualquer implantação em rede:
SECRET_KEY= # strong random value for HMAC signing
POSTGRES_PASSWORD= # change from the default
REDIS_PASSWORD= # change from the default
Um único comando mantém sua instalação atualizada:
make upgrade
Isso executa git pull e depois reconstrói e reinicia todos os contêineres. As migrações de banco de dados são executadas automaticamente a cada inicialização do contêiner da API.
Sem make:
git pull
docker compose up -d --build
.envdiff .env .env.example
# Development (default) - auto-loads docker-compose.override.yml
# Hot reload for API and frontend, source mounted as volumes
docker compose up -d
# Production - baked images, no volume mounts, 4 uvicorn workers
docker compose -f docker-compose.yml up -d
Crie as imagens antes da execução em produção:
docker build -t dvap-api:latest --target production ./backend
docker build -t dvap-web:latest --target production ./frontend
Os testes exigem uma instância PostgreSQL. Inicie a stack primeiro:
docker compose up -d postgres
export TEST_DATABASE_URL=postgresql+asyncpg://dvap:<your-postgres-password>@localhost:5432/dvap_test
cd backend
pip install -e ".[dev]"
pytest
Quer contribuir com o roadmap? Abra uma issue ou inicie uma discussão.
O DVAP é desenvolvido e mantido por Sonu Chaudhary.
Contribuições da comunidade são bem-vindas e regidas pelas diretrizes de Contribuição. A direção de longo prazo é conduzida por meio de GitHub Issues e Discussions. Adições de labs, propostas de recursos e contribuições ao roadmap são revisadas publicamente.
Não há risco de ponto único de falha: o repositório é código aberto sob Apache 2.0 e pode ser bifurcado pela comunidade a qualquer momento.
Consulte CONTRIBUTING.md para saber como adicionar labs, executar testes e enviar pull requests.
Apache 2.0 - consulte LICENSE para o texto completo.
| DVAP | DVWA | HackTheBox | Gandalf (Lakera) | Posts de Blog / Artigos |
|---|
| Vulnerabilidades específicas de IA | Sim | Não | Parcial | Parcial | Sim (somente teoria) |
| Local, sem nuvem | Sim | Sim | Não | Não | N/A |
| 15 labs dedicados de IA | Sim | Não | Não | Não | Não |
| Mecanismo de benchmark de LLM | Sim | Não | Não | Não | Não |
| CTF com flags | Sim | Sim | Sim | Não | Não |
| Cobertura do OWASP LLM Top 10 | Completo | Não | Parcial | Parcial | Varia |
| Mapeamento MITRE ATLAS | Sim | Não | Não | Não | Varia |
| Geração de relatórios | Sim | Não | Não | Não | Não |
| Espaço de pesquisa | Sim | Não | Não | Não | Não |
| Segurança de agentes e MCP | Sim | Não | Não | Não | Não |
| Gratuito e código aberto | Sim | Sim | Parcial | Não | Sim |
⚗️ Labs de Segurança de IA 15 ambientes de IA vulneráveis em contêineres, cobrindo todas as principais classes de ataque |
🚩 Desafios de CTF Flags, dicas e passo a passo mapeados para OWASP LLM Top 10 e MITRE ATLAS |
📊 Central de Benchmarks Avalie LLMs locais contra suítes de injeção de prompt, jailbreak e exfiltração de dados |
🔬 Espaço de Pesquisa Registro completo do trace de prompts, memória, chamadas de ferramentas e comportamento dos agentes |
| Lab | Dificuldade | OWASP LLM | MITRE ATLAS |
|---|
| Prompt Injection | Iniciante | LLM01 | AML.T0051, AML.T0054 |
| Memory Poisoning | Intermediário | LLM02 | AML.T0054 |
| RAG Poisoning | Intermediário | LLM02, LLM03 | AML.T0020, AML.T0043 |
| Tool Output Injection | Intermediário | LLM07 | AML.T0054, AML.T0068 |
| MCP Security | Avançado | LLM07 | AML.T0068 |
| Browser Agent Security | Avançado | LLM07, LLM09 | AML.T0054 |
| Multi-Agent Security | Avançado | LLM08 | AML.T0054 |
| Autonomous Agent Security | Avançado | LLM08, LLM09 | AML.T0054 |
| Data Exfiltration | Avançado | LLM06 | AML.T0057, AML.T0058 |
| Agent Identity and Trust Abuse | Avançado | LLM08 | AML.T0058 |
| AI Banking Platform | Intermediário | LLM01, LLM06 | AML.T0043 |
| AI Healthcare Environment | Avançado | LLM01, LLM06 | AML.T0043 |
| Multi-Tenant AI SaaS | Avançado | LLM06 | AML.T0043 |
| AI Supply Chain Security | Especialista | LLM03, LLM05 | AML.T0010, AML.T0048 |
| AI Developer Platform | Especialista | LLM03, LLM07 | AML.T0010, AML.T0068 |
| Categoria | Nome | Labs | Status |
|---|
| LLM01 | Prompt Injection | Prompt Injection, AI Banking Platform, AI Healthcare Environment | Coberto |
| LLM02 | Data and Memory Poisoning | Memory Poisoning, RAG Poisoning | Coberto |
| LLM03 | Supply Chain and Training Data Risks | RAG Poisoning, AI Supply Chain Security, AI Developer Platform | Coberto |
| LLM04 | Model Denial of Service | Planejado (v1.2) | |
| LLM05 | Insecure Supply Chain | AI Supply Chain Security | Coberto |
| LLM06 | Sensitive Information Disclosure | Data Exfiltration, AI Banking Platform, AI Healthcare Environment, Multi-Tenant AI SaaS | Coberto |
| LLM07 | Insecure Plugin Design | Tool Output Injection, MCP Security, Browser Agent Security, AI Developer Platform | Coberto |
| LLM08 | Excessive Agency | Multi-Agent Security, Autonomous Agent Security, Agent Identity and Trust Abuse | Coberto |
| LLM09 | Overreliance | Browser Agent Security, Autonomous Agent Security | Coberto |
| LLM10 | Model Theft | Planejado (v1.2) |
| Serviço | Porta (interna) | Finalidade |
|---|
| PostgreSQL | 5432 | Armazenamento de dados principal |
| Redis | 6379 | Limitação de taxa, TTL de instâncias |
| Qdrant | 6333 | Busca semântica sobre as descobertas |
| Ollama | 11434 | Inferência local de LLM |
| API | 8000 | Backend FastAPI |
| Web | 3000 | Frontend Next.js |
| Nginx | 8080 (host) | Proxy reverso |