Salta ai contenuti

Sicurezza

Nel febbraio 2025, LayerX Security Research ha divulgato una vulnerabilità critica di esecuzione remota di codice zero-click nel framework Claude Desktop Extensions (DXT) di Anthropic. Le estensioni vengono eseguite senza sandbox con privilegi di sistema completi, fungendo da ponti di esecuzione tra il modello linguistico e il sistema operativo locale.

Molti team di sicurezza aziendali ora richiedono che gli strumenti di coding basati su IA vengano eseguiti solo all’interno di macchine virtuali dedicate, container o ambienti usa e getta — non direttamente sugli endpoint aziendali.

Questo devcontainer soddisfa tale requisito.

+------------------------------------------------+
| Macchina Host (endpoint aziendale) |
| |
| - Nessun binario di strumenti IA installato |
| - Nessuna estensione o plugin IA |
| - È richiesto solo Docker |
| |
| +------------------------------------------+ |
| | Container Docker (isolato) | |
| | | |
| | Gli strumenti IA vengono eseguiti qui: | |
| | - Claude Code CLI | |
| | - Codex | |
| | | |
| | Nessun accesso a: | |
| | x Filesystem dell'host | |
| | x Portachiavi / archivio credenziali | |
| | x Appunti dell'host | |
| | x Interfacce di rete dell'host | |
| | x Altre applicazioni dell'host | |
| +------------------------------------------+ |
+------------------------------------------------+

Tutti i dati risiedono in volumi Docker con nome — non in directory host montate tramite bind. Una compromissione all’interno del container non può accedere ai file sulla macchina host. Consultare Configurazione — Persistenza dei Dati per i dettagli sui volumi.

Il container non ha accesso al Portachiavi macOS, a Windows Credential Manager, ai profili del browser o all’agente SSH dell’host. Le chiavi SSH vengono iniettate all’avvio tramite una variabile d’ambiente codificata in base64 e esistono solo all’interno del container.

I container Docker non condividono lo stato degli appunti con l’host. I dati non possono fuoriuscire tramite copia/incolla.

Il container comunica con il mondo esterno in una delle due modalità di autenticazione supportate:

  • Modalità proxy LiteLLM — HTTPS in uscita verso il proxy LiteLLM attraverso il NAT di Docker.
  • Modalità OAuth — HTTPS in uscita direttamente verso Anthropic attraverso il NAT di Docker.

Il container non ha accesso a tunnel VPN, interfacce di rete aziendali o altri servizi sull’host.

L’intero ambiente può essere distrutto e ricreato in pochi secondi. Trattate il container come usa e getta.

Terminal window
docker compose down -v
docker compose pull && docker compose up -d

Questo ambiente esegue strumenti IA come interfacce a riga di comando esclusivamente. Nessuna applicazione desktop, nessuna estensione del browser, nessun framework DXT. La vulnerabilità che ha motivato questo modello di isolamento non si applica all’uso da CLI all’interno di un container.

Il docker-compose.yml applica diverse misure di difesa in profondità:

  • Rimozione delle capability — Tutte le capability Linux vengono rimosse (cap_drop: ALL), quindi viene ri-aggiunto solo il set minimo: CHOWN, DAC_OVERRIDE, FOWNER (per la correzione dei permessi dei volumi nell’entrypoint), SETUID/SETGID (per sudo), NET_RAW (per ping/tcpdump) e NET_ADMIN (per strumenti di cattura pacchetti come Wireshark e bettercap).
  • Limiti delle risorse — CPU (4 core), memoria (8 GB) e conteggio PID (4096) sono limitati tramite mem_limit, cpus e pids_limit per prevenire attacchi di esaurimento delle risorse.
  • tmpfs per /tmp — La directory /tmp è montata come tmpfs da 256 MB, mantenendo i file temporanei in memoria e impedendo che persistano nel livello scrivibile del container.
  • Validazione TLS attiva per impostazione predefinitaNODE_TLS_REJECT_UNAUTHORIZED non è impostato, quindi Node.js valida i certificati TLS per impostazione predefinita. Gli utenti che necessitano di accettare certificati autofirmati (ad es. per un proxy interno) possono attivarlo aggiungendo NODE_TLS_REJECT_UNAUTHORIZED=0 al proprio file .env.
  • Umask per le chiavi SSH — Le chiavi private SSH vengono scritte con umask 077, in modo che il file non sia mai leggibile da tutti — nemmeno brevemente — tra la creazione e la chiamata chmod.

Il container include circa 80 strumenti di sicurezza e penetration testing pre-installati per scenari di test autorizzati. Gli strumenti sono organizzati per categoria:

CategoriaStrumenti (esempi)
Analisi di retetshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover
Scanner webnikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster
Password e autenticazionehydra, john, hashcat, medusa, ncrack
Reverse engineeringradare2, Ghidra, gdb, binwalk, strace, ltrace
Ricognizionesubfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot
Fuzzing ed enumerazioneffuf, gobuster, SecLists
Supply chain e segretitrufflehog, grype, syft, gitleaks, trivy
Framework di exploitationMetasploit (amd64), searchsploit (ExploitDB)

Alcuni strumenti (bettercap, Metasploit) sono disponibili solo su amd64 a causa di vincoli di pacchettizzazione upstream. Gli strumenti di cattura pacchetti (tshark, bettercap) richiedono la capability NET_ADMIN, che è inclusa nel docker-compose.yml predefinito.

Per l’elenco completo, eseguire claude-self-test all’interno del container (la sezione 7 verifica tutti gli strumenti di sicurezza).

RequisitoStato
Strumenti IA non installati sull’endpoint host
Esecuzione in VM o container isolato
Nessun accesso a condivisioni file dell’host
Nessuna sincronizzazione degli appunti
Nessun archivio credenziali condiviso
Nessun split tunneling VPN verso reti di produzione
Ambiente usa e getta
Nessuna estensione o plugin desktop
Capability Linux rimosse (privilegio minimo)
Limiti delle risorse applicati (CPU/memoria/PID)
Validazione dei certificati TLS attiva per impostazione predefinita
Servizi interni associati solo a localhost
  1. Non installare strumenti di coding IA sulla macchina host. Utilizzare invece questo container.
  2. Non aggiungere bind mount al docker-compose.yml. La configurazione con volumi nominati è intenzionale.
  3. Ruotare periodicamente le chiavi SSH utilizzate all’interno del container.
  4. Verificare il file .env prima di condividerlo. Contiene chiavi API e potrebbe contenere chiavi private SSH.
  5. Aggiornare periodicamente per applicare le patch di sicurezza:
Terminal window
docker compose pull && docker compose up -d