
sandbox-runtime v0.0.67
Uno strumento di sandboxing leggero per imporre restrizioni su filesystem e rete a processi arbitrari a livello del sistema operativo, senza richiedere un contenitore.
Anthropic Sandbox Runtime (srt)
Uno strumento di sandboxing leggero per applicare restrizioni sul filesystem e sulla rete a processi arbitrari a livello di sistema operativo, senza richiedere un container.
srt utilizza primitive di sandboxing native del sistema operativo (sandbox-exec su macOS, bubblewrap su Linux) e filtraggio di rete basato su proxy. Può essere utilizzato per confinare il comportamento di agenti, server MCP locali, comandi bash e processi arbitrari.
Anteprima di Ricerca Beta
Il Sandbox Runtime è un'anteprima di ricerca sviluppata per Claude Code per consentire agenti AI più sicuri. Viene resa disponibile come anteprima open source precoce per aiutare l'ecosistema più ampio a costruire sistemi agentici più sicuri. Trattandosi di un'anteprima di ricerca precoce, le API e i formati di configurazione potrebbero evolversi. Accogliamo con favore feedback e contributi per rendere gli agenti AI più sicuri per impostazione predefinita!
Installazione```bash
npm install -g @anthropic-ai/sandbox-runtime
## Utilizzo di base```bash
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds
$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked
# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed
$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked
Panoramica
Questo pacchetto fornisce un'implementazione sandbox autonoma che può essere utilizzata sia come strumento CLI che come libreria. È progettato con una filosofia secure-by-default (sicuro per impostazione predefinita) adattata ai casi d'uso comuni degli sviluppatori: i processi partono con accesso minimo e si aprono esplicitamente solo i varchi necessari.
Capacità principali:
- Restrizioni di rete: Controlla quali host/domini possono essere accessibili tramite HTTP/HTTPS e altri protocolli
- Restrizioni del filesystem: Controlla quali file/directory possono essere letti/scritti
- Restrizioni dei socket Unix: Controlla l'accesso ai socket IPC locali
- Monitoraggio delle violazioni: Su macOS, accede all'archivio dei log delle violazioni della sandbox di sistema per avvisi in tempo reale
Caso d'uso di esempio: Sandboxing dei server MCP
Un caso d'uso chiave è il sandboxing dei server Model Context Protocol (MCP) per limitarne le capacità. Ad esempio, per applicare il sandboxing al server MCP del filesystem:
Senza sandboxing (.mcp.json):```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
**Con sandboxing** (`.mcp.json`):```json
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
Then configure restrictions in ~/.srt-settings.json:```json
{
"filesystem": {
"denyRead": [],
"allowWrite": ["."],
"denyWrite": ["~/sensitive-folder"]
},
"network": {
"allowedDomains": [],
"deniedDomains": []
}
}
Ora il server MCP sarà bloccato dalla scrittura nel percorso negato:```
> Write a file to ~/sensitive-folder
✗ Error: EPERM: operation not permitted, open '/Users/ollie/sensitive-folder/test.txt'
Come Funziona
La sandbox utilizza primitive a livello di sistema operativo per applicare restrizioni che si estendono all'intero albero dei processi:
- macOS: Utilizza
sandbox-execcon profili Seatbelt generati dinamicamente - Linux: Utilizza bubblewrap per la containerizzazione con isolamento dello spazio dei nomi di rete
- Windows: Esegue il processo in sandbox sotto un account utente locale dedicato
srt-sandbox, con una barriera di uscita Windows Filtering Platform basata sul SID di quell'account e ACE espliciti per sessione sull'albero di lavoro
0d1c612947c798aef48e6ab4beb7e8544da9d41a-4096x2305
Modello di Doppio Isolamento
Sia l'isolamento del filesystem che quello della rete sono necessari per una sandbox efficace. Senza l'isolamento dei file, un processo compromesso potrebbe esfiltrare chiavi SSH o altri file sensibili. Senza l'isolamento della rete, un processo potrebbe fuggire dalla sandbox e ottenere accesso di rete senza restrizioni.
Isolamento del Filesystem applica restrizioni di lettura e scrittura:
- Lettura (pattern nega-poi-consenti): Per impostazione predefinita, l'accesso in lettura è consentito ovunque. È possibile negare ampie regioni (ad es.,
/Users) e poi ri-consentire percorsi specifici al loro interno (ad es.,.).allowReadha la precedenza sudenyRead— l'opposto della scrittura, dovedenyWriteha la precedenza suallowWrite. Una vocedenyReadpiù specifica della regioneallowReadin cui ricade (ad es.denyRead: ["**/.env"]o["./secrets"]conallowRead: ["."]) rimane comunque negata. - Scrittura (pattern solo-consenti): Per impostazione predefinita, l'accesso in scrittura è negato ovunque. È necessario consentire esplicitamente i percorsi (ad es.,
.,/tmp). Una lista di autorizzazioni vuota significa nessun accesso in scrittura.
Isolamento della Rete (pattern solo-consenti): Per impostazione predefinita, tutto l'accesso alla rete è negato. È necessario consentire esplicitamente i domini. Una lista allowedDomains vuota significa nessun accesso alla rete. Il traffico di rete viene instradato attraverso server proxy in esecuzione sull'host:
-
Linux: Le richieste vengono instradate tramite il filesystem attraverso un socket di dominio Unix. Lo spazio dei nomi di rete del processo in sandbox viene completamente rimosso, quindi tutto il traffico di rete deve passare attraverso i proxy in esecuzione sull'host (in ascolto su socket Unix che vengono montati tramite bind nella sandbox)
-
macOS: Il profilo Seatbelt consente la comunicazione solo verso una specifica porta localhost. I proxy sono in ascolto su questa porta, creando un canale controllato per tutto l'accesso alla rete
-
Windows: Un set di filtri WFP a livello di macchina blocca tutte le connessioni in uscita provenienti dall'account
srt-sandboxeccetto il loopback verso l'intervallo di porte del proxy. I proxy sono in ascolto all'interno di tale intervallo, creando un canale controllato per tutto l'accesso alla rete
Sia il traffico HTTP/HTTPS (tramite proxy HTTP) che altro traffico TCP (tramite proxy SOCKS5) sono mediati da questi proxy, che applicano le liste di domini consentiti e negati.
Per maggiori dettagli sul sandboxing in Claude Code, consultare: