TL;DR
- Un server MCP non è un plugin, è un detentore di credenziali che parla con il tuo agente a ogni chiamata: le sue descrizioni dei tool e i risultati dei tool finiscono nel contesto del modello con lo stesso peso delle tue istruzioni.
- GhostSplice mostra che l'allineamento del modello non è una difesa: un ordine di furto dato in un unico blocco viene rifiutato al 100% da GPT-4o, Gemini 2.0 Flash e Llama 3.3; lo stesso ordine spezzato tra una descrizione di tool e un risultato di tool viene eseguito al 100%.
- Il client conta quanto il modello: Claude Haiku 4.5 rifiuta tutto via API e cede al 100% nel test a tre frammenti eseguito dentro Cursor.
- La supply chain è già un filo scoperto: CVE-2025-6514 ha colpito mcp-remote, un proxy OAuth scaricato più di 400,000 volte, con una command injection innescata da un server malevolo.
- Il rilevamento a livello di protocollo di Cloudflare e WriteGuard sono i primi veri controlli enterprise, ma richiedono Zero Trust con ispezione TLS, e un server stdio locale non compare mai al loro interno.
- Per uno sviluppatore solo o un piccolo team la difesa è manuale: inventario, provenienza, token con scope ristretto, un controllo umano su ogni scrittura e l'output dei tool trattato come dato.
Cosa dicono le fonti
Un server MCP fa da ponte tra il tuo agente e un servizio esterno, quindi conserva al posto tuo ciò che serve per connettersi: token, chiavi API, credenziali di service account. L'analisi dei leak pubblicata il 17 agosto parte da un'osservazione brusca: i token vengono incollati direttamente nelle stringhe di configurazione e restano leggibili su disco, a un commit frettoloso di distanza da un repository Git s2. La stessa analisi indica l'eccesso di permessi come secondo buco: i diritti ampi concessi in sviluppo passano in produzione invariati, così una sola compromissione espone molto più di quanto l'uso reale giustificasse s2. Il quarto buco è la prompt injection: un agente legge tutto ciò che i suoi tool riportano, una pagina web, un ticket, un documento interno, e un'istruzione nascosta in quel contenuto viene seguita come se arrivasse da te, usando tool legittimi per esporre ciò che dovevano proteggere s2.
Il terzo buco è la supply chain. CVE-2025-6514 ha colpito mcp-remote, un proxy OAuth scaricato più di 400,000 volte: un server malevolo poteva innescare una command injection sulla macchina dello sviluppatore, eseguire codice e andarsene con le credenziali. Un pacchetto npm popolare, installato in una riga, e la porta era aperta s3.
L'ecosistema è cresciuto più in fretta delle sue protezioni. Il registry ufficiale supera i 9,600 server pubblicati, i deployment di server remoti sono moltiplicati per cinque da maggio 2025, chiunque può pubblicare e non c'è validazione centrale; il tuo agente dà a una voce qualsiasi la stessa fiducia di uno strumento ufficiale s4. A maggio la NSA ha pubblicato una guida dedicata alla sicurezza di MCP, affermando che l'adozione del protocollo ha superato la costruzione delle sue protezioni s5.
GhostSplice, battezzato dal gruppo di ricerca ASSET, fa eseguire l'esfiltrazione all'agente stesso. Invece di scrivere l'ordine di furto completo, il server malevolo lo divide: un frammento in una descrizione di tool, l'altro nel risultato che quel tool restituisce. Ogni pezzo sembra innocuo da solo; l'agente ricompone tutto ciò che entra nel suo contesto ed esegue l'intera istruzione in buona fede s1. I numeri sono il punto. Con l'istruzione data in un unico blocco, GPT-4o, Gemini 2.0 Flash e Llama 3.3 rifiutano al 100%. Con l'istruzione frammentata, tutti e tre eseguono al 100% s1. I modelli Claude resistono meglio in superficie, ma Claude Haiku 4.5 rifiuta tutto via API e cede al 100% nel test a tre frammenti eseguito dentro Cursor: lo stesso modello rifiuta in un client ed esfiltra in un altro, a seconda delle protezioni che il client aggiunge o non aggiunge s1. Ciò che i test hanno rubato: chiavi SSH, segreti d'ambiente, codice sorgente, dati dei clienti, su progetti isolati con chiavi finte, con un metodo pubblicato e riproducibile s1. Lo stesso laboratorio ha pubblicato a giugno Ghostcommit, che nascondeva le istruzioni in file PNG richiamati dalle convenzioni del progetto e poi codificava i segreti rubati nel codice sorgente come numeri interi; la frammentazione delle istruzioni è una famiglia di attacchi, non un caso isolato s1. Valgono due prerequisiti: il server malevolo deve essere già connesso al tuo agente, e l'agente deve avere il diritto di leggere i file presi di mira s1.
Sul lato enterprise, Cloudflare chiama "shadow MCP" i server non approvati che gli sviluppatori collegano ai loro agenti. Dall'aggiornamento della spec, ogni client MCP conforme invia un header MCP-Protocol-Version, e Gateway ispeziona quell'header su tutto il traffico TLS analizzato, offrendo a un team di sicurezza una dashboard di server unici, utenti e volumi di richieste s6. L'ultima versione della spec aggiunge gli header Mcp-Method e Mcp-Name, che espongono l'operazione richiesta e il nome del tool senza aprire il corpo della richiesta, così la rete distingue un agente che legge un ticket da uno che ne cancella cinquanta. Le regole di Cloudflare coprono due casi, lo shadow MCP puro (un server mai approvato) e il bypass del portale (un server approvato raggiunto direttamente), ed entrambi sono bloccati con la stessa regola di base s6.
WriteGuard, aperto in beta privata, classifica ogni tool di ogni server MCP in un livello di rischio e applica una policy diversa per livello: una lettura passa senza attrito; una scrittura contenuta come pubblicare un commento passa ma viene firmata come proveniente da un agente per conto di un umano con nome, con un evento di audit inviato a un log centrale; un'azione critica come fare il merge del codice, deployare in produzione o cancellare in massa viene bloccata prima che il server la elabori s7. L'esempio GitLab nel post: leggere una merge request passa, commentare passa con attribuzione, fare il merge viene rifiutato finché non lo fa un umano. L'agente mantiene i permessi del dipendente che serve, ma ogni scrittura porta due firme, la persona e la sessione dell'agente. Cloudflare descrive il proprio uso interno: il suo portale collega 27 server MCP, contro 13 ad aprile s7.
I limiti sono reali. WriteGuard è in beta privata su iscrizione, e il rilevamento di Gateway richiede un deployment Cloudflare Zero Trust con ispezione TLS attiva s7. Il rilevamento vede solo il traffico di rete che decifra: un server MCP locale su stdio, che gira come semplice processo sulla tua macchina, resta invisibile a Gateway, ed è così che girano la maggior parte dei server installati dagli sviluppatori s6. Nessuno di questi strumenti risolve il meccanismo che GhostSplice mette a nudo. I ricercatori di ASSET dicono che la soluzione è trattare l'output dei tool come dato, mai come istruzione, e che questa separazione non esiste ancora in modo nativo negli agenti. Le loro tre raccomandazioni: impedire che un valore prodotto da un tool alimenti senza controllo gli argomenti di un altro tool, mantenere la possibilità di rifiutare a mano ogni invocazione di tool, e trattare come ostile per impostazione predefinita qualsiasi annotazione proveniente da un server non verificato s1.
Verdetto: cosa ti protegge e cosa no
| Controllo | A chi serve | Verdetto |
|---|---|---|
| Rifiuti del modello | Tutti | Da scartare come difesa: 100% di rifiuto in un blocco, 100% di esecuzione se frammentato [s1] |
| Protezioni lato client | Tutti | Da tenere: lo stesso modello ha rifiutato via API e ceduto in Cursor [s1] |
| Inventario e provenienza dei server | Solo e team | Da tenere: GhostSplice richiede il server già connesso [s1] |
| Token dedicati con scope ristretto, ruotati | Solo e team | Da tenere: token in chiaro ed eccesso di permessi sono i primi due percorsi di leak [s2] |
| Pinning e audit delle dipendenze MCP | Solo e team | Da tenere: mcp-remote ha consegnato una command injection a 400,000+ download [s3] |
| Rilevamento via header Gateway (MCP-Protocol-Version, Mcp-Method, Mcp-Name) | Enterprise su Zero Trust | Da provare se hai già l'ispezione TLS; cieco ai server stdio [s6] |
| Livelli di rischio WriteGuard | Enterprise | Da provare in lista d'attesa; solo beta privata [s7] |
| Controllo umano su ogni scrittura, merge e cancellazione | Tutti | Da tenere: la versione artigianale di ciò che WriteGuard industrializza [s7] |
Da fare lunedì
- Elenca i server MCP effettivamente connessi a ciascuno dei tuoi agenti e rimuovi tutti quelli che non hai usato nell'ultimo mese.
- Per ogni server rimasto, annota chi lo pubblica e leggi cosa fa con i tuoi dati prima di tenerlo; scarta ogni server arrivato da un thread invece che dal vendor.
- Sostituisci ogni credenziale condivisa o master in una config MCP con un token dedicato limitato al minimo che quel server richiede, e imposta una data di rotazione.
- Verifica che nessun file di config MCP sia tracciato in Git, e aggiungili a .gitignore dove non lo sono.
- Fissa la versione di ogni pacchetto MCP che installi e controlla nel lockfile le versioni di mcp-remote coperte da CVE-2025-6514.
- Attiva l'approvazione manuale per ogni tool che scrive, fa merge, deploya o cancella, e tienila attiva in ogni client che usi.
- Rivedi una volta le descrizioni dei tool di ogni server di terze parti, cercando istruzioni rivolte al modello invece che a te.
- Se usi Cloudflare Zero Trust, attiva l'ispezione TLS e costruisci la dashboard shadow MCP a partire dall'header MCP-Protocol-Version.
Per approfondire
- Leggi l'articolo completo su GhostSplice per la matrice di test per modello e per client e per le tre mitigazioni proposte dai ricercatori s1.
- Cerca Ghostcommit, l'attacco di giugno dello stesso laboratorio, per vedere come le istruzioni si nascondevano nei file PNG e come i segreti rubati venivano codificati come interi nel codice sorgente s1.
- Passa in rassegna i quattro percorsi di leak dell'analisi del 17 agosto sulle tue config: memorizzazione in chiaro, eccesso di permessi, supply chain, prompt injection s2.
- Leggi la voce NVD di CVE-2025-6514 e verifica quali versioni di mcp-remote sono interessate prima di fidarti di qualsiasi proxy OAuth nel tuo stack s3.
- Leggi le design considerations della NSA per MCP: è l'unica checklist neutrale rispetto ai vendor scritta per i team che adottano l'automazione con agenti s5.
- Studia gli header MCP-Protocol-Version, Mcp-Method e Mcp-Name nel post di Cloudflare anche se non usi Cloudflare: qualsiasi proxy che controlli può registrarli s6.
- Prendi in prestito i quattro livelli di rischio di WriteGuard (read-only, minimal impact, contained write, critical) come griglia di revisione per i tool esposti dai tuoi server s7.
- Sfoglia il README del registry ufficiale per capire cosa richiede la pubblicazione e cosa non verifica s4.
Fonti
- Malicious MCP servers can split exfiltration orders to bypass model refusals (GhostSplice), The Hacker News. Perché leggerla: l'unico posto con i numeri per modello e per client, più le mitigazioni dei ricercatori.
- How MCP servers can expose enterprise secrets, The Hacker News. Perché leggerla: i quattro percorsi di leak esposti in ordine, utilizzabili come checklist di audit.
- CVE-2025-6514: mcp-remote command injection, NIST NVD. Perché leggerla: le versioni interessate e la gravità della prima falla di supply chain MCP largamente installata.
- Official Model Context Protocol registry, modelcontextprotocol on GitHub. Perché leggerla: mostra come funziona la pubblicazione e perché la presenza nel registry non è un segnale di fiducia.
- NSA releases security design considerations for AI-driven automation leveraging MCP, NSA. Perché leggerla: una guida di progettazione neutrale rispetto ai vendor per i team che adottano MCP su larga scala.
- Detecting and blocking shadow MCP at the protocol level, Cloudflare blog. Perché leggerla: spiega gli header della spec che rendono visibile il traffico MCP sulla rete.
- Bring secure MCP connectivity to your enterprise with MCP Server Portals and WriteGuard, Cloudflare blog. Perché leggerla: il modello di rischio per tool e il design a doppia firma dell'identità, con un esempio concreto su GitLab.
FAQ
Usare un modello più sicuro mi protegge da GhostSplice?
No. L'attacco non chiede mai nulla di vietato in un unico pezzo, quindi l'addestramento al rifiuto non scatta. Lo stesso Claude Haiku 4.5 ha rifiutato tutto via API e ha ceduto al 100% dentro Cursor; sono state le protezioni del client a decidere l'esito, non il modello.
Sono uno sviluppatore solo, qualche strumento Cloudflare fa per me?
Non oggi. Il rilevamento di Gateway richiede un deployment Zero Trust con ispezione TLS, WriteGuard è in beta privata, ed entrambi sono ciechi ai server stdio locali. La checklist qui sopra è la versione per sviluppatore solo degli stessi controlli.
Un server presente nel registry ufficiale è sicuro?
Essere elencati non significa essere validati. Il registry supera i 9,600 server senza revisione centrale, e il tuo agente si fida di una voce del registry quanto di uno strumento del vendor. Valuta la provenienza e leggi il codice, non l'elenco.
Qual è la singola modifica di maggior valore?
Token dedicati e con scope minimo per ogni server, ruotati come i segreti di produzione. Le credenziali master in chiaro nei file di config sono il primo percorso di leak, e rendono molto più costoso ogni altro guasto, da CVE-2025-6514 alla prompt injection.
AIDive