
Sistema de defesa reativa para websites alimentado por IA que detecta ataques, os analisa e corrige autonomamente o código-fonte em tempo real usando agentes LLM.
Sistema de defesa reativo para webapps, alimentado por IA, projetado para resistir a ataques de IA em tempo real.
O Mahoraga Defender é uma Prova de Conceito (PoC) de um sistema de defesa reativo, agnóstico ao tipo de atacante, operando em tempo real. O mecanismo central envolve enganar um adversário para realizar descobertas e ataques em um ambiente benigno e falso (ambiente "sombra") e registrar esses ataques. Em seguida, um agente LLM analisa os logs e repassa os detalhes de quaisquer explorações detectadas para mais agentes LLM corrigirem as vulnerabilidades e implantarem os patches.
O sistema foi projetado para ser totalmente automatizado, com otimização de custos de API em mente. Uma interface gráfica foi criada para monitorar facilmente os logs de tráfego, a atividade dos agentes e o pipeline de patches, além de controlar o número de agentes a serem implantados.
O site alvo (vítima) é um fork do crAPI (Completely Ridiculous API), uma aplicação web intencionalmente vulnerável criada pela OWASP para ensinar testes de segurança de API. O crAPI simula uma plataforma de proprietários de veículos com microsserviços que cobrem as vulnerabilidades de API do OWASP Top 10. O defensor foi projetado para distinguir claramente entre sessões de usuário normais e adversárias, de modo que os usuários comuns não experimentem qualquer queda na qualidade da experiência enquanto o defensor protege o site dos atacantes.
Nosso fork (crapi-fork/) adiciona:
Uma cópia original é mantida em crapi-original/ para que o ambiente possa ser redefinido entre os experimentos.
crapi-fork/. Opera em um ambiente bash isolado com acesso restrito apenas a crapi-fork/.Na implantação, os serviços Python são recarregados a quente via gunicorn (instantâneo), enquanto os serviços Java/Go são reconstruídos via docker compose up -d --build.
Por que não há um agente Testador? Consideramos adicionar um agente dedicado de teste de usuário e um ambiente de teste separado, mas removemos ambos para manter o sistema leve.
conda create -n XYZ python=3.13, depois conda activate XYZ).pip install -r requirements.txt./start.sh a partir do diretório raiz do projeto — redefine o código fonte de crapi-fork/ a partir de crapi-original/, reconstrói todos os serviços, planta flags e honeypots.python3 -m harness.main --app-url http://localhost:8888 -v.localhost:8888 (a descrição do desafio está em localhost:8888/challenge). Se estiver testando com um agente de IA, o agente não deve ter acesso a processos docker internos, pois isso seria considerado trapaça.localhost:3000 para ver logs em tempo real, ações dos agentes, patches, flags capturadas, etc.docker compose down -v para remover os containers docker e bancos de dados que foram iniciados para este projeto.Painel: http://localhost:3000
Uma barra de status global de agentes é visível em todas as abas, mostrando a saúde do agente (ativo/travado/ocioso/erro) com controles de escala.
Visualizador de logs de requisições de produção/sombra em tela dividida em tempo real, com entradas coloridas por severidade e agrupamento de tráfego
Feed de atividade por agente com prompts do sistema, chamadas de ferramentas e rótulos do modelo LLM
Quadro Kanban: Detectado → Corrigindo → Revisando → Implantado, com painel de detalhes redimensionável
Diffs de código, arquivos modificados, comandos de reversão e linha do tempo por patch
O sistema usa qualquer API compatível com OpenAI. Configure os modelos em config/llm.yaml:
# Shadow Analyzer — reads shadow logs to detect exploits (no tool calling)
shadow_analyzer:
provider: gemini
model: gemini-2.5-flash
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.30
output_per_million: 2.50
# Fixer — patches source code (tool-calling agent)
fixer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
# Reviewer — verifies patches (tool-calling agent)
reviewer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
Para trocar de provedor, altere provider e model, depois defina a chave de API correspondente em harness/.env:
Provedores suportados: OpenAI, Gemini, Anthropic, Groq, Together, Ollama, Mistral, DeepSeek, Fireworks, xAI, Perplexity, OpenRouter, Zhipu.
Adicione provedores personalizados incluindo sua URL base na seção providers do YAML.
providers:
openai: https://api.openai.com/v1
gemini: https://generativelanguage.googleapis.com/v1beta/openai/
anthropic: https://api.anthropic.com/v1/
groq: https://api.groq.com/openai/v1
... # add more if needed
Nota: Apenas alguns provedores de API têm limite de taxa alto o suficiente para suportar 3+ agentes trabalhando simultaneamente. O Google Gemini é um deles.
Agradecimentos especiais a d3lta05 (LinkedIn) e aleemladha pela ajuda com os testes de penetração.