sharedroot claude cowork sandbox escape macos

SharedRoot evade Claude Cowork e raggiunge tutti i file del Mac

🛡️ Executive Summary

  • Contenuti non affidabili possono indurre Claude Cowork a sfruttare una privilege escalation Linux e ottenere privilegi root nella macchina virtuale locale.
  • Il filesystem completo del Mac risultava montato in lettura e scrittura nella VM, permettendo di superare le cartelle autorizzate dall’utente.
  • L’esecuzione cloud predefinita non sembra esposta alla stessa catena, ma servono namespace disabilitati, seccomp restrittivo e mount realmente circoscritti.

Una ricerca di Accomplish AI ha mostrato come un contenuto non affidabile elaborato da Claude Cowork potesse evadere dalla sandbox locale e raggiungere file del Mac mai autorizzati dall’utente. La catena, chiamata SharedRoot, combinava namespace Linux non privilegiati, una vulnerabilità nel modulo di rete act_pedit, un servizio root interno e soprattutto il montaggio dell’intero filesystem macOS dentro la macchina virtuale. Una volta ottenuti privilegi root nel guest, l’agente poteva leggere o modificare chiavi SSH, credenziali cloud e documenti presenti fuori dalla cartella collegata. La vulnerabilità specifica è stata segnalata ad Anthropic, ma il problema più importante riguarda l’architettura del confine di sicurezza.

Cowork eseguiva l’agente dentro una macchina virtuale Linux

Annuncio

Nella configurazione analizzata, l’app Claude Desktop funzionava normalmente con i privilegi dell’utente macOS, mentre il lavoro agentico veniva trasferito in una macchina virtuale Linux creata attraverso Apple Virtualization Framework. Ogni sessione riceveva un utente temporaneo non privilegiato, un filtro seccomp e l’accesso alle sole cartelle apparentemente concesse dal proprietario del computer. Un demone root denominato coworkd gestiva i mount e le operazioni necessarie a collegare i file locali con l’ambiente isolato. Il disegno offriva quindi diversi livelli di protezione e non equivaleva all’esecuzione diretta dei comandi sul Mac. Il punto critico era però nascosto sotto questa separazione: l’intero filesystem host risultava condiviso in lettura e scrittura nella VM attraverso VirtioFS, montato nel percorso /mnt/.virtiofs-root.

image 635
L’intero filesystem dell’host, montato nella VM e scrivibile. Solo l’utente root della VM può visualizzarlo e raggiungerlo rappresenta l’ultima fase del processo di fuga. Questo mount è ciò che SharedRoot attiva.

Il mount era visibile soltanto a root nel sistema guest, ma conteneva tutto ciò che l’utente macOS poteva raggiungere. La sandbox dipendeva quindi dalla capacità di impedire in modo assoluto che l’utente non privilegiato diventasse root nella VM. Questo presupposto è fragile negli ambienti che elaborano repository, documenti e pagine web non affidabili, come dimostrano gli attacchi di prompt injection capaci di trasformare repository GitHub in comandi per gli agenti AI. Un agente viene infatti utilizzato proprio per aprire materiali che l’utente non ha scritto e dei quali non conosce integralmente il contenuto.

Una falla del kernel trasformava l’utente della VM in root

La catena iniziava senza sfruttare alcun bug. L’utente della sessione poteva chiamare unshare e creare un nuovo user namespace, all’interno del quale otteneva privilegi root virtuali e capability come CAP_NET_ADMIN. La configurazione permetteva quindi di raggiungere le funzioni Linux per il controllo del traffico e di richiamare il modulo act_pedit attraverso un socket Netlink consentito dal filtro seccomp. Il kernel caricava automaticamente il modulo anche se Cowork non aveva alcun bisogno operativo di utilizzarlo. A quel punto entrava in gioco CVE-2026-46331, vulnerabilità chiamata pedit COW che consentiva di alterare la page cache di un file leggibile ma non modificabile. Il contenuto presente sul disco non cambiava direttamente, rendendo l’operazione meno evidente, ma la copia mantenuta in memoria poteva essere avvelenata. Il bersaglio era un helper root eseguito normalmente da coworkd: quando il servizio lo avviava, il kernel utilizzava la versione manipolata presente nella cache e consegnava all’attaccante l’esecuzione come root nel guest. Le difese come NoNewPrivileges non bloccavano il passaggio perché il processo che eseguiva l’helper possedeva già privilegi amministrativi. La sequenza ricorda i casi nei quali agenti di coding eseguono automaticamente codice proveniente da repository clonati, ma qui l’impatto superava il progetto aperto dall’utente e raggiungeva il confine tra macchina virtuale e sistema host.

