Torna al blog
Falla OAuth negli SDK MCP: cosa esporre del gestionale a un assistente AI
AI & Automazioni

Falla OAuth negli SDK MCP: cosa esporre del gestionale a un assistente AI

Due avvisi del progetto MCP, del 28 e del 30 settembre: un server malevolo poteva ricevere le credenziali OAuth di un client Python o TypeScript. Servono aggiornamento, servizio di login atteso e permessi minimi all'assistente.

7 ottobre 2026· 6 min·di NaCode Studios
Condividi
In breve

Due avvisi del progetto MCP, del 28 e del 30 settembre: un server malevolo poteva ricevere le credenziali OAuth di un client Python o TypeScript. Servono aggiornamento, servizio di login atteso e permessi minimi all'assistente.

Il 28 settembre 2026 il progetto MCP ha pubblicato un avviso di sicurezza sull'SDK Python e il 30 settembre uno dello stesso tipo sull'SDK TypeScript: un server MCP malevolo poteva indicare al client un indirizzo proprio per i token e ricevere le credenziali OAuth che il client usa per un servizio vero. MCP (Model Context Protocol) è lo standard aperto con cui un assistente AI si collega a strumenti e dati esterni. Se ti propongono di collegarne uno al gestionale, al CRM o a un'API, chiedi a chi lo sviluppa quale SDK usa, a quale versione e con quali permessi.

Aggiornato al 7 ottobre 2026. Il testo si basa sugli avvisi dei due SDK, sull'analisi di Cycode e sulle note di rilascio. A oggi l'avviso Python non ha un CVE, quello TypeScript sì. Informazioni generali: versioni e impostazioni vanno verificate sul tuo progetto.

Cosa è successo

Un client MCP che si collega a un server gli chiede dove si trova il servizio di login. Nelle versioni coinvolte l'SDK non verificava sempre la risposta e non legava le credenziali salvate al servizio a cui appartenevano. Un server malevolo o compromesso poteva così indicare un indirizzo proprio per i token e ricevere dal client il segreto del client, il codice di autorizzazione e il verificatore PKCE. Cycode (analisi del 28 settembre) ha mostrato che con questi dati si ottiene un token valido presso il servizio vero.

  • L'SDK Python (pacchetto mcp) è coinvolto dalla 1.9.1 alla 1.29.1 e dalla 2.0.0 alla 2.1.1, ed è corretto nella 1.30.0 e nella 2.2.0.
  • L'SDK TypeScript lo è in @modelcontextprotocol/sdk dalla 1.12.0 alla 1.30.1 (corretto nella 1.31.0) e, in alcune configurazioni, in @modelcontextprotocol/client dalla 2.0.0 alla 2.1.0 (corretto nella 2.2.0).
  • La gravità è alta, CVSS 7,5. Né gli avvisi né Cycode riportano attacchi reali.

Chi è toccato

Sono toccati i client MCP scritti con uno dei due SDK che usano HTTP e OAuth e possono collegarsi a server non del tutto fidati, avendo le credenziali di un servizio di login vero. Da questo difetto non sono toccati i server costruiti con gli SDK e i client locali che usano stdio.

I provider con credenziali preconfigurate, due in Python (ClientCredentialsOAuthProvider e PrivateKeyJWTOAuthProvider) e quattro in TypeScript, dopo l'aggiornamento vanno configurati con il servizio di login atteso: issuer in Python, expectedIssuer in TypeScript. Senza questa impostazione si comportano come prima, e nell'SDK Python 1.30.0 l'omissione produce solo un avviso di deprecazione che Python nasconde per impostazione predefinita. Le credenziali salvate prima dell'aggiornamento vanno cancellate.

Le correzioni erano già uscite il 7 settembre. Le note di rilascio dell'SDK Python 1.30.0 e 2.2.0 elencano i controlli sul servizio di login tra i cambiamenti di comportamento, senza una sezione di sicurezza; l'avviso è del 28 settembre. Secondo noi conviene leggere anche le note di rilascio delle librerie che si usano.

