- Home
- Contenitore di sviluppo
- Sicurezza
Sicurezza
Contesto
Sezione intitolata “Contesto”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.
Modello di Isolamento
Sezione intitolata “Modello di Isolamento”+------------------------------------------------+| 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 | || +------------------------------------------+ |+------------------------------------------------+Controlli di Sicurezza
Sezione intitolata “Controlli di Sicurezza”Nessun Montaggio di Volumi Host
Sezione intitolata “Nessun Montaggio di Volumi 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.
Nessun Archivio Credenziali Condiviso
Sezione intitolata “Nessun Archivio Credenziali Condiviso”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.
Nessuna Sincronizzazione degli Appunti
Sezione intitolata “Nessuna Sincronizzazione degli Appunti”I container Docker non condividono lo stato degli appunti con l’host. I dati non possono fuoriuscire tramite copia/incolla.
Isolamento di Rete
Sezione intitolata “Isolamento di Rete”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.
Effimero per Design
Sezione intitolata “Effimero per Design”L’intero ambiente può essere distrutto e ricreato in pochi secondi. Trattate il container come usa e getta.
docker compose down -vdocker compose pull && docker compose up -dpodman-compose down -vpodman-compose pull && podman-compose up -dStrumenti Solo da Riga di Comando
Sezione intitolata “Strumenti Solo da Riga di Comando”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.
Hardening del Container
Sezione intitolata “Hardening del 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) eNET_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,cpusepids_limitper 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 predefinita —
NODE_TLS_REJECT_UNAUTHORIZEDnon è 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 aggiungendoNODE_TLS_REJECT_UNAUTHORIZED=0al 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 chiamatachmod.
Strumenti di Sicurezza e Penetration Testing
Sezione intitolata “Strumenti di Sicurezza e Penetration Testing”Il container include circa 80 strumenti di sicurezza e penetration testing pre-installati per scenari di test autorizzati. Gli strumenti sono organizzati per categoria:
| Categoria | Strumenti (esempi) |
|---|---|
| Analisi di rete | tshark, wireshark, masscan, hping3, bettercap (amd64), netdiscover |
| Scanner web | nikto, sqlmap, dirb, whatweb, sslscan, OWASP ZAP, dalfox, feroxbuster |
| Password e autenticazione | hydra, john, hashcat, medusa, ncrack |
| Reverse engineering | radare2, Ghidra, gdb, binwalk, strace, ltrace |
| Ricognizione | subfinder, amass, httpx, nuclei, gau, waybackurls, recon-ng, spiderfoot |
| Fuzzing ed enumerazione | ffuf, gobuster, SecLists |
| Supply chain e segreti | trufflehog, grype, syft, gitleaks, trivy |
| Framework di exploitation | Metasploit (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).
Checklist di Conformità
Sezione intitolata “Checklist di Conformità”| Requisito | Stato |
|---|---|
| Strumenti IA non installati sull’endpoint host | Sì |
| Esecuzione in VM o container isolato | Sì |
| Nessun accesso a condivisioni file dell’host | Sì |
| Nessuna sincronizzazione degli appunti | Sì |
| Nessun archivio credenziali condiviso | Sì |
| Nessun split tunneling VPN verso reti di produzione | Sì |
| Ambiente usa e getta | Sì |
| Nessuna estensione o plugin desktop | Sì |
| Capability Linux rimosse (privilegio minimo) | Sì |
| Limiti delle risorse applicati (CPU/memoria/PID) | Sì |
| Validazione dei certificati TLS attiva per impostazione predefinita | Sì |
| Servizi interni associati solo a localhost | Sì |
Best Practice
Sezione intitolata “Best Practice”- Non installare strumenti di coding IA sulla macchina host. Utilizzare invece questo container.
- Non aggiungere bind mount al
docker-compose.yml. La configurazione con volumi nominati è intenzionale. - Ruotare periodicamente le chiavi SSH utilizzate all’interno del container.
- Verificare il file
.envprima di condividerlo. Contiene chiavi API e potrebbe contenere chiavi private SSH. - Aggiornare periodicamente per applicare le patch di sicurezza:
docker compose pull && docker compose up -dpodman-compose pull && podman-compose up -d