
Scopri i servizi AI esposti
Piattaforma di discovery e test di sicurezza su scala Internet per infrastrutture AI esposte.
AIMap trova, identifica tramite impronte digitali e sottopone a test di sicurezza gli endpoint AI pubblicamente esposti — server MCP, istanze Ollama, proxy vLLM/LiteLLM, catene LangServe, app Gradio, nodi ComfyUI e altro. Pensalo come Shodan, ma costruito appositamente per la superficie d'attacco degli agenti AI.
Creato da Bishop Fox.
Avviso Questo strumento è destinato esclusivamente a test di penetrazione autorizzati e ricerca sulla sicurezza. Devi usare AIMap solo contro sistemi che possiedi o per i quali hai ricevuto esplicito permesso scritto di test. L'accesso non autorizzato ai sistemi informatici è illegale. Bishop Fox non si assume alcuna responsabilità e non è responsabile di usi impropri o danni causati da questo strumento. Usalo in modo responsabile.
┌─────────────┐ ┌──────────────┐ ┌───────────┐
│ React SPA │────▶│ FastAPI │────▶│ MongoDB │
│ (Vite) │ WS │ Backend │ │ │
└─────────────┘ └──────┬───────┘ └───────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Shodan │ │ Nuclei │ │ Redis │
│ API │ │ Scanner │ │ Streams │
└──────────┘ └──────────┘ └──────────┘
Backend — Python/FastAPI con MongoDB asincrono (Motor), Redis Streams per lo streaming dei log degli attacchi e un motore di discovery che orchestra query Shodan → controlli di liveness httpx → scansioni dei template Nuclei → pipeline di arricchimento.
Frontend — React 18 + TypeScript + Tailwind CSS + shadcn/ui. Include un globo 3D (globe.gl), streaming degli attacchi in tempo reale via WebSocket e un'interfaccia di ricerca in stile Shodan.
Scanning — 5 template Nuclei YAML personalizzati per il rilevamento di server MCP, enumerazione degli strumenti MCP, rilevamento di API compatibili con OpenAI, rilevamento di LangServe e test di fuga del prompt.
| Protocollo | Metodo di Rilevamento | Query Shodan |
|---|---|---|
| MCP (Model Context Protocol) | trasporto SSE, JSON-RPC, percorsi /mcp/sse | 4 query |
| Ollama | porta predefinita 11434, impronta del prodotto | 3 query |
| vLLM / LiteLLM / LocalAI | endpoint /v1/models, /v1/chat/completions | 4 query |
| LangServe / LangChain | endpoint playground, marcatori langserve | 2 query |
| OpenClaw / Clawdbot | dashboard di controllo, porta 18789 | 3 query |
| Open WebUI / LibreChat | rilevamento basato sul titolo | 2 query |
| Gradio | titolo, filigrana nel footer, hash favicon | 3 query |
| Streamlit | titolo, hash favicon | 2 query |
| ComfyUI / Stable Diffusion | titolo, rilevamento basato sulla porta | 4 query |
| HuggingFace TGI | marcatori HTML | 1 query |
| Inferenza generica | percorsi /api/generate, /api/tags | 2 query |
Ogni endpoint riceve un punteggio di rischio da 0 a 10 calcolato da:
| Fattore | Impatto sul Punteggio |
|---|---|
| Nessuna autenticazione | +4.0 |
| Stato autenticazione sconosciuto | +1.0 |
| 10+ strumenti esposti | +2.0 |
| 5+ strumenti esposti | +1.0 |
Strumento a rischio critico (es. exec_code, run_shell) | +1.0 ciascuno |
Strumento ad alto rischio (es. query_db, file_read) | +0.5 ciascuno |
CORS aperto (*) | +1.0 |
| Nessun TLS | +0.5 |
| Prompt di sistema esposto | +0.5 |
| Modelli esposti | +1.0 |
| Modello non censurato rilevato | +2.0 |
| Registrazione abilitata (nessun invito richiesto) | +1.5 |
| Combinazione pericolosa (es. nessuna autenticazione + strumento di esecuzione codice) | +1.0 ciascuna |
# Clone
git clone [email protected]:BishopFox/aimap.git
cd aimap
# Configure
cp .env.example .env
# Edit .env — at minimum set SHODAN_API_KEY
# Launch
docker compose up --build
Questo avvia 4 servizi:
Apri http://localhost per accedere all'interfaccia.
# Backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# Frontend (separate terminal)
cd frontend
npm install
npm run dev # starts on http://localhost:5173
Assicurati che MongoDB sia in esecuzione localmente sulla porta 27017. Redis è opzionale — il backend utilizza buffer in memoria quando Redis non è disponibile.
Crea un file .env nella radice del progetto:
# Required
SHODAN_API_KEY=your_shodan_api_key
# Optional — Censys as an additional discovery source
CENSYS_API_ID=
CENSYS_API_SECRET=
# Optional — enables AI-powered attack analysis
ANTHROPIC_API_KEY=
# MongoDB (defaults work for local dev)
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB=aimap
# Redis (defaults work for local dev; optional)
REDIS_URL=redis://localhost:6379/0
# CORS (default allows all origins)
CORS_ORIGINS=*
# Modal serverless (dispatches scans/attacks to Modal containers)
MODAL_ENABLED=false
# Clerk auth — see below
CLERK_ISSUER=
AIMap usa Clerk per l'autenticazione. Per abilitarla:
# .env (project root)
CLERK_ISSUER=https://your-app.clerk.accounts.dev
# frontend/.env.local
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
Per disabilitare l'autenticazione (sviluppo locale, demo): lascia CLERK_ISSUER vuoto o non impostato. Il backend accetterà tutte le richieste con un'identità utente sintetica local.