Vai al contenuto
NotHolyDocs

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.

Vedi in Markdown

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

StrumentoOfferto quando
web_search, read_urlWeb è attivo
darkweb_searchWeb è attivo e il messaggio lo chiede esplicitamente
cve_lookup, cve_search, advisory_lookupCVE è attivo
kb_search, kb_readSempre. Non c'è un interruttore
file_list, file_read, file_search, binary_info, archive_list, disassembleC'è 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.

StrumentoRestituisce
file_listFile 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

FunzioneChatCLIMCPResearch API
Ricerca webweb_searchagent web_searchweb_searchPOST /v1/web/search
Lettore di pagineread_urlread_urlPOST /v1/web/read
Ricerca nel dark webdarkweb_searchdarkweb_search
Record CVEcve_lookupnotholy cve, agent cve_lookupcve_lookupGET /v1/cve/{id}
Ricerca CVEcve_searchnotholy cve searchcve_searchGET /v1/cve/search
Advisory dei pacchettiadvisory_lookupadvisory_queryPOST /v1/advisories/query
Knowledge basekb_search, kb_readnotholy kb, agent kb_searchkb_search, kb_readGET /v1/kb/search, GET /v1/kb/{id}
Analisi dei fileStrumenti sui file qui sopranotholy analyzeanalyze_filePOST /v1/files
File locali e comandiagent read, grep, glob, edit, write, bash
Scope e log di engagementnotholy 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.

Prossimi passi