Rileva problemi di sicurezza mentre Claude scrive il codice
Installa il plugin security-guidance per far sì che Claude riveda le proprie modifiche al codice per individuare vulnerabilità e correggerle nella stessa sessione.
Il plugin di guida sulla sicurezza fa sì che Claude riveda le proprie modifiche al codice per individuare vulnerabilità comuni mentre lavora e corregga ciò che trova nella stessa sessione. Il plugin rileva problemi come injection, deserializzazione non sicura e API DOM non sicure prima che il codice raggiunga una pull request, riducendo quanto la revisione della sicurezza ricade sui revisori umani a valle.
Una volta installato, il plugin viene eseguito automaticamente. Non c'è nulla da invocare e nessun comando separato da ricordare.
Il plugin è il compagno in-session di Code Review, che viene eseguito sulle pull request. Questo plugin riduce ciò che raggiunge la PR. Code Review cattura ciò che fa. Per come il plugin si integra con la revisione su richiesta e la scansione CI, vedi Come questo si adatta ad altri strumenti di sicurezza.
Prerequisiti
- Claude Code CLI versione 2.1.144 o successiva
- Python 3.8 o successiva nel tuo
PATH. Il plugin provapython3,pythonepy -3in questo ordine - Un repository git per la directory in cui lavori. Le revisioni di fine turno e commit fanno il diff rispetto allo stato git e saltano silenziosamente al di fuori di un repository. Il controllo del pattern per modifica funziona ovunque
Al primo avvio il plugin crea un ambiente virtuale sotto ~/.claude/security/ e installa Claude Agent SDK al suo interno, il che richiede pip e accesso alla rete. Se quell'installazione fallisce, la revisione del commit ricade a una revisione singola invece di quella agentica. Su Windows il passaggio dell'ambiente virtuale viene saltato, quindi la revisione del commit agentica viene eseguita solo se claude-agent-sdk è già importabile e altrimenti ricade allo stesso modo.
Installa il plugin
In una sessione Claude Code, installa dal marketplace ufficiale Anthropic:
/plugin install security-guidance@claude-plugins-official
L'installazione richiede un ambito. Scegli l'ambito utente per scrivere il plugin nelle tue impostazioni utente, in modo che si carichi in ogni nuova sessione locale che avvii su questa macchina. Se Claude Code segnala che il marketplace non è stato trovato, esegui prima /plugin marketplace add anthropics/claude-plugins-official, quindi riprova l'installazione.
Quindi attivalo nella sessione corrente con /reload-plugins, che applica le modifiche ai plugin in sospeso senza un riavvio:
/reload-plugins
Abilita nelle sessioni cloud e nei repository condivisi
I plugin con ambito utente non vengono trasferiti a Claude Code sul web, perché quelle sessioni vengono eseguite sull'infrastruttura Anthropic piuttosto che sulla tua macchina. Per abilitare il plugin lì, o per attivarlo per tutti coloro che clonano un repository, dichiaralo nelle impostazioni del progetto archiviate:
{
"enabledPlugins": {
"security-guidance@claude-plugins-official": true
}
}
Gli amministratori possono abilitare il plugin a livello organizzativo impostando enabledPlugins nelle impostazioni gestite.
Cosa controlla il plugin
Il plugin rivede il lavoro di Claude in tre punti, ognuno a una profondità diversa:
- Su ogni modifica di file: una corrispondenza di pattern veloce per chiamate rischiose, senza chiamata al modello
- Alla fine di ogni turno: una revisione del modello in background di tutto ciò che quel turno ha modificato
- Su ogni commit o push che Claude fa: una revisione agentica più profonda che legge il codice circostante
Puoi estendere ogni livello aggiungendo le tue regole. I controlli incorporati non possono essere rimossi individualmente, ma puoi disabilitare ogni livello indipendentemente.
Su ogni modifica di file
Quando Claude scrive in un file, il plugin scansiona il nuovo contenuto per pattern noti rischiosi. Questa è una corrispondenza di pattern senza chiamata al modello, quindi non aggiunge alcun costo di utilizzo.
Categorie di pattern di esempio:
- Esecuzione di codice dinamico:
eval(,new Function,os.system,child_process.exec - Deserializzazione non sicura:
pickle - Injection DOM:
dangerouslySetInnerHTML,.innerHTML =,document.write - File di workflow: modifiche sotto
.github/workflows/, che possono concedere autorizzazioni a livello di repository
Il controllo viene eseguito dopo che la modifica è stata applicata e aggiunge l'avviso al contesto di Claude per il passaggio successivo. Ogni avviso si attiva una volta per pattern per file per sessione, quindi le corrispondenze ripetute nello stesso file non inondano la conversazione.
Puoi aggiungere i tuoi pattern a questo livello con un file security-patterns.yaml.
Alla fine di ogni turno
Un turno è un round di risposta di Claude: invii un messaggio, Claude lavora e risponde, e il turno termina. Dopo ogni turno, il plugin calcola un git diff di tutto ciò che è cambiato nell'albero di lavoro durante il turno, incluse le modifiche dagli strumenti di modifica di Claude, dai comandi Bash e dai subagent, e lo invia a una revisione Claude separata focalizzata sulla sicurezza. La revisione viene eseguita in background, quindi la risposta di Claude non viene ritardata. Se la revisione trova problemi, Claude viene ripromptato con i risultati e li affronta come follow-up.
Questo cattura problemi che una corrispondenza di stringa non può, come:
- Bypass dell'autorizzazione
- Riferimenti diretti a oggetti non sicuri
- Injection
- Server-side request forgery
- Crittografia debole
Vedi sia il risultato che la risoluzione di Claude direttamente nella tua sessione. La revisione copre fino a 30 file modificati per turno e si attiva al massimo tre volte di seguito prima di cedere il controllo a te.
Su ogni commit o push che Claude fa
Quando Claude esegue git commit o git push attraverso il suo strumento Bash, il plugin esegue una revisione agentica più profonda della modifica in background. Questa revisione legge il codice circostante, inclusi i chiamanti, i sanitizer e i file correlati, per decidere se un risultato è reale prima di segnalarlo. Il contesto aggiuntivo mantiene bassi i falsi positivi su pattern che sembrano pericolosi in isolamento ma sono sicuri nel tuo codebase.
Questo livello si attiva solo su commit e push che Claude fa attraverso il suo strumento Bash. I commit che esegui dalla tua shell, incluso l'escape shell ! all'interno di una sessione, non vengono revisionati. Le revisioni di commit e push sono limitate a 20 per ora mobile. Se i risultati della revisione del commit duplicano ciò che la revisione di fine turno ha già segnalato, Claude non viene ripromptato, quindi un commit pulito non produce output visibile da questo livello.
Indipendenza e limiti della revisione
Il plugin non chiede alla stessa istanza di Claude che ha scritto il codice di valutare se stesso. Il controllo per modifica è una corrispondenza di stringa deterministica senza modello coinvolto. Le revisioni di fine turno e commit vengono eseguite come una chiamata Claude separata con un contesto fresco e un prompt focalizzato sulla sicurezza: il revisore inizia dal diff, non ha investimento nell'approccio originale ed è istruito solo a trovare problemi.
Nessuno dei livelli blocca le scritture o i commit. I risultati raggiungono Claude che scrive come istruzioni, Claude li affronta nella conversazione, e il modello di revisione può perdere problemi. Tratta il plugin come uno strato di difesa in profondità, non una soluzione di sicurezza completa. Vedi Come questo si adatta ad altri strumenti di sicurezza.
Aggiungi le tue regole
Il plugin ha due punti di estensione: un file di guida Markdown per le revisioni supportate dal modello e un file di pattern YAML o JSON per la corrispondenza di stringa per modifica. Entrambi sono additivi. Puoi aggiungere controlli ma non puoi disabilitare quelli incorporati da questi file.
Aggiungi guida per le revisioni supportate dal modello
Crea .claude/claude-security-guidance.md nel tuo progetto e descrivi il tuo modello di minaccia e la tua lista di controllo di revisione in linguaggio naturale. Le revisioni supportate dal modello lo caricano come contesto aggiuntivo insieme alla lista di controllo delle vulnerabilità incorporata.
Il seguente esempio è per un servizio web con route admin controllate da ruoli e una politica di logging dei dati dei clienti:
# Security guidance for this repo
- Do not log `customer_id` or `account_number` at INFO level or above.
- All routes under `/admin` must call `require_role("admin")` before any database read.
- Use `crypto.timingSafeEqual` for token comparison instead of `===`.
Queste regole sono guida per il revisore, non guardrail deterministici. Il plugin presenta le violazioni come risultati per Claude da correggere, ma non blocca le scritture o garantisce che ogni violazione sia catturata. La guida è solo additiva: una regola che dice di ignorare una classe di vulnerabilità non sopprime quei risultati. Per l'applicazione rigida, abbina il plugin con un hook che blocca la modifica o un controllo CI.
Aggiungi pattern personalizzati per modifica
Crea .claude/security-patterns.yaml per aggiungere regole regex o substring al controllo di pattern per modifica. Questi vengono eseguiti come corrispondenze di stringa deterministiche insieme ai pattern incorporati:
patterns:
- rule_name: internal_api_key
substrings: ["sk_live_", "AKIA"]
reminder: "Hardcoded API key prefix. Load credentials from the secret manager."
- rule_name: tenant_unfiltered_query
regex: "\\.objects\\.all\\(\\)"
paths: ["**/src/tenants/**"]
reminder: "Multi-tenant code must filter by org_id."
| Campo | Tipo | Descrizione |
|---|---|---|
rule_name |
string | Identificatore mostrato nell'avviso |
reminder |
string | Testo di avviso aggiunto al contesto di Claude, limitato a 1 KB |
regex |
string | Regex Python abbinato al contenuto modificato |
substrings |
list | Substring letterali; fornisci questo o regex |
paths |
list | Pattern glob opzionali; la regola si applica solo ai file corrispondenti. I glob corrispondono al percorso file completo, quindi prefissa i pattern relativi al progetto con **/ |
exclude_paths |
list | Pattern glob opzionali da saltare; lo stesso matching di paths |
Il plugin legge anche .claude/security-patterns.yml e .claude/security-patterns.json con lo stesso schema. JSON funziona su qualsiasi installazione Python. Le forme YAML richiedono che PyYAML sia importabile, che il plugin non installa per te. Il plugin carica fino a 50 regole personalizzate e salta le regex che sembrano inclini al backtracking catastrofico.
Posizioni di ricerca del file di regole
Il plugin cerca claude-security-guidance.md e security-patterns.yaml negli stessi percorsi, indipendentemente da come il plugin è stato abilitato:
| Ambito | Percorso | Note |
|---|---|---|
| Utente | ~/.claude/claude-security-guidance.md |
Si applica a ogni progetto sulla tua macchina |
| Progetto | .claude/claude-security-guidance.md |
Archiviato con il repository |
| Progetto locale | .claude/claude-security-guidance.local.md |
Gitignored, per override personali |
Il plugin carica tutti i percorsi che esistono e li concatena, con un limite combinato di 8 KB per il file di guida. Gli amministratori possono distribuire regole a livello organizzativo spingendo il file con ambito utente a ~/.claude/ attraverso la gestione dei dispositivi. Gli stessi percorsi si applicano a security-patterns.yaml.
Costo di utilizzo
Il controllo di pattern per modifica non effettua alcuna chiamata al modello e non aggiunge alcun costo. Le revisioni di fine turno e commit spendono ciascuna un utilizzo del modello aggiuntivo che conta verso il tuo utilizzo come qualsiasi altra richiesta Claude. La revisione del commit è agentica e può richiedere diversi turni di modello per commit, limitata a 20 revisioni per ora mobile. Aspettati approssimativamente una chiamata di revisione per turno che modifica i file e una revisione più profonda per commit, entrambe soggette ai limiti di cui sopra.
Entrambe le revisioni supportate dal modello utilizzano Claude Opus 4.7 per impostazione predefinita. Imposta SECURITY_REVIEW_MODEL per scegliere un modello diverso per la revisione di fine turno e SG_AGENTIC_MODEL per la revisione del commit.
Il plugin è disponibile su tutti i piani.
Disabilita o disinstalla
Per disattivare i singoli livelli mantenendo il resto, imposta la variabile di ambiente corrispondente:
| Variabile | Effetto |
|---|---|
ENABLE_PATTERN_RULES=0 |
Disabilita il controllo di pattern per modifica |
ENABLE_STOP_REVIEW=0 |
Disabilita la revisione diff di fine turno |
ENABLE_COMMIT_REVIEW=0 |
Disabilita la revisione di commit e push |
ENABLE_CODE_SECURITY_REVIEW=0 |
Disabilita tutte le revisioni supportate dal modello contemporaneamente |
SECURITY_GUIDANCE_DISABLE=1 |
Disabilita il plugin completamente senza disinstallarlo |
Per mettere in pausa il plugin nel tuo ambito utente:
/plugin disable security-guidance@claude-plugins-official
Per rimuoverlo dal tuo ambito utente:
/plugin uninstall security-guidance@claude-plugins-official
Se il plugin è stato abilitato attraverso il .claude/settings.json di un progetto, disabilitarlo da /plugin scrive un override al tuo .claude/settings.local.json piuttosto che modificare il file archiviato, quindi il plugin rimane disattivato per te mentre i tuoi compagni di squadra non sono interessati. Se è stato abilitato attraverso impostazioni gestite, solo un amministratore può disabilitarlo.
Come il plugin si integra con Claude Code
Il plugin è costruito interamente su hooks, il meccanismo per eseguire il tuo codice in punti specifici del loop di Claude. Registra:
| Evento Hook | Scopo |
|---|---|
SessionStart |
Bootstrap dell'ambiente Python del plugin |
UserPromptSubmit |
Cattura la baseline dell'albero di lavoro su cui la revisione di fine turno fa il diff |
PostToolUse su Edit, Write e NotebookEdit |
Corrispondenza di pattern per modifica |
Stop |
Revisione diff di fine turno, eseguita in background |
PostToolUse su Bash, filtrato a git commit e git push |
Revisione di commit e push, eseguita in background |
Se costruisci i tuoi hook, il codice sorgente del plugin è un esempio funzionante di esecuzione di una chiamata di modello separata da un hook e alimentazione del risultato di nuovo alla sessione.
Come questo si adatta ad altri strumenti di sicurezza
Il plugin è uno strato in un approccio di difesa in profondità. Cattura i problemi il più presto possibile, mentre il codice è ancora nell'editor, ma non è una garanzia e non sostituisce i controlli successivi. Uno stack tipico:
| Fase | Strumento | Cosa copre |
|---|---|---|
| In sessione | Plugin di guida sulla sicurezza | Vulnerabilità comuni nel codice che Claude scrive, corrette nella stessa sessione |
| Su richiesta | /security-review |
Passaggio di sicurezza una tantum sul ramo corrente, eseguito quando lo chiedi |
| Su pull request | Code Review, piani Team e Enterprise | Revisione multi-agent di correttezza e sicurezza con contesto completo del codebase |
| In CI | I tuoi scanner di analisi statica e dipendenze esistenti | Regole specifiche del linguaggio, controlli della catena di approvvigionamento e applicazione delle politiche che il plugin non tenta |
Ogni fase successiva cattura ciò che quelle precedenti perdono. Il valore del plugin è ridurre il volume che le raggiunge, non eliminare la necessità di esse.
Risoluzione dei problemi
Il plugin scrive diagnostica di runtime in ~/.claude/security/log.txt. Controlla lì per primo se le revisioni non vengono visualizzate.
Motivi comuni per cui un livello di revisione salta senza un messaggio nella conversazione:
- La directory non è un repository git: le revisioni di fine turno e commit richiedono lo stato git e saltano al di fuori di un repository
- La sessione non ha autenticazione Anthropic: le revisioni supportate dal modello saltano e viene eseguito solo il controllo di pattern per modifica
- Un file
security-patterns.yamlè presente ma PyYAML non è importabile: il file viene ignorato. Usasecurity-patterns.jsoninvece
Risorse correlate
Per approfondire i pezzi che questa pagina tocca:
- Code Review: configura la revisione multi-agent al momento della PR
- Automatizza i workflow con gli hook: costruisci i tuoi controlli negli stessi punti del ciclo di vita
- Scopri e installa plugin: sfoglia altri plugin ufficiali