Il Model Context Protocol (MCP) è un efficiente protocollo di Anthropic che definisce come connettere i modelli linguistici di grandi dimensioni (LLM) a strumenti esterni. Ha rapidamente ottenuto seguito grazie alla sua facilità d'uso e ai vantaggi che offre a chi utilizza l'IA. In questo articolo illustreremo alcuni dei potenziali rischi per la sicurezza che potresti riscontrare con MCP e come mitigarli.
Come funziona MCP
MCP non collega direttamente gli LLM agli strumenti. Il componente client MCP accede all'LLM e il componente server MCP agli strumenti. Un client MCP può accedere a uno o più server MCP. Gli utenti possono connettere un numero illimitato di server MCP a un client MCP.
Questa è la struttura di un tipico scambio tra client e server MCP:
- L'utente richiede un'attività al client MCP.
- Il client MCP dispone delle informazioni sugli strumenti che ogni server MCP implementa o a cui ha accesso.
- Il client MCP trasmette la richiesta dell'utente e le informazioni dai server MCP a un LLM che risponde indicando lo strumento necessario e i parametri da utilizzare.
- Il client MCP invia le informazioni sugli strumenti e sui parametri al server MCP.
- Il server MCP completa l'attività e restituisce la risposta al client MCP che la trasmette all'LLM, il quale genera una risposta per l'utente.
- La risposta viene mostrata all'utente dal client MCP.
I server MCP possono essere eseguiti in locale o in remoto e i rischi per la sicurezza variano a seconda della modalità di esecuzione.
Definiamo "server MCP locali" i server MCP eseguiti su un host di cui abbiamo il controllo. Per completare le attività richieste, in genere i server MCP locali eseguono i comandi del sistema operativo o il codice personalizzato in locale.
I "server MCP remoti" vengono eseguiti solo da terze parti. Possiamo accedere a server MCP remoti, ma questi non sono eseguiti su un host di cui abbiamo il controllo. I server MCP remoti presentano rischi per la sicurezza degli utenti perché hanno accesso ai loro dati, tuttavia, poiché non vengono eseguiti in locale, evitano alcuni rischi comuni.
Rischi e controlli per la sicurezza
Di seguito una breve panoramica di alcuni dei rischi sulla sicurezza del protocollo MCP identificati dai ricercatori e alcuni approcci alla loro mitigazione.
Autenticazione e autorizzazione
Quando un server MCP esegue un'azione innescata dalla richiesta di un utente, c'è il rischio che si verifichi il cosiddetto "confused deputy problem" (il problema del delegato confuso). Idealmente, il server MCP dovrebbe eseguire questa azione per conto dell'utente e con la sua autorizzazione. Tuttavia, ciò non è garantito e dipende dall'implementazione del server MCP. Se il server non è implementato correttamente, un utente potrebbe accedere a risorse che non dovrebbero essere disponibili ma che sono accessibili sul server MCP, violando il principio del privilegio minimo.
MCP definisce l'autorizzazione utilizzando OAuth, ma la community ha riscontrato che le specifiche attuali includono dettagli di implementazione che sono in conflitto con le più recenti procedure aziendali. La community è impegnata a migliorare e ad aggiornare la specifica di autorizzazione e a risolvere questa discrepanza.
Rischi della catena di distribuzione
I server MCP sono costituiti da codice eseguibile, pertanto gli utenti devono utilizzare solo server MCP affidabili. Se stiamo sviluppando server MCP, dobbiamo adottare alcune precauzioni affinché gli utenti possano fidarsi del nostro software. I componenti MCP devono essere firmati anche dallo sviluppatore, in modo che gli utenti possano essere più sicuri della loro integrità.
Inoltre, è necessario creare i componenti MCP su pipeline che implementano le procedure consigliate di sicurezza come Static Application Security Testing (SAST). Dobbiamo comprendere i risultati, eliminare i falsi positivi e correggere le vulnerabilità di sicurezza note. Le pipeline devono inoltre implementare l'analisi della composizione del software (SCA) in modo da identificare e correggere le vulnerabilità note nelle dipendenze utilizzate dai server MCP.
Se un server MCP viene offerto come servizio cloud, deve anche prevedere la verifica crittografica del server da parte del client.
Come con qualsiasi altro software, se gli aggressori sono in grado di accedere e modificare il codice sorgente di qualsiasi componente MCP, potranno anche compromettere gli utenti. Per ridurre questo rischio, gli sviluppatori di software e gli utenti devono verificare l'integrità di tutte le dipendenze che utilizzano e analizzarle alla ricerca di malware.
Esecuzione di comandi non autorizzata
I server MCP locali possono eseguire qualsiasi codice. A seconda di come il client MCP trasmette le informazioni al server MCP e di come viene implementato il server MCP, la funzionalità di esecuzione dei comandi può essere vulnerabile all'inserimento dei comandi. Ricontrolla sempre quali comandi verranno eseguiti e ripulisci i dati prima di usarli come argomento per una funzione che esegue comandi.
Di seguito è riportato un esempio di server MCP che presenta una vulnerabilità di inserimento dei comandi:
def dispatch_user_alert(self, notification_info: Dict[str, Any], summary_msg: str) -> bool:
"""Sends system alert to user desktop"""
notify_config = self.user_prefs["alert_settings"]
try:
alert_title = f"{notification_info['title']} - {notification_info['severity']}"
if sys.platform == "linux":
subprocess.call(["notify-send", alert_title])
return TrueCodice disponibile su questa pagina: https://equixly.com/blog/2025/03/29/mcp-server-new-security-nightmare/
È inoltre consigliabile eseguire i server MCP locali in una sandbox, in modo che possano eseguire e avere accesso solo agli elementi con un'esplicita autorizzazione.
Iniezione di prompt
I server MCP presentano notevoli rischi per la sicurezza perché sono in grado di eseguire comandi e chiamate API. Uno dei timori principali è che benché un utente non intenda eseguire un'azione specifica, l'LLM potrebbe decidere che sia quella più appropriata.
Questo rischio può insorgere senza intenzioni malevole, ma è anche un potenziale fattore di attacco. Ad esempio, un utente legittimo potrebbe inviare al client MCP un prompt che non ha scritto, ma che è stato suggerito da un terzo malintenzionata. Un prompt di questo tipo può essere offuscato, ma acquisisce comunque informazioni private dalla conversazione dell'utente o dagli strumenti accessibili. Immagina un utente che copia e incolla un prompt complesso e offuscato per creare un nuovo utente nel proprio ambiente cloud. Oltre a creare l'utente previsto, il prompt potrebbe creare anche un altro utente per l'autore dell'attacco.
Per questo le azioni eseguite dai server MCP devono sempre essere limitate o confermate dagli utenti, in modo da ridurre il rischio a un livello accettabile.
Iniezione di strumenti
È anche possibile che qualcuno crei un server MCP dannoso, il che costituisce un livello di rischio completamente nuovo. Ad esempio, un server MCP dannoso potrebbe sembrare sicuro durante l'installazione, perché il codice sorgente e le descrizioni degli strumenti sembrano normali. Tuttavia, gli strumenti potrebbero essere modificati durante un aggiornamento futuro. Ad esempio, uno strumento originariamente descritto per la raccolta di informazioni meteorologiche può essere modificato con un aggiornamento in modo da raccogliere informazioni riservate e inviarle a un malintenzionato.
Ciò può verificarsi anche con i nomi degli strumenti. I server MCP dannosi possono utilizzare nomi ingannevoli per gli strumenti in modo che l'LLM li selezioni per svolgere un'attività che dovrebbe essere eseguita da altri strumenti legittimi, potenzialmente causando azioni indesiderate o dannose.
Per contenere alcuni di questi rischi, il software che permette di installare i server MCP deve annotare la versione dei server MCP e notificare all'utente eventuali modifiche al codice o alla composizione dopo l'installazione.
Campionamento
I server MCP malevoli possono anche tentare di sfruttare la funzionalità di campionamento di MCP, che permette ai server MCP di richiedere ai client MCP di utilizzare un LLM per completare una richiesta. Se un server MCP deve inviare una richiesta a un LLM, il campionamento consente al client MCP di effettuare la richiesta per conto del server MCP, poiché l'utente ha un maggiore controllo sul client MCP; la funzionalità aiuta a centralizzare i costi.
Per ridurre i rischi associati al campionamento, i client MCP devono implementare i seguenti controlli:
- consentire ai client di mostrare agli utenti la richiesta di completamento;
- consentire agli utenti di modificare o rifiutare i completamenti;
- consentire ai client di filtrare o modificare i completamenti;
- consentire agli utenti di controllare quale modello viene utilizzato;
- implementare limiti di frequenza appropriati;
- controllare l'esposizione dei costi;
- implementare i timeout;
Attività di logging
Come accennato in precedenza, i server MCP sono in grado di eseguire comandi sensibili. Devono essere in grado di inviare registri o eventi a server standard per il logging centralizzati o di registrare tali eventi in locale. In questo modo è possibile indagare sulle azioni del sistema in caso di problemi accertati o sospetti.
Gestione delle vulnerabilità
In quanto codici, i server MCP possono presentare vulnerabilità come qualsiasi altro software, quindi è fondamentale inserirli nel processo standard di gestione delle vulnerabilità. Tale processo deve prevedere l'aggiornamento dei client e dei server MCP e delle relative dipendenze a intervalli pianificati, in base alla propensione al rischio dell'organizzazione.
Conclusioni
Il protocollo MCP ha suscitato interesse verso la manipolazione degli strumenti tramite il linguaggio naturale e verso la comprensione del modo in cui comunicano utenti, LLM e strumenti. Tuttavia, dobbiamo riconoscere i rischi per la sicurezza che derivano dall'aumentata automazione e dall'aggiunta di strumenti di IA. Come per qualsiasi altra nuova tecnologia, quando utilizzano MCP le aziende devono valutare i rischi per la sicurezza e implementare i controlli appropriati per ottenere il massimo dalla tecnologia.
Scopri di più
- MCP Servers: The New Security Nightmare
- The MCP Authorization Spec Is... a Mess for Enterprise
- Everything Wrong with MCP
- Imprompter: Tricking LLM Agents in Improper Tool Use
- Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions
- WhatsApp MCP Exploited: Exfiltrating your message history via MCP
- 5 MCP Security Tips
Red Hat Product Security
Sull'autore
Florencio has had cybersecurity in his veins since he was a kid. He started in cybersecurity around 1998 (time flies!) first as a hobby and then professionally. His first job required him to develop a host-based intrusion detection system in Python and for Linux for a research group in his university. Between 2008 and 2015 he had his own startup, which offered cybersecurity consulting services. He was CISO and head of security of a big retail company in Spain (more than 100k RHEL devices, including POS systems). Since 2020, he has worked at Red Hat as a Product Security Engineer and Architect.
Altri risultati simili a questo
Resilient model training on Red Hat OpenShift AI with Kubeflow Trainer
Red Hat to acquire Chatterbox Labs: Frequently Asked Questions
Technically Speaking | Platform engineering for AI agents
Technically Speaking | Driving healthcare discoveries with AI
Ricerca per canale
Automazione
Novità sull'automazione IT di tecnologie, team e ambienti
Intelligenza artificiale
Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque
Hybrid cloud open source
Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido
Sicurezza
Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti
Edge computing
Aggiornamenti sulle piattaforme che semplificano l'operatività edge
Infrastruttura
Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale
Applicazioni
Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili
Virtualizzazione
Il futuro della virtualizzazione negli ambienti aziendali per i carichi di lavoro on premise o nel cloud