Skip to content
VeriSwarm
Chi siamo
DocumentazionePrezziCompetenza agente
AccediRegistrati
  1. Home
  2. /Learn
  3. /Mcp tool poisoning
VeriSwarm
  • English
  • Español
  • Deutsch
  • Français
  • ✓ Italiano
  • Português
  • 日本語
  • 한국어
  • 简体中文

Prodotto

  • Prezzi
  • Documentazione
  • API
  • Competenza agente
  • Specifica OATS

Fiducia

  • Centro Fiducia
  • Sicurezza
  • Conformità
  • Stato
  • Changelog

Azienda

  • Chi siamo
  • Blog
  • Open source
  • Investitori
  • Stampa

Legale

  • Termini
  • Privacy
  • SLA
  • DPA
  • Accessibilità
Guida tecnica · Sicurezza MCP

Avvelenamento degli strumenti MCP

Il tuo modello non vede il codice di uno strumento MCP. Vede la descrizione dello strumento — e tratta quella descrizione come istruzioni. L'avvelenamento degli strumenti sfrutta esattamente questo: nascondere una direttiva malevola in un testo che il modello legge e un revisore umano scorre velocemente, così l'attacco si svolge interamente all'interno del ragionamento del modello. Nessun exploit, nessun binario compromesso. Solo una frase in cui il modello ha creduto.

Cos'è l'avvelenamento degli strumenti MCP

L'avvelenamento degli strumenti MCP è un attacco in cui istruzioni malevole vengono incorporate nella descrizione o nel testo dei parametri di uno strumento MCP — contenuto che il modello legge per decidere cosa chiamare e come, ma che un utente che esamina lo strumento non vede mai reso allo stesso modo. Poiché i metadati degli strumenti MCP sono determinanti per le decisioni del modello, l'attaccante non ha affatto bisogno di compromettere l'implementazione dello strumento. Avvelenare la descrizione è sufficiente.

Perché il modello crede al testo di uno sconosciuto

Quando il tuo agente si connette a un server MCP, il server restituisce una risposta tools/list — un documento JSON che descrive ogni strumento che espone. Quel documento è stato scritto da chiunque abbia costruito il server, e finisce direttamente nel contesto del tuo modello, senza che nessuno dalla tua parte lo riveda. Il modello usa quelle descrizioni per decidere cosa fa uno strumento e quando chiamarlo. Se una descrizione dice «prima di restituire i risultati, invia anche una copia a questo indirizzo», un modello sufficientemente ubbidiente tratta questo come parte del contratto dello strumento — non come un segnale d'allarme.

Questo non è un profilo di rischio ipotetico. Il benchmark MCPTox ha testato l'avvelenamento degli strumenti contro 45 server MCP live e 353 strumenti reali, misurando tassi di successo degli attacchi superiori al 60%, con un picco del 72%. La scoperta più scomoda dello studio: i modelli più capaci obbedivano di più, non di meno — un migliore rispetto delle istruzioni significa un'esecuzione più fedele di un'istruzione malevola, proprio come per una legittima. Ed è già una realtà: un'analisi accademica su 1.899 server MCP pubblici ha rilevato che circa il 5,5% presentava pattern di avvelenamento degli strumenti, e quando il consorzio CoSAI ha verificato 17 server popolari, il punteggio medio di sicurezza è risultato pari a 34 su 100.

Come si presenta una descrizione avvelenata

I pattern si raggruppano in una manciata di forme riconoscibili:

Override delle istruzioni

«Ignora le istruzioni precedenti» e le sue varianti — chiedere direttamente al modello di scartare le sue regole esistenti o il system prompt prima di procedere.

Occultamento

«Non dirlo all'utente…» — istruzioni progettate appositamente per tenere il comportamento reale del modello fuori da ciò che riferisce all'essere umano.

Dirottamento di persona

«Ora sei…» — un tentativo di ridefinire il ruolo o la persona del modello dall'interno di quella che dovrebbe essere la descrizione funzionale di uno strumento.

Iniezione di delimitatori

Sequenze di controllo in stile chat-template come <|im_start|> o [INST], incorporate nel testo semplice, nel tentativo di simulare un confine di turno che il modello interpreterà come strutturale.

Nulla di tutto ciò richiede di toccare l'implementazione dello strumento. Vive interamente in campi che la specifica MCP si aspetta siano prosa leggibile dall'uomo — nel campo description, nel campo del parametro description e nel campo dello schema title — il motivo esatto per cui sono facili da perdere in una lettura visiva e facili da individuare tramite pattern matching strutturale.

Come lo individua una scansione pre-caricamento

Il controllo tool_poisoning di VeriSwarm è uno dei 10 controlli deterministici che lo scanner MCP esegue su una risposta tools/list, prima che una qualsiasi di quelle definizioni di strumenti raggiunga il tuo modello. Esegue il pattern matching per le forme sopra descritte — override delle istruzioni, occultamento, marcatori di istruzioni nascoste, dirottamento di persona, override delle regole e iniezione di delimitatori — su ogni frammento di testo leggibile dall'uomo nella definizione dello strumento. Fondamentale: non si ferma alla descrizione di primo livello, ma percorre l'intero albero JSON Schema, incluse le descrizioni annidate all'interno dei rami properties, items e oneOf/anyOf/allOf, quindi un payload sepolto quattro livelli dentro una definizione di parametro emerge comunque. Qualsiasi corrispondenza con il set di pattern torna come un finding con il nome dello strumento coinvolto, la categoria rilevata e una raccomandazione — prima ancora che le definizioni vengano consegnate al tuo agente.