Il mount completo trasformava guest-root in compromissione del Mac

Ottenere root dentro una VM non dovrebbe automaticamente significare controllare il computer che la ospita. Una macchina virtuale correttamente isolata può essere considerata compromessa senza consentire all’attaccante di oltrepassarne i confini. SharedRoot diventava una fuga completa perché il root del guest poteva vedere /mnt/.virtiofs-root, cioè l’intero filesystem macOS condiviso in modalità scrivibile. Da quel punto il codice poteva accedere alla home dell’utente, leggere chiavi SSH, token cloud, configurazioni degli strumenti di sviluppo e file personali, anche se Claude aveva ricevuto l’autorizzazione per una sola cartella di lavoro.

La catena, dall’inizio alla fine. Viene eseguito un prompt nella cartella connessa di Cowork; pochi secondi dopo, un file scritto all’interno della sandbox viene salvato nella directory home dell’utente host, al di fuori di qualsiasi privilegio concesso alla sessione.

Non compariva inoltre un nuovo prompt di consenso, perché l’accesso avveniva al di sotto del sistema applicativo incaricato di controllare le cartelle concesse. I ricercatori hanno riprodotto la catena scrivendo dal guest un file in una posizione del Mac esterna al percorso autorizzato. Il problema principale non era quindi soltanto la CVE del kernel, destinata a essere corretta, ma la decisione di esporre l’intero host a un ambiente che doveva essere considerato potenzialmente ostile. La stessa lezione emerge dalla Stealthy Memory Injection contro gli agenti dotati di memoria persistente: quando un modello può leggere contenuti esterni e compiere azioni, il contenimento deve reggere anche nell’ipotesi che l’agente segua istruzioni malevole.

La correzione deve eliminare intere classi di fuga

Accomplish indica quattro controlli capaci di interrompere indipendentemente la catena. Il primo consiste nel disabilitare gli user namespace non privilegiati, impedendo alla sessione di acquisire capability amministrative. Il secondo richiede un filtro seccomp impostato come allowlist, capace di bloccare unshare, la creazione di namespace e i socket Netlink non necessari, invece di consentire tutto salvo poche chiamate espressamente vietate. Il terzo riguarda la rimozione dei moduli kernel inutilizzati e la disattivazione del loro caricamento automatico, evitando che un componente di networking non richiesto diventi raggiungibile dall’agente. Il quarto, più importante, impone di condividere nella VM soltanto le cartelle autorizzate, preferibilmente con privilegi minimi, senza montare l’intero filesystem del Mac. In questo modo anche una futura privilege escalation nel guest resterebbe confinata all’ambiente e ai percorsi esplicitamente concessi. Anthropic ha classificato la segnalazione come informativa anche perché la CVE era già pubblica e rientrava nei limiti temporali del bug bounty. La società utilizza ora l’esecuzione remota come impostazione predefinita e la specifica fuga locale non sembra applicarsi alle nuove sessioni cloud. Gli utenti e le imprese devono comunque mantenere prudenza: collegare cartelle dedicate, evitare credenziali e documenti sensibili, limitare rete e connettori e monitorare accessi ai file e chiamate agli strumenti. La sicurezza degli agenti non può dipendere dall’assenza temporanea di falle nel kernel: deve presumere che la sandbox interna possa essere conquistata e impedire che quella conquista diventi accesso all’intero computer.

Iscriviti alla Newsletter

Non perdere le analisi settimanali: Entra nella Matrice Digitale.

Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.

Torna in alto