
NOVA - Sistema di protezione di Claude Code contro attacchi di iniezione di prompt
Monitoraggio della sicurezza e difesa contro l'iniezione di prompt per Claude Code utilizzando il NOVA Framework.
# Clona il repository
git clone https://github.com/fr0gger/nova-claude-code-protector.git
cd nova_claude_code_protector
# Installa globalmente (registra gli hook in ~/.claude/settings.json)
./install.sh
# Riavvia Claude Code per attivare gli hook
Questo è tutto! Nova-tracer proteggerà ora tutte le tue sessioni di Claude Code.
brew install jq su macOS)./install.sh
Il programma di installazione:
~/.claude/settings.json./uninstall.sh
Il programma di disinstallazione:
.nova-tracer/Nova-tracer registra quattro hook di Claude Code che lavorano insieme:
┌─────────────────────────────────────────────────────────────┐
│ Sessione Claude Code │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Hook SessionStart │
│ └── Crea il file JSONL della sessione │
│ └── Inizializza il tracciamento con ID sessione │
│ │
│ 2. Hook PreToolUse (Bash, Write, Edit) [ATTIVO] │
│ └── Scansiona i comandi PRIMA dell'esecuzione │
│ └── BLOCCA operazioni pericolose (rm -rf, ecc.) │
│ │
│ 3. Hook PostToolUse (Read, Bash, WebFetch, ecc.) [PASSIVO] │
│ └── Scansiona l'OUTPUT dello strumento per iniezione di prompt │
│ └── AVVERTE Claude se vengono rilevate minacce │
│ └── Registra l'evento con il verdetto di NOVA │
│ │
│ 4. Hook SessionEnd │
│ └── Genera un report HTML interattivo │
│ └── Crea un riepilogo della sessione basato su IA │
│ └── Salva in .nova-tracer/reports/ │
│ │
└─────────────────────────────────────────────────────────────┘
Nova-tracer fornisce due modalità di protezione:
Importante: Il rilevamento di iniezione di prompt è passivo. Quando Nova-tracer rileva un'iniezione di prompt in un file o una pagina web, il contenuto è già stato letto da Claude. Nova-tracer invia un messaggio di avviso a Claude consigliandogli di trattare il contenuto con sospetto, ma non impedisce a Claude di vedere il contenuto malevolo.
Questa è una limitazione dell'architettura dell'hook PostToolUse: viene eseguito dopo che lo strumento ha agito. Il blocco attivo delle iniezioni di prompt richiederebbe la scansione del contenuto prima che Claude lo legga, il che implicherebbe la lettura dei file due volte (una per la scansione, una per Claude).
Cosa viene bloccato attivamente:
rm -rf /, sudo rm -rf, mkfsdd if=... of=/dev/, fork bombcurl ... | sh, lettura di ~/.ssh/id_rsaCosa viene avvisato passivamente:
Una volta installato, Nova-tracer funziona automaticamente:
I report vengono salvati nella directory .nova-tracer/reports/ di ogni progetto:
# Elenca i report per il progetto corrente
ls .nova-tracer/reports/
# Apri un report nel browser
open .nova-tracer/reports/session-abc123.html
Il report HTML interattivo include:
Testa il rilevamento di Nova-tracer senza eseguire Claude Code:
# Esegui test di attacco campione
uv run hooks/test-nova-guard.py --samples
# Testa un testo specifico
uv run hooks/test-nova-guard.py --text "ignore previous instructions"
# Testa un file
uv run hooks/test-nova-guard.py --file suspicious.txt
# Modalità interattiva
uv run hooks/test-nova-guard.py -i
Nova-tracer funziona con impostazioni predefinite sensate, ma puoi personalizzare il comportamento.
Modifica config/nova-tracer.yaml:
# Directory di output dei report
# Vuoto = {progetto}/.nova-tracer/reports/ (predefinito)
# Percorso relativo = relativo al progetto
# Percorso assoluto = posizione esatta
report_output_dir: ""
# Riepiloghi della sessione basati su IA
# Imposta a false per usare riepiloghi solo statistici (nessuna chiamata API)
ai_summary_enabled: true
# Dimensione massima in KB per gli output degli strumenti nei report
# Output più grandi verranno troncati
output_truncation_kb: 10
# Directory per regole NOVA personalizzate
custom_rules_dir: "rules/"
Modifica config/nova-config.yaml:
# Provider LLM per il rilevamento di Livello 3
llm_provider: anthropic
model: claude-3-5-haiku-20241022
# Livelli di rilevamento (abilita/disabilita)
enable_keywords: true
enable_semantics: true
enable_llm: true
# Soglie (0.0 - 1.0)
semantic_threshold: 0.7
llm_threshold: 0.7
# Filtro di gravità
min_severity: low # low, medium o high
# Necessario per riepiloghi IA e rilevamento di livello LLM
export ANTHROPIC_API_KEY=sk-ant-...
Crea file .nov nella directory rules/:
rule MiaRegolaPersonalizzata
{
meta:
description = "Rileva il mio specifico pattern di attacco"
author = "Il Tuo Nome"
severity = "high"
category = "custom"
keywords:
$pattern1 = /il mio pattern regex/i
$pattern2 = "corrispondenza esatta stringa"
semantics:
$sem1 = "descrizione semantica dell'attacco" (0.75)
llm:
$llm1 = "Domanda per il LLM da valutare" (0.7)
condition:
any of ($pattern*) or $sem1 or $llm1
}
nova_claude_code_protector/
├── install.sh # Script di installazione globale
├── uninstall.sh # Script di rimozione
├── config/
│ ├── nova-config.yaml # Configurazione di scansione NOVA
├── rules/
│ ├── instruction_override.nov # Regole per attacchi di sovrascrittura
│ ├── roleplay_jailbreak.nov # Regole per attacchi jailbreak
│ ├── encoding_obfuscation.nov # Regole per attacchi di codifica
│ └── context_manipulation.nov # Regole per attacchi di contesto
├── hooks/
│ ├── session-start.py # Hook SessionStart
│ ├── pre-tool-guard.py # Hook PreToolUse (blocco)
│ ├── post-tool-nova-guard.py # Hook PostToolUse (scansione)
│ ├── session-end.py # Hook SessionEnd (report)
│ ├── test-nova-guard.py # Utility di test
│ └── lib/
│ ├── session_manager.py # Logica di tracciamento sessione
│ ├── report_generator.py # Generazione report HTML
│ ├── ai_summary.py # Generazione riepilogo IA
│ └── config.py # Gestione configurazione
├── tests/ # Suite di test completa (483 test)
└── test-files/ # File di iniezione campione
cat ~/.claude/settings.json | jq '.hooks'ls -la hooks/*.pyls .nova-tracer/sessions/La prima esecuzione scarica circa 1 GB di modelli. Se ci sono problemi:
# Cancella la cache dei modelli e riprova
rm -rf ~/.cache/huggingface/
uv run hooks/test-nova-guard.py --samples
echo $ANTHROPIC_API_KEYai_summary_enabled: true nella configurazione# Esegui tutti i test
uv run pytest tests/ -v
# Esegui un file di test specifico
uv run pytest tests/test_report_generator.py -v
# Esegui con copertura
uv run pytest tests/ --cov=hooks/lib
Licenza MIT - Vedi LICENSE
| Modalità | Hook | Comportamento | Caso d'Uso |
|---|
| ATTIVA | PreToolUse | Blocca l'esecuzione prima che avvenga | Comandi pericolosi (rm -rf /, sudo rm, ecc.) |
| PASSIVA | PostToolUse | Avverte Claude dopo che il contenuto è stato letto | Iniezione di prompt in file, pagine web, output di comandi |
| Livello | Metodo | Velocità | Rileva |
|---|
| Parole Chiave | Pattern regex | ~1ms | Pattern di attacco noti, frasi esatte |
| Semantica | Similarità ML | ~50ms | Attacchi parafrasati, variazioni |
| LLM | Valutazione AI | ~500-2000ms | Attacchi sofisticati e nuovi |