Microsoft Security ha reso pubblica oggi la ricerca su AutoJack, una tecnica di attacco che trasforma un agente AI con capacità di browsing in un veicolo per l'esecuzione di codice arbitrario sul host locale. La catena di exploit, documentata in un blog tecnico dettagliato, colpisce le pre-release 0.4.3.dev1 e 0.4.3.dev2 di AutoGen Studio su PyPI — l'interfaccia di prototipazione open-source di Microsoft Research per il framework multi-agente AutoGen — e non la release stabile 0.4.2.2 installata di default.
- AutoJack combina tre debolezze indipendenti in AutoGen Studio: trust eccessivo di localhost, middleware di autenticazione che esclude i path MCP, ed esecuzione verbatim di comandi da URL codificati in base64.
- La superficie di attacco MCP WebSocket è presente solo nelle pre-release 0.4.3.dev1 e 0.4.3.dev2 su PyPI; The Hacker News ha verificato indipendentemente che entrambe le build rimangono disponibili e non sono state rimosse.
- Un agente AI che esegue un browser headless locale eredita l'identità localhost, bypassando l'Origin allowlist e aprendo un WebSocket non autenticato verso il piano di controllo MCP.
- Il fix risiede nel branch main di GitHub al commit b047730 (PR #7362), ma non è ancora distribuito come release PyPI; Microsoft ha segnalato il comportamento a MSRC e i maintainer hanno indurito il codice.
La catena di tre debolezze: come si dissolve il confine localhost
Microsoft ha mappato le tre componenti della catena AutoJack a CWE-1385 (Sviluppo basato su trust eccessivo nell'identità di rete), CWE-306 (Assenza di autenticazione per funzione critica) e CWE-78 (Neutralizzazione impropria di elementi speciali nell'OS command injection). La loro combinazione è ciò che rende l'attacco possibile.
La prima debolezza è concettuale: AutoGen Studio considera 127.0.0.1 e localhost come origini attendibili per default. La seconda è strutturale: l'AuthMiddleware implementa un early-return per i path che iniziano con /api/ws o /api/mcp, lasciando il handler MCP senza controllo di autenticazione follow-up in tutte le configurazioni. La terza è esecutiva: il parametro server_params passato all'endpoint ws://localhost:8081/api/mcp/ws/<session_id>?server_params=<base64(json)> viene decodificato e i campi StdioServerParams.command e .args transitano direttamente a stdio_client() senza alcuna allowlist.
Il risultato è che una pagina web malevola, caricata dall'agente AI stesso nel suo browser headless locale, può aprire un WebSocket verso l'istanza AutoGen Studio e inviare comandi arbitrari. L'agente diventa un "confused deputy": esegue azioni con privilegi che non dovrebbe possedere, proprio perché condivide la macchina con il servizio target.
"localhost stops being a trust boundary" — Microsoft Security
Il PoC concreto: da "Web Content Summarizer" a calc.exe sul desktop
Il proof-of-concept documentato da Microsoft è un agente "Web Content Summarizer" che, su input di un URL fornito dall'esterno, carica una pagina malevola. L'agente, eseguito sulla stessa macchina di AutoGen Studio, eredita l'identità localhost: il suo browser headless presenta un Origin che soddisfa l'allowlist, consentendo l'apertura del WebSocket MCP.
Attraverso il parametro server_params, la pagina inietta comandi verbatim: calc.exe, powershell.exe, bash -c — qualsiasi eseguibile raggiungibile dal processo. L'esecuzione avviene nel contesto dell'utente che esegue AutoGen Studio, tipicamente lo sviluppatore con privilegi interattivi. Non è richiesta interazione utente aggiuntiva oltre all'avvio dell'agente con l'URL malevolo.
Microsoft ha esplicitamente dichiarato che AutoJack è ricerca, non campagna attiva. Nessuna exploitazione in-the-wild è stata riportata al momento della pubblicazione.
Il problema delle build PyPI: fix su GitHub, pre-release ancora esposte
La distribuzione del fix presenta una frizione significativa. Il commit b047730 nel branch main introduce tre indurimenti: parametri server memorizzati lato server con session ID one-time, routing MCP che attraversa il normale path di autenticazione, e rimozione dell'early-return selettivo. Tuttavia, nessuna release PyPI contiene al momento queste modifiche.
The Hacker News ha verificato indipendentemente che pip install autogenstudio senza flag --pre installa la versione stabile 0.4.2.2, che non include alcuna route MCP. Ma l'installazione con --pre espone ancora 0.4.3.dev2. Entrambe le pre-release vulnerabili rimangono su PyPI senza essere state yanked. Questa configurazione crea un'asimmetria di rischio: lo sviluppatore che segue la documentazione ufficiale è protetto, chi sperimenta con le pre-release — il profilo tipico di AutoGen Studio — è esposto.
Pattern sistemico: quando l'intelligenza artificiale stessa è l'exploit
AutoJack non è un bug isolato di implementazione. È l'anticipo di una classe di attacchi che Microsoft ha già documentato in ricerche precedenti su Semantic Kernel: il framework agentico eseguito localmente, con capacità di browsing e comunicazione con servizi locali privilegiati, dissolve il presupposto che localhost sia un confine di sicurezza.
L'implicazione architetturale è diretta. Quando un agente AI con MultimodalWebSurfer, Playwright o strumenti equivalenti opera sulla stessa macchina di servizi locali con piani di controllo esposti, il browser headless diventa un ponte. L'identità di rete che eredita — localhost — è sufficiente a bypassare controlli di origine progettati per scenari web tradizionali, dove l'attaccante è remoto.
Microsoft ha formulato la lezione generale: "if an agent can browse untrusted pages and also talk to privileged local services, loopback can become an attack surface and control planes must be authenticated, authorized, and isolated". Questo è il punto di rottura concettuale: il piano di controllo MCP di AutoGen Studio era progettato senza autenticazione perché si assumeva che localhost bastasse come criterio di trust.
Cosa fare adesso
Per chi utilizza AutoGen Studio con pre-release: verificare la versione installata tramite pip show autogenstudio; le build 0.4.3.dev1 e 0.4.3.dev2 sono vulnerabili. Per chi sviluppa con il branch main: il commit b047730 contiene l'indurimento, ma va verificata manualmente la presenza delle tre modifiche (session ID server-side, autenticazione obbligatoria per MCP, rimozione dell'early-return).
Per le organizzazioni che operano agenti AI con capacità di browsing: isolare gli agenti in container o VM separate dalla macchina host, in modo che il browser headless non condivida l'identità localhost con servizi locali privilegiati. Autenticare esplicitamente i piani di controllo MCP o equivalenti, indipendentemente dall'interfaccia di rete.
Per i maintainer di framework agentici: trattare i path di controllo come superfici di attacco di prima classe, non come canali interni. L'assenza di autenticazione su /api/mcp/ws in AutoGen Studio è stata la conseguenza di un'assunzione di confine che l'arrivo degli agenti AI ha reso obsoleta.
Il localhost non è morto, ma non è più sufficiente
AutoJack dimostra che il problema non è nella specifica implementazione di AutoGen Studio, ma in un presupposto di sicurezza che risale a decenni prima degli agenti AI. Il localhost era un confine perché gli attori su quel confine erano umani o servizi noti. Quando l'attore è un sistema di intelligenza artificiale che naviga autonomamente, eredita capacità e identità in modi che i controlli di origine non prevedevano.
La ricerca Microsoft arriva in un momento in cui gli agenti AI stanno transitando da prototipo a infrastruttura operativa. Il pattern "confused deputy" che AutoJack sfrutta — un componente legittimo indotto a compiere azioni non autorizzate — è classico nella teoria della sicurezza, ma il veicolo di consegna è nuovo. L'intelligenza artificiale non è solo un target: è diventata il canale.
La release stabile di AutoGen Studio è vulnerabile?
No. Secondo Microsoft Security, la superficie MCP WebSocket "non è mai stata inclusa in una release PyPI" riferendosi alla stabile. La versione 0.4.2.2, installata di default da pip install autogenstudio, non contiene route MCP. The Hacker News ha confermato indipendentemente che questa release non espone il WebSocket vulnerabile.
Perché le pre-release vulnerabili rimangono su PyPI?
Microsoft ha segnalato il comportamento a MSRC e i maintainer hanno applicato il fix nel branch main, ma il dossier non specifica il motivo per cui le build 0.4.3.dev1 e 0.4.3.dev2 non siano state yanked da PyPI. La fonte nota esplicitamente che entrambe rimangono disponibili per installazione.
Esiste un CVE assegnato per AutoJack?
Il dossier non conferma l'esistenza di un CVE specifico per le vulnerabilità AutoJack in AutoGen Studio. Le CWE associate — CWE-1385, CWE-306, CWE-78 — sono state documentate da Microsoft Security come classificazioni della catena di debolezze, ma non emerge un identificatore CVE assegnato al momento della pubblicazione.
Fonti
- https://thehackernews.com/2026/06/autojack-attack-lets-one-web-page.html
- https://www.microsoft.com/en-us/security/blog/2026/06/18/autojack-single-page-rce-host-running-ai-agent/
- https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/
- https://www.microsoft.com/en-us/security/blog/2026/05/07/prompts-become-shells-rce-vulnerabilities-ai-agent-frameworks/
- https://www.securityweek.com/vulnerability-in-ms-agent-ai-framework-can-allow-full-system-compromise/
- https://www.microsoft.com/en-us/security/blog/2026/05/18/storm-2949-turned-compromised-identity-into-cloud-wide-breach/
- https://nvd.nist.gov/vuln/detail/CVE-2026-31431
- https://nvd.nist.gov/vuln/detail/CVE-2026-2256
- https://www.cisa.gov/news-events/alerts/2026/05/01/cisa-adds-one-known-exploited-vulnerability-catalog
- https://kb.cert.org/vuls/id/431821
- https://www.bleepingcomputer.com/news/security/new-linux-copy-fail-flaw-gives-hackers-root-on-major-distros/
Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.