Altri due casi

  • Secondo Pillar Security, il 10 agosto un solo account GitHub ha aperto 23 pull request su progetti di AI, MCP e strumenti per sviluppatori, per far aggiungere un server MCP chiamato productivity-suite. Il server offre due strumenti innocui e, dalla terza chiamata, cambia le istruzioni che passa all'assistente per indirizzarlo verso chiavi SSH, credenziali AWS, cronologia della shell e configurazioni Kubernetes, nascondendolo all'utente; un'ispezione rapida vede solo i due strumenti innocui. Al 12 agosto 19 pull request erano chiuse, 4 aperte e nessuna integrata.
  • Uno studio di un ricercatore indipendente su arXiv (31 luglio) ha confermato 640 server MCP raggiungibili da internet e ne ha verificati 414: il 91,8% di questi non usava OAuth, nella grande maggioranza dei casi perché senza autenticazione o con un token statico. Tra i 640 ha contato 687 strumenti che offrono l'esecuzione di comandi di shell senza richiedere credenziali.

Cosa esporre del gestionale

Un assistente AI collegato al gestionale agisce come un utente in più, con le credenziali che gli assegni. Questa è la nostra indicazione di partenza per decidere prima cosa può vedere e cosa può fare.

CosaCome esporloPerché
Letture (anagrafiche, ordini)Sola lettura, con filtriIl rischio è la fuga di dati
Scritture (preventivi, fatture)Vietate di default, abilitate una per unaUn errore costa denaro
Azioni irreversibiliSolo con conferma di una personaCancellare o inviare non si annulla
CredenzialiUn utente tecnico per assistente, permessi minimiSi revoca senza toccare le persone
Strumenti del serverConfrontati a ogni connessionePossono cambiare dopo l'approvazione
RegistroChi ha fatto cosa, con quale assistenteServe a ricostruire un incidente

Se il gestionale è esposto da un server scritto con l'SDK Python, l'avviso del 5 ottobre precisa che dopo l'aggiornamento il controllo sul destinatario del token resta spento: va acceso con validate_token_resource, altrimenti il server accetta anche i token che lo stesso servizio di login emette per altri servizi.

Cosa fare questa settimana

  1. Elenca dove un assistente AI o uno strumento di sviluppo ha già accesso ai tuoi sistemi, comprese le prove dei dipendenti.
  2. Chiedi a chi sviluppa un client MCP quale versione usa (Python 1.30.0 o 2.2.0, TypeScript 1.31.0 o 2.2.0, o successive) e se ha impostato issuer o expectedIssuer.
  3. Chiedi al fornitore quali strumenti vede l'assistente, con quale utente entra nel gestionale e dove finisce il registro delle sue azioni; se il server usa l'SDK Python, chiedi se validate_token_resource è acceso.
  4. Se un client può essersi collegato a un server non verificato, cambia il segreto del client e revoca i token.
  5. Collega gli assistenti solo a server MCP che conosci: uno proposto in una pull request o trovato in un elenco pubblico non è fidato.

Cosa controlliamo prima

Un assistente collegato a un gestionale riguarda due dei nostri servizi: le automazioni AI e chatbot, dove integriamo i modelli linguistici nei flussi esistenti con controllo su costi e qualità delle risposte, e i gestionali e le piattaforme cloud, dove progettiamo piattaforme multiutente con ruoli, permessi granulari e integrazione con i sistemi già in uso.

Se ci chiedi di guardare un collegamento di questo tipo, partiamo da quattro cose: la versione dell'SDK e il servizio di login impostato nel client, l'utente con cui l'assistente entra nel gestionale e i suoi permessi, gli strumenti che vede, il registro delle sue azioni. Per un collegamento nuovo proponiamo di iniziare in sola lettura e di aggiungere le scritture una alla volta, con analisi, preventivo e roadmap concordati prima di partire. Non possiamo garantire il comportamento di un server di terzi, perciò teniamo i permessi dal lato del gestionale: un server che cambia dopo l'approvazione può fare solo ciò che l'utente tecnico può fare.

Cosa non sappiamo ancora

  • Se ci siano stati abusi: gli avvisi e Cycode non ne riportano, ma da queste fonti non si può escluderlo.
  • Quali prodotti commerciali usino versioni vulnerabili degli SDK: le fonti non lo dicono, va chiesto ai singoli fornitori.
  • Quanto pesi lo studio sui server esposti: ha un solo autore, che scrive che servirebbero verifiche indipendenti.

Se vuoi che guardiamo il collegamento tra un assistente AI e il tuo gestionale, scrivici o parti dalla pagina sulle automazioni AI e chatbot.

Fonti

Condividi

Hai un progetto in mente?

Costruiamolo insieme

Possiamo aiutarti a trasformare un’idea in un prodotto digitale solido, veloce e pronto a crescere.

Articoli correlati