Sempre a proposito di Claude Code ed errori da evitare, è utile ricordare che un agente a riga di comando che opera localmente sulla tua macchina agisce con i tuoi stessi permessi utente. Questo significa che può leggere chiavi SSH, modificare il registro di sistema, installare dipendenze esterne ed effettuare richieste HTTP verso dei server remoti.
Trattare Claude Code come un ambiente isolato e privo di rischi è l'errore più pericoloso che uno sviluppatore possa commettere quando utilizza uno strumento di questo tipo. Le conseguenze di una configurazione negligente vanno dall'esecuzione di comandi distruttivi, parliamo quindi di command injection, all'esfiltrazione intenzionale di informazioni aziendali riservate o all'installazione di malware tramite attacchi di supply-chain sui package che, di volta in volta, vengono suggeriti.
Claude e il bypass totale dei permessi
Eseguire Claude disattivando i meccanismi di protezione nativi di un sistema per evitare fastidiosi prompt di conferma nel terminale non è per niente una buona idea. Ecco un esempio molto semplice di esposizione totale del sistema locale:
# Rimuove qualsiasi richiesta di autorizzazione: l'agente può agire in modo indiscriminato
claude --dangerously-skip-permissions
La contromisura è una configurazione rigorosa delle policy in .claude/settings.json o managed-settings.json. Si deve quindi organizzare la configurazione secondo un paradigma zero-trust. La regola da osservare prevede quindi di definire in modo granulare i comandi consentiti, allow, quelli da chiedere, ask, e quelli che sono categoricamente vietati, deny.
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test *)",
"Bash(git commit *)"
],
"ask": [
"Bash(git push *)",
"Bash(npm install *)"
],
"deny": [
"Read(./.env)",
"Read(~/.ssh/**)",
"Read(./secrets/**)",
"Bash(curl *)",
"Bash(wget *)",
"WebFetch(domain:*.evil.com)"
]
}
}
Ricordiamoci però che l'ordine di valutazione di Claude assegna sempre la priorità massima alle regole di negazione rispetto a quelle permissive. Inoltre, le regole rigide inserite a livello organizzativo tramite i percorsi di sistema, come /Library/Application Support/ClaudeCode/managed-settings.json su macOS, non possono mai essere sovrascritte da delle configurazioni del singolo sviluppatore.
Abilitazione indiscriminata dei server MCP
Abilitare l'esecuzione automatica di qualsiasi server MCP (Model Context Protocol) presente nel repository offre un vettore ideale per attacchi di prompt injection incorporati in codebase di terze parti.
Di seguito abbiamo la possibilità di osservare un esempio di configurazione MCP molto permissiva:
// Consente a Claude di attivare qualsiasi server MCP non verificato trovato nel progetto
{
"enableAllProjectMcpServers": true
}
Meglio una limitazione dei server affidabili e l'isolamento del filesystem. Per far questo bisogna specificare solo i server di cui si ha assoluta certezza e disabilitare l'accesso ricorsivo oltre la directory di progetto:
{
"enabledMcpjsonServers": ["github", "memory"],
"disabledMcpjsonServers": ["filesystem"]
}
Il problema del mancato isolamento
Incollare chiavi API private o token temporanei nella chat per consentire test rapidi, o lasciare file .env di produzione accessibili all'agente AI, è un'altra cattivissima pratica da evitare.
Si devono invece escludere rigorosamente i file sensibili inserendoli in .gitignore e .claudeignore. Per una protezione a livello di codice si può anche configurare un hook personalizzato che impedisca qualsiasi modifica o scrittura a cartelle "sensibili" come quella delle migrazioni o dei database di produzione. Ad esempio, per bloccare le esecuzioni esterne si deve forzare l'attivazione della sandbox nativa basata su container o l'isolamento a livello di sistema operativo:
# Avvia Claude all'interno di una sandbox per restringere l'accesso a filesystem e rete
claude --sandbox
Quando viene configurata la sandbox, le restrizioni del filesystem si fonderanno con le regole di accesso dell'utente e sarà garantita una maggiore protezione contro esfiltrazioni indesiderate. Questo anche in caso di input da parte di utenti o bot malintenzionati.
Se vuoi aggiornamenti su Claude Code e permessi utente inserisci la tua email nel box qui sotto: