
OpenAnt di Knostic è il principale prodotto open source di scoperta di vulnerabilità basato su LLM, che aiuta i difensori a individuare in modo proattivo falle di sicurezza verificate, riducendo al minimo sia i falsi positivi sia i falsi negativi. La fase 1 rileva. La fase 2 attacca. Ciò che sopravvive è reale.
OpenAnt di Knostic è un prodotto open source per la scoperta di vulnerabilità basato su LLM che aiuta i difensori a trovare in modo proattivo falle di sicurezza verificate, riducendo al minimo sia i falsi positivi sia i falsi negativi. La fase 1 rileva. La fase 2 attacca. Ciò che sopravvive è reale.
Siamo piuttosto orgogliosi di questo prodotto e siamo nel processo di vulnerability disclosure per i suoi risultati, ma tieni presente che è nato come progetto di ricerca e alcune delle sue funzionalità sono ancora in beta. Accogliamo volentieri i contributi per migliorarlo.
Considerando l'esplosione delle vulnerabilità scoperte dall'IA, speriamo che OpenAnt diventi lo strumento che aiuta i manutentori di progetti open source a stare un passo avanti agli attaccanti, potendolo usare direttamente o inviando il proprio repository per la scansione senza costi.
Inoltre, poiché Knostic si concentra sulla protezione degli agenti e degli assistenti di codifica e non sulla ricerca di vulnerabilità o sulla sicurezza applicativa, e poiché amiamo l'open source, abbiamo deciso di rilasciare OpenAnt sotto licenza Apache 2. Del resto, potresti aver sentito parlare di Aardvark di OpenAI (ora Codex Security) e di Claude Code Security di Anthropic, e non abbiamo alcuna intenzione di competere con loro.
Per i dettagli tecnici, i limiti e i costi in termini di token, consulta questo post del blog: https://knostic.ai/blog/openant
Per inviare il tuo repository per la scansione: https://knostic.ai/blog/oss-scan
Ricerca e ideazione: Nahum Korda.
Productizzazione: Alex Raihelgaus, Daniel Geyshis.
Con ringraziamenti a: Michal Kamensky, Imri Goldberg, Gadi Evron, Daniel Cuthbert. Josh Grossman e Avi Douglen.
Se ti piace il nostro lavoro, dai un'occhiata a ciò che facciamo su Knostic per difendere i tuoi agenti e assistenti di codifica, impedire loro di cancellare il tuo disco rigido e il tuo codice e controllare i rischi associati alla supply chain come server MCP, estensioni e skill.
Compila il binario CLI (richiede Go 1.25+):
cd apps/openant-cli && make build
Questo compila il sorgente Go e genera il binario in apps/openant-cli/bin/openant.
Crea un symlink nel tuo PATH per poter eseguire openant da qualsiasi posizione:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
Nota: esegui questo comando dalla root del repository così che $(pwd) si risolva nel percorso assoluto corretto.
OpenAnt instrada ogni fase della pipeline attraverso una coppia (provider, modello) configurabile. Il percorso più rapido è la procedura guidata interattiva:
openant setup llm
Assegni un nome alla configurazione (es. my-llm), scegli un provider per ogni fase della pipeline (anthropic, openai o google), inserisci una API key una volta per provider, e la procedura guidata verifica ogni coppia provider+modello unica con una richiesta da 1 token prima di scrivere ~/.config/openant/config.json. Esegui una scansione con --llm-config:
openant scan /path/to/repo --llm-config my-llm
I valori predefiniti della procedura guidata rispecchiano le raccomandazioni per fase del progetto (modelli di ragionamento più potenti per rilevamento / verifica / analisi di raggiungibilità; modelli più leggeri per la generazione di contesto, report e test) — puoi sovrascrivere qualsiasi risposta a tuo piacimento.
Tutti e tre supportano il tool calling, quindi ognuno di essi può gestire le fasi enhance e verify che utilizzano il ciclo agentico di uso degli strumenti.
Se vuoi i valori predefiniti odierni per fase di Claude e nient'altro, salta la procedura guidata:
openant set-api-key sk-ant-...
openant scan /path/to/repo
Questa utilizza la configurazione integrata openant-default (compilata nel binario, non serve alcun config.json) — Claude Opus 4.6 per le fasi di rilevamento, Sonnet 4 per il resto.
La procedura guidata scrive ~/.config/openant/config.json per te, ma puoi anche modificarlo direttamente. Ogni llm-config deve elencare tutte e sette le fasi della pipeline:
{
"$schema_version": 2,
"default_llm": "my-llm",
"llm_providers": {
"anthropic": {"type": "anthropic", "api_key": "sk-ant-..."},
"openai": {"type": "openai", "api_key": "sk-proj-..."},
"google": {"type": "google", "api_key": "AIza..."}
},
"llm_configs": {
"my-llm": {
"app_context": {"provider": "openai", "model": "gpt-4o-mini"},
"llm_reach": {"provider": "anthropic", "model": "claude-opus-4-6"},
"enhance": {"provider": "openai", "model": "gpt-4o-mini"},
"analyze": {"provider": "anthropic", "model": "claude-opus-4-6"},
"verify": {"provider": "anthropic", "model": "claude-opus-4-6"},
"dynamic_test": {"provider": "google", "model": "gemini-2.0-flash"},
"report": {"provider": "google", "model": "gemini-2.0-flash"}
}
}
}
I provider accettano un base_url personalizzato per proxy compatibili con OpenAI / Anthropic (OpenRouter, vLLM, Bedrock, gateway interni). La configurazione openant-default (Claude in tutte le fasi) è integrata e sempre disponibile indipendentemente dal contenuto del file.
Il layer degli adapter di OpenAnt è una piccola ricetta Python — un file Python che implementa il Protocol LLMAdapter, una factory per l'harness dei contract-test, più una voce di registro — e questo da solo è sufficiente per eseguire l'adapter da una configurazione scritta a mano. Per averlo offerto anche dalla procedura guidata openant setup llm e superare la sua verifica pre-salvataggio, aggiungi alcuni punti di contatto Go in apps/openant-cli/cmd/setup.go (l'elenco dei provider supportati, un case di verifica, le mappe dei modelli predefiniti per fase) oltre a una funzione Go di verifica. I 12 contract test vengono eseguiti automaticamente contro il tuo adapter una volta collegato. Consulta docs/features/llm-providers/HOW_TO_ADD_AN_ADAPTER.md per la ricetta completa.
Il codice di parsing, potenziamento, analisi e reportistica di OpenAnt richiede Python 3.11+. La CLI Go sceglie un interprete in questo ordine:
OPENANT_PYTHON (impostala per fissare un interprete specifico — es. OPENANT_PYTHON=python3.11).~/.openant/venv/ (creato automaticamente al primo utilizzo). La CLI usa bin/python su Linux/macOS e Scripts\python.exe su Windows.python3 / python nel PATH.Se nessuno fornisce Python 3.11+, il comando termina con un errore che rimanda a python.org. Per ricostruire un venv gestito obsoleto (es. dopo un aggiornamento di Python), elimina ~/.openant/venv/ ed esegui di nuovo qualsiasi comando openant.
OpenAnt crea due directory:
~/.config/openant/ — configurazione della CLI (config.json). Memorizza la tua API key, il progetto attivo e le preferenze. I permessi dei file sono limitati a 0600.~/.openant/ — dati di progetto. Ogni progetto inizializzato riceve un workspace in ~/.openant/projects/<org>/<repo>/ contenente project.json e una directory scans/ con gli output per commit.Indirizza OpenAnt verso un repository. Il flag -l (linguaggio) è obbligatorio — usa go o python.
# Remote — clones the repo
openant init <repo-url> -l go
# Remote — pin to a specific commit
openant init <repo-url> -l go --commit <sha>
# Local — references the directory in-place
openant init <path-to-repo> -l go --name <org/repo>
Questo crea un workspace di progetto e lo imposta come progetto attivo. Tutti i comandi successivi operano automaticamente sul progetto attivo — non servono argomenti di percorso.
Ogni fase prende l'output della precedente dalla directory di scansione del progetto:
openant parse
openant enhance
openant analyze
openant verify
openant build-output
openant report -f summary
Oppure esegui l'intera pipeline con un solo comando:
openant scan --verify
La pipeline opera su un progetto alla volta. Eseguire openant init imposta il progetto appena inizializzato come attivo, quindi tutti i comandi successivi lo prendono di default come destinazione.
Se lavori con più progetti, hai due opzioni:
# Option 1: switch the active project
openant project switch org/repo
openant parse
# Option 2: target a project directly with -p
openant parse -p org/repo
openant project list # shows all projects, marks active
openant project show # details of active project
openant project switch <org/repo> # switch active project
Cose in elenco, in nessun ordine particolare:
openant setup llm) secondo la guida per i contributori. Abbassa la barriera per l'inferenza locale / on-prem.PR benvenute su qualsiasi di questi — apri prima una issue se l'ambito non è banale, così possiamo allinearci prima che tu costruisca.
Questo progetto è concesso in licenza sotto Apache 2. Consulta il file LICENSE per i dettagli.
Questo progetto è destinato esclusivamente a scopi difensivi e di ricerca. OpenAnt è ancora in fase di ricerca, usalo con attenzione e a tuo rischio. Knostic, OpenAnt e gli sviluppatori, ricercatori e manutentori associati non si assumono alcuna responsabilità per qualsiasi uso improprio, danno o conseguenza derivante dall'uso di questo strumento.
Analizza solo codice di tua proprietà o per il quale hai esplicito permesso di testare. Se scopri una vulnerabilità nel progetto di qualcun altro con mezzi legittimi, segui le pratiche di divulgazione coordinata delle vulnerabilità e segnalala ai manutentori prima di renderla pubblica.
| Tipo di provider | API key da | Note |
|---|
anthropic | console.anthropic.com | Adapter di riferimento. NON incluso negli abbonamenti Claude Pro / Max — fatturazione separata. |
openai | platform.openai.com | NON incluso negli abbonamenti ChatGPT / Codex — fatturazione separata. |
google | aistudio.google.com | NON incluso in Gemini Advanced — fatturazione separata. |