
NOVA - Système de protection Claude Code contre les attaques par injection de prompts
Surveillance de sécurité et défense contre les injections de prompts pour Claude Code utilisant le NOVA Framework.
# Clone the repository
git clone https://github.com/fr0gger/nova-claude-code-protector.git
cd nova_claude_code_protector
# Install globally (registers hooks in ~/.claude/settings.json)
./install.sh
# Restart Claude Code to activate hooks
C'est tout ! Nova-tracer protégera désormais toutes vos sessions Claude Code.
brew install jq sur macOS)./install.sh
L'installateur va :
~/.claude/settings.json./uninstall.sh
Le désinstallateur va :
.nova-tracer/Nova-tracer enregistre quatre hooks Claude Code qui fonctionnent ensemble :
┌─────────────────────────────────────────────────────────────┐
│ Claude Code Session │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. SessionStart Hook │
│ └── Creates session JSONL file │
│ └── Initializes tracking with session ID │
│ │
│ 2. PreToolUse Hook (Bash, Write, Edit) [ACTIVE] │
│ └── Scans commands BEFORE execution │
│ └── BLOCKS dangerous operations (rm -rf, etc.) │
│ │
│ 3. PostToolUse Hook (Read, Bash, WebFetch, etc.) [PASSIVE] │
│ └── Scans tool OUTPUT for prompt injection │
│ └── WARNS Claude if threats detected │
│ └── Records event with NOVA verdict │
│ │
│ 4. SessionEnd Hook │
│ └── Generates interactive HTML report │
│ └── Creates AI-powered session summary │
│ └── Saves to .nova-tracer/reports/ │
│ │
└─────────────────────────────────────────────────────────────┘
Nova-tracer offre deux modes de protection :
Important : La détection d'injection de prompt est passive. Lorsque Nova-tracer détecte une injection de prompt dans un fichier ou une page Web, le contenu a déjà été lu par Claude. Nova-tracer envoie un message d'avertissement à Claude lui conseillant de traiter le contenu avec suspicion, mais n'empêche pas Claude de voir le contenu malveillant.
Il s'agit d'une limitation de l'architecture du hook PostToolUse - il s'exécute après l'exécution de l'outil. Le blocage actif des injections de prompt nécessiterait de scanner le contenu avant que Claude ne le lise, ce qui impliquerait de lire les fichiers deux fois (une fois pour le scan, une fois pour Claude).
Ce qui est activement bloqué :
rm -rf /, sudo rm -rf, mkfsdd if=... of=/dev/, bombes forkcurl ... | sh, lecture de ~/.ssh/id_rsaCe qui est passivement averti :
Une fois installé, Nova-tracer fonctionne automatiquement :
Les rapports sont sauvegardés dans le répertoire .nova-tracer/reports/ de chaque projet :
# Lister les rapports pour le projet courant
ls .nova-tracer/reports/
# Ouvrir un rapport dans votre navigateur
open .nova-tracer/reports/session-abc123.html
Le rapport HTML interactif inclut :
Testez la détection de Nova-tracer sans exécuter Claude Code :
# Exécuter les tests d'attaques échantillons
uv run hooks/test-nova-guard.py --samples
# Tester un texte spécifique
uv run hooks/test-nova-guard.py --text "ignore previous instructions"
# Tester un fichier
uv run hooks/test-nova-guard.py --file suspicious.txt
# Mode interactif
uv run hooks/test-nova-guard.py -i
Nova-tracer fonctionne avec des valeurs par défaut raisonnables, mais vous pouvez personnaliser le comportement.
Modifier config/nova-tracer.yaml :
# Report output directory
# Empty = {project}/.nova-tracer/reports/ (default)
# Relative path = relative to project
# Absolute path = exact location
report_output_dir: ""
# AI-powered session summaries
# Set to false to use stats-only summaries (no API calls)
ai_summary_enabled: true
# Maximum size in KB for tool outputs in reports
# Larger outputs will be truncated
output_truncation_kb: 10
# Directory for custom NOVA rules
custom_rules_dir: "rules/"
Modifier config/nova-config.yaml :
# LLM Provider for Tier 3 detection
llm_provider: anthropic
model: claude-3-5-haiku-20241022
# Detection tiers (enable/disable)
enable_keywords: true
enable_semantics: true
enable_llm: true
# Thresholds (0.0 - 1.0)
semantic_threshold: 0.7
llm_threshold: 0.7
# Severity filter
min_severity: low # low, medium, or high
# Required for AI summaries and LLM-tier detection
export ANTHROPIC_API_KEY=sk-ant-...
Créez des fichiers .nov dans le répertoire rules/ :
rule MyCustomRule
{
meta:
description = "Detects my specific attack pattern"
author = "Your Name"
severity = "high"
category = "custom"
keywords:
$pattern1 = /my regex pattern/i
$pattern2 = "exact string match"
semantics:
$sem1 = "semantic description of attack" (0.75)
llm:
$llm1 = "Question for LLM to evaluate" (0.7)
condition:
any of ($pattern*) or $sem1 or $llm1
}
nova_claude_code_protector/
├── install.sh # Global installation script
├── uninstall.sh # Removal script
├── config/
│ ├── nova-config.yaml # NOVA scanning configuration
├── rules/
│ ├── instruction_override.nov # Override attack rules
│ ├── roleplay_jailbreak.nov # Jailbreak attack rules
│ ├── encoding_obfuscation.nov # Encoding attack rules
│ └── context_manipulation.nov # Context attack rules
├── hooks/
│ ├── session-start.py # SessionStart hook
│ ├── pre-tool-guard.py # PreToolUse hook (blocking)
│ ├── post-tool-nova-guard.py # PostToolUse hook (scanning)
│ ├── session-end.py # SessionEnd hook (reports)
│ ├── test-nova-guard.py # Testing utility
│ └── lib/
│ ├── session_manager.py # Session tracking logic
│ ├── report_generator.py # HTML report generation
│ ├── ai_summary.py # AI summary generation
│ └── config.py # Configuration management
├── tests/ # Comprehensive test suite (483 tests)
└── test-files/ # Sample injection files
cat ~/.claude/settings.json | jq '.hooks'ls -la hooks/*.pyls .nova-tracer/sessions/La première exécution télécharge ~1 Go de modèles. En cas de problèmes :
# Vider le cache des modèles et réessayer
rm -rf ~/.cache/huggingface/
uv run hooks/test-nova-guard.py --samples
echo $ANTHROPIC_API_KEYai_summary_enabled: true dans la configuration# Run all tests
uv run pytest tests/ -v
# Run specific test file
uv run pytest tests/test_report_generator.py -v
# Run with coverage
uv run pytest tests/ --cov=hooks/lib
Licence MIT - Voir LICENSE
| Mode | Hook | Comportement | Cas d'utilisation |
|---|
| ACTIF | PreToolUse | Bloque l'exécution avant qu'elle n'ait lieu | Commandes dangereuses (rm -rf /, sudo rm, etc.) |
| PASSIF | PostToolUse | Avertit Claude après la lecture du contenu | Injection de prompt dans les fichiers, pages Web, sortie de commandes |
| Niveau | Méthode | Vitesse | Capture |
|---|
| Mots-clés | Expressions régulières | ~1ms | Modèles d'attaque connus, phrases exactes |
| Sémantique | Similarité ML | ~50ms | Attaques paraphrasées, variations |
| LLM | Évaluation IA | ~500-2000ms | Attaques sophistiquées et nouvelles |