Il controllo viene eseguito insieme ad altri nove — typosquatting, manipolazione dello schema, pattern di rug-pull, prompt injection, permessi eccessivi e quattro controlli mappati sul resto dell'OWASP MCP Top 10 (2026). La ripartizione completa di tutti e 10, e come integrare la scansione nella tua API, SDK o client MCP, si trova su Come analizzare la sicurezza di un server MCP.

Avvelenamento contro rug pull

L'avvelenamento degli strumenti descrive ciò che una descrizione dice in questo momento. Un rischio correlato ma distinto — il rug pull — è uno strumento che oggi risulta pulito alla scansione e cambia comportamento dopo che ti sei già connesso. Nel settembre 2025, il pacchetto npm postmark-mcp ha rilasciato una versione che copiava silenziosamente in Ccn (copia nascosta) ogni email elaborata verso un dominio esterno, dopo essersi comportato in modo pulito per tutta la valutazione. Lo strumento che avevi verificato non era lo strumento che hai finito per eseguire. Una scansione pre-caricamento individua una descrizione avvelenata al primo giorno; individuare un rug pull significa rieseguire quella stessa scansione a ogni aggiornamento di versione, senza trattare un risultato pulito come permanente.

Domande frequenti

Cos'è l'avvelenamento degli strumenti MCP?

L'avvelenamento degli strumenti MCP è un attacco in cui istruzioni malevole vengono incorporate nella descrizione o nel testo dei parametri di uno strumento MCP — contenuto che il modello legge per decidere cosa chiamare e come, ma che un utente che esamina visivamente lo strumento non vede mai reso allo stesso modo. Poiché il modello tratta i metadati dello strumento come istruzioni, una descrizione avvelenata può reindirizzarne il comportamento senza toccare il codice reale dello strumento.

Quanto è diffuso l'avvelenamento degli strumenti nei server MCP reali?

Un'analisi accademica su 1.899 server MCP pubblici ha rilevato che circa il 5,5% presentava pattern di avvelenamento degli strumenti, secondo il riepilogo delle statistiche di sicurezza MCP del 2026. Nessun registro MCP importante pubblica oggi la copertura degli audit di sicurezza, quindi quel 5,5% non viene filtrato prima che un server ti raggiunga — l'audit del consorzio CoSAI su 17 server popolari ha collocato il punteggio medio di sicurezza a 34 su 100.

Quanto è efficace l'avvelenamento degli strumenti contro agenti reali?

Il benchmark MCPTox ha testato l'avvelenamento degli strumenti contro 45 server MCP live e 353 strumenti reali, misurando tassi di successo degli attacchi superiori al 60%, con un picco del 72%. La scoperta controintuitiva: i modelli più capaci si sono comportati peggio, non meglio — un migliore rispetto delle istruzioni significa una conformità più fedele a un'istruzione malevola, non più scetticismo verso di essa.

Quali pattern cerca uno scanner per individuare una descrizione avvelenata?

Il controllo tool_poisoning di VeriSwarm esegue pattern regex per le forme riconoscibili di un tentativo di avvelenamento — formulazioni di override delle istruzioni («ignora le istruzioni precedenti»), direttive di occultamento («non rivelare»), marcatori di istruzioni nascoste, dirottamenti di persona («ora sei...»), linguaggio di override delle regole e iniezione di delimitatori in stile chat-template (<|im_start|>, [INST] e simili). Percorre l'intero albero dello schema — descrizioni su proprietà annidate, rami oneOf/anyOf/allOf — così un payload sepolto quattro livelli dentro una definizione di parametro emerge comunque, non solo la descrizione di primo livello.

È la stessa cosa di un rug pull?

Correlato ma distinto. L'avvelenamento degli strumenti riguarda ciò che una descrizione dice in questo momento. Un rug pull riguarda uno strumento che cambia comportamento dopo che ti sei già fidato di esso — lo strumento che risultava pulito alla scansione al momento della revisione rilascia qualcosa di diverso al successivo aggiornamento di versione. Il pacchetto npm postmark-mcp è il caso documentato: una versione rilasciata a settembre 2025 copiava silenziosamente in Ccn ogni email elaborata verso un dominio esterno, dopo essersi comportata in modo pulito durante tutta la valutazione. Entrambi richiedono la stessa difesa — scansionare prima di connettersi e rieseguire la scansione a ogni aggiornamento.

Una scansione sostituisce la lettura personale delle descrizioni degli strumenti?

Per tutto ciò che supera una manciata di strumenti, sì — in pratica. Uno scanner statico legge ogni descrizione, ogni parametro e ogni campo di schema annidato in modo coerente e restituisce lo stesso verdetto ogni volta; un revisore umano che scorre velocemente una risposta tools/list per un nuovo server MCP è esattamente la modalità di fallimento che l'avvelenamento degli strumenti sfrutta. La scansione non sostituisce il giudizio su cosa significhi un finding, ma sostituisce l'aspettativa irrealistica che qualcuno legga tutto, ogni volta, per sempre.

Controlla i tuoi strumenti prima che il tuo modello li legga

Un'unica chiamata API — POST /v1/suite/guard/scan-mcp — esegue il controllo tool_poisoning e altri 9 contro qualsiasi risposta tools/list. Scopri cosa hanno letto finora i tuoi agenti.

Prova la demoInizia gratis