Chat
Strumenti dell'harness
Cosa fa ogni strumento dell'harness, quando gira, cosa significano i risultati e i limiti in chat, CLI, MCP e Research API.
L'harness è l'insieme degli strumenti attorno ai modelli. In chat il modello decide quando chiamarli, e vedi ogni chiamata con target e durata. I risultati arrivano al modello tra marcatori con un id casuale, etichettati come contenuto non attendibile.
Gli strumenti server leggono soltanto: pagine pubbliche, indici di ricerca, i nostri mirror e i file che alleghi. Nessuno esegue scansioni, sonda o invia payload a un target. L'agente CLI è l'unica parte che esegue comandi, sulla tua macchina e con la tua approvazione.
Quando la chat offre ogni strumento
| Strumento | Offerto quando |
|---|---|
web_search, read_url | Web è attivo |
darkweb_search | Web è attivo e il messaggio lo chiede esplicitamente |
cve_lookup, cve_search, advisory_lookup | CVE è attivo |
kb_search, kb_read | Sempre. Non c'è un interruttore |
file_list, file_read, file_search, binary_info, archive_list, disassemble | C'è un file allegato |
Un'esecuzione si ferma a 12 passi del modello, 5 chiamate agli strumenti alla volta, 60 secondi per strumento e 10 minuti in totale. I risultati entrano nella conversazione e sono fatturati come token di input al prezzo del modello.
Ricerca web
web_search(query, count?) accetta una ricerca fino a 400 caratteri e restituisce titoli, URL ed estratti di pagina, 5 risultati di default e massimo 10. I risultati di NVD, cve.org, CISA, GitHub, Seclists, PortSwigger e OWASP vengono prima, e le ricerche identiche restano in cache per 15 minuti. Un risultato può essere sbagliato o vecchio, quindi apri la fonte prima di fidarti.
Lettura di una pagina
read_url(url) restituisce il testo di una pagina pubblica. In chat apre solo URL che hai scritto o che arrivano da un risultato di ricerca, CVE, advisory o knowledge base. I link dentro una pagina e i risultati .onion non si possono aprire.
Accetta http(s) sulle porte 80 e 443 e HTML, testo, JSON o XML, fino a 10 MB e 15 secondi. Ogni indirizzo e redirect viene controllato, la connessione resta fissata all'IP controllato e robots.txt viene rispettato. Rifiuta IP letterali, stringhe di attacco, percorsi di file esposti come /.git e /.env, e più di 40 percorsi distinti su un host in 10 minuti. Viene rifiutata anche una URL che contiene testo di un file allegato.
Ricerca nel dark web
darkweb_search(query, max_results?, engines?) accetta una ricerca fino a 200 caratteri e restituisce fino a 30 voci. Ometti engines per usare tutti gli indici.
La chat offre questo strumento solo quando lo chiedi esplicitamente. Il messaggio deve contenere dark web, deep web, darknet, .onion, onion site, hidden service o Tor, oppure essere il seguito diretto di un turno che li conteneva. Nominare un gruppo ransomware o un leak non basta, e quelle domande vanno a web_search. Con Web spento, lo strumento resta spento.
Ogni risultato è una voce di indice di ricerca: titolo, URL .onion, estratto e indice di provenienza. L'harness legge le pagine dei risultati degli indici via Tor e non apre, non scansiona e non scarica mai una pagina elencata. Tratta ogni voce come una pista non verificata e potenzialmente ostile.
Il limite è di 5 ricerche al minuto per utente. I risultati sponsorizzati vengono scartati. Un filtro di sicurezza rifiuta le ricerche e scarta i risultati su materiale di abuso sessuale su minori. Senza un percorso Tor lo strumento lo segnala e può usare un indice sul web aperto.
Via MCP, chiamare darkweb_search è già la richiesta esplicita. La Research API e la CLI non hanno un percorso per il dark web.
Dati CVE
cve_lookup(id) restituisce un record consolidato: descrizione NVD, punteggio e vettore CVSS 3.1 o 4.0, CWE, CPE interessati con versione corretta quando NVD la riporta, riferimenti, punteggio e percentile EPSS, e stato CISA KEV con data di inserimento e uso noto in ransomware. Ogni fonte mostra quando è stata recuperata. Una CVE senza CVSS risulta non valutata e nulla viene stimato. Un ID che il mirror non ha viene chiesto alle fonti una volta.
cve_search(query?, vendor?, kev?, min_cvss?, min_epss?) restituisce fino a 20 risultati ordinati per corrispondenza del testo ed EPSS. Interroga NVD per parola chiave solo quando il mirror non trova nulla.
Advisory dei pacchetti
advisory_lookup(name, ecosystem, version?) restituisce vulnerabilità note da OSV, fino a 50. Riporta ciò che OSV elenca per quel nome e quella versione. Dimostrare che il codice vulnerabile è raggiungibile nella tua build resta a te. Via MCP lo strumento si chiama advisory_query.
Knowledge base
kb_search(query, domain?, source?, tool?) cerca nella knowledge base curata e kb_read(id, from?, limit?) apre un documento sezione per sezione. I domini sono web, api, mobile, offensive, tools, cloud, ir e attack. Ogni risultato riporta fonte, licenza e attribuzione. Una tecnica di nicchia può mancare, e il passo successivo è la ricerca web.
File
Gli strumenti sui file leggono ciò che il parser statico ha estratto da un allegato. Nulla di ciò che carichi viene eseguito, e non c'è analisi dinamica. Ogni file viene analizzato in un container gVisor usa e getta, senza rete, con root in sola lettura e senza segreti. Un file oltre i limiti o un errore del parser finiscono come rejected, con il motivo.
| Strumento | Restituisce |
|---|---|
file_list | File allegati con stato, tipo, dimensione e avvisi |
file_read(file_id, from?, limit?) | Testo estratto a blocchi, con localizzatore di file e riga |
file_search(query) | Blocchi che contengono le tue parole, in tutti gli allegati |
binary_info(file_id) | SHA-256, dimensione, entropia e, per ELF e PE, formato, entry point, sezioni e import |
archive_list(file_id) | L'indice dell'archivio |
disassemble(file_id) | Un'anteprima: i primi 4 KB del file decodificati come x86-64, massimo 200 istruzioni |
Non ci sono decompiler né grafo di flusso. Gli archivi si fermano a profondità 3, 10.000 voci, 2 GB espansi e rapporto 100:1. Il testo si ferma a 5 milioni di caratteri per file. Le immagini danno solo le dimensioni. L'avviso credentials_detected significa che il parser ha trovato uno schema di chiave o token. I tipi di file sono in File nella chat.
Dove si trova ogni strumento
| Funzione | Chat | CLI | MCP | Research API |
|---|---|---|---|---|
| Ricerca web | web_search | agent web_search | web_search | POST /v1/web/search |
| Lettore di pagine | read_url | read_url | POST /v1/web/read | |
| Ricerca nel dark web | darkweb_search | darkweb_search | ||
| Record CVE | cve_lookup | notholy cve, agent cve_lookup | cve_lookup | GET /v1/cve/{id} |
| Ricerca CVE | cve_search | notholy cve search | cve_search | GET /v1/cve/search |
| Advisory dei pacchetti | advisory_lookup | advisory_query | POST /v1/advisories/query | |
| Knowledge base | kb_search, kb_read | notholy kb, agent kb_search | kb_search, kb_read | GET /v1/kb/search, GET /v1/kb/{id} |
| Analisi dei file | Strumenti sui file qui sopra | notholy analyze | analyze_file | POST /v1/files |
| File locali e comandi | agent read, grep, glob, edit, write, bash | |||
| Scope e log di engagement | notholy engage |
POST /v1/chat/completions, /v1/responses e /v1/messages sono gli endpoint grezzi dei modelli e non hanno strumenti dell'harness. Il modello riceve solo le function tool che invii, e le esegue il tuo codice. Per usare questi dati dal tuo codice, chiama la Research API o MCP.