
UltraViolet v1.0.11
Self-hosted motore di ricerca e scoperta di rete con scansione continua delle porte, sonda approfondita dei protocolli su ~100 servizi, corrispondenza locale delle CVE e ricerca full-text per l'inventario dell'infrastruttura e il monitoraggio dei rischi.
UltraViolet
Network discovery e ricerca self-hosted — il tuo Shodan personale, sulla tua infrastruttura.
Scansione TCP/UDP · ~100 sonde di protocollo · impronte TLS/JARM · corrispondenza CVE · ricerca full-text · tracciamento delta · avvisi
Avvio rapido · Funzionalità · Architettura · Documentazione · Checklist di produzione
Importante. Scansiona solo reti di tua proprietà o per le quali hai autorizzazione scritta. UltraViolet esegue ricognizione passiva dei servizi — non sfrutta vulnerabilità.
Perché UltraViolet
| Caso d'uso | Cosa ottieni |
|---|---|
| Perimetro e inventario | Scoperta continua di porte e servizi aperti su intervalli CIDR |
| Ricerca infrastruttura | Ricerca full-text su corpi HTTP, banner, TLS, DNS e CVE |
| Rischio e conformità | Corrispondenza NVD locale più CISA KEV ed EPSS — nessuna dipendenza dal cloud |
| Distribuzioni air-gapped | Archivio offline con immagini Docker, seed CVE e GeoIP MMDB su disco |
| Tracciamento modifiche | Delta tra scansioni, eventi WebSocket, avvisi su ricerche salvate |
Single tenant, un unico stack Docker Compose, controllo totale sui tuoi dati.
✨ Funzionalità
Scoperta
- Scanner TCP connect con masscan o zmap come motore di scoperta
- Sonde UDP su porte configurabili
- Limitato da
SCAN_ALLOWED_CIDRScon limiti di host e porte
Sonde approfondite (~100 protocolli)
- Web: HTTP/HTTPS, HTTP/3, GraphQL, hash favicon,
robots.txt,security.txt, stack tecnologico - TLS: catene di certificati, JARM, JA3S/JA4S, valutazione configurazione
- Posta e directory: SMTP, POP3/IMAP, LDAP, IPMI
- Database e code: MySQL, PostgreSQL, MongoDB, Redis, Kafka, MQTT, NATS, AMQP…
- ICS/SCADA: Modbus, BACnet, DNP3, IEC 104, S7Comm, ENIP, OPC UA…
- IoT e media: ONVIF, RTSP, Chromecast, AirPlay, UPnP…
- Elenco completo nella documentazione dei protocolli
Arricchimento
- DNS inverso, GeoIP (MMDB), ASN
- DNS diretto opzionale e scoperta log CT
CVE e rischio
- Mirror NVD locale con sincronizzazione in background e corrispondenza basata su impronte
- CISA KEV e FIRST EPSS
Operazioni
- RBAC (
viewer/operator/admin), JWT + token di refresh - Pianificazione scansioni, pausa/ripresa, recupero orfani dopo riavvio worker
- Prometheus
/metrics, profilo Grafana opzionale - Log di audit, rate limiting, policy di conservazione
🏗 Architettura
flowchart TB
Browser["Browser"]
FE["service-frontend<br/>React + nginx"]
API["uv-api<br/>REST · WS · metrics"]
PG[("PostgreSQL 16")]
SCAN["uv-scanner<br/>probe pipeline"]
Browser --> FE
FE -->|"/api"| API
FE -->|"/realtime"| API
API <--> PG
SCAN <--> PG
API -.->|LISTEN/NOTIFY| API
L'immagine UI della release fa da proxy per /api/ e /realtime verso uv-api — origine singola, nessuna ricompilazione del frontend per URL API.
| Directory | Scopo |
|---|---|
service-api/ | Go: uv-api (API HTTP, WebSocket, worker) + uv-scanner (pipeline) |
service-frontend/ | React 19 + Vite + RTK — scansioni, host, ricerca, dashboard |
service-documentation-frontend/ | VitePress — documentazione utente e operatore |
service-env/ | docker-compose, segreti, install.sh / upgrade.sh / backup |
Regole di sviluppo backend: CLAUDE.md.
🚀 Avvio rapido
Requisiti: Go 1.25+, Docker Engine ≥ 24, ~4 GB di RAM. Le immagini di produzione hanno come target Linux amd64.
Esecuzione da Docker Hub (nessuna compilazione da sorgente)
Percorso per principianti — scarica le immagini pubblicate con
service-env/docker-compose.registry.yml:
cd service-env
cp env.registry.example .env
# imposta POSTGRES_PASSWORD, AUTH_JWT_SECRET, AUTH_BOOTSTRAP_PASSWORD
mkdir -p geoip catalog-seed
docker compose -f docker-compose.registry.yml pull
docker compose -f docker-compose.registry.yml up -d
# UI → http://localhost:3000
Consulta Docker Registry nel sito della documentazione.
Sviluppo da sorgente
Le immagini API/scanner copiano binari precompilati da service-api/bin/ (non vengono compilati dentro Docker). make dev esegue make -C service-api build-linux prima di docker compose … --build.
git clone https://github.com/yakushstanislav/UltraViolet.git
cd UltraViolet/service-env
cp .env.example .env
mkdir -p secrets
openssl rand -hex 32 > secrets/postgres_password
openssl rand -hex 32 > secrets/auth_jwt_secret
cd ..
make dev
| URL | Scopo |
|---|---|
| http://localhost:3000 | UI (API tramite nginx /api/) |
| http://localhost:8080 | API direttamente |
| http://localhost:9090/metrics | Prometheus |
Bootstrap di sviluppo: admin / admin (solo quando APP_ENV≠production).
📖 Documentazione
Guida completa — VitePress in service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
In produzione, abilita il profilo docs:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Sezioni principali: installazione · scansione · API · distribuzione · installazione offline.
🛠 Sviluppo
Docker completo
make dev # build-linux → compose prod + dev override --build
Ricompila i binari Go dopo modifiche al backend (make -C service-api build-linux), poi riavvia o riesegui make dev.
Modalità ibrida (iterazione backend più veloce)
make dev-db # solo PostgreSQL su :5432