
NOVA - Claude Code-Schutzsystem gegen Prompt-Injection-Angriffe
Sicherheitsüberwachung und Prompt-Injection-Abwehr für Claude Code unter Verwendung des NOVA Frameworks.
# Repository klonen
git clone https://github.com/fr0gger/nova-claude-code-protector.git
cd nova_claude_code_protector
# Global installieren (registriert Hooks in ~/.claude/settings.json)
./install.sh
# Claude Code neu starten, um die Hooks zu aktivieren
Das war's! Nova-tracer schützt nun alle Ihre Claude-Code-Sitzungen.
brew install jq)./install.sh
Das Installationsskript wird:
~/.claude/settings.json registrieren./uninstall.sh
Das Deinstallationsskript wird:
.nova-tracer/-Verzeichnisse bereinigenNova-tracer registriert vier Claude-Code-Hooks, die zusammenarbeiten:
┌─────────────────────────────────────────────────────────────┐
│ Claude Code Session │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. SessionStart Hook │
│ └── Erstellt JSONL-Datei für Sitzung │
│ └── Initialisiert Verfolgung mit Sitzungs-ID │
│ │
│ 2. PreToolUse Hook (Bash, Write, Edit) [AKTIV] │
│ └── Scannt Befehle VOR der Ausführung │
│ └── BLOCKIERT gefährliche Operationen (rm -rf, usw.) │
│ │
│ 3. PostToolUse Hook (Read, Bash, WebFetch, etc.) [PASSIV] │
│ └── Scannt Werkzeug-AUSGABE auf Prompt Injection │
│ └── WARNT Claude, falls Bedrohungen erkannt │
│ └── Zeichnet Ereignis mit NOVA-Beurteilung auf │
│ │
│ 4. SessionEnd Hook │
│ └── Erzeugt interaktiven HTML-Bericht │
│ └── Erstellt KI-gestützte Sitzungszusammenfassung │
│ └── Speichert in .nova-tracer/reports/ │
│ │
└─────────────────────────────────────────────────────────────┘
Nova-tracer bietet zwei Schutzmodi:
Wichtig: Die Prompt-Injection-Erkennung ist passiv. Wenn Nova-tracer eine Prompt Injection in einer Datei oder Webseite erkennt, wurde der Inhalt bereits von Claude gelesen. Nova-tracer sendet eine Warnmeldung an Claude, die empfiehlt, den Inhalt mit Misstrauen zu behandeln, verhindert jedoch nicht, dass Claude den schädlichen Inhalt sieht.
Dies ist eine Einschränkung der PostToolUse-Hook-Architektur – sie wird nach der Ausführung des Werkzeugs ausgeführt. Eine aktive Blockierung von Prompt Injections würde erfordern, dass der Inhalt vor dem Lesen durch Claude gescannt wird, was ein zweimaliges Lesen der Dateien erfordern würde (einmal zum Scannen, einmal für Claude).
Was aktiv blockiert wird:
rm -rf /, sudo rm -rf, mkfsdd if=... of=/dev/, Fork-Bombencurl ... | sh, Lesen von ~/.ssh/id_rsaWas passiv gewarnt wird:
Nach der Installation arbeitet Nova-tracer automatisch:
Berichte werden im Verzeichnis .nova-tracer/reports/ jedes Projekts gespeichert:
# Berichte des aktuellen Projekts auflisten
ls .nova-tracer/reports/
# Einen Bericht im Browser öffnen
open .nova-tracer/reports/session-abc123.html
Der interaktive HTML-Bericht umfasst:
Testen Sie die Nova-tracer-Erkennung ohne Ausführung von Claude Code:
# Beispiel-Angriffstests ausführen
uv run hooks/test-nova-guard.py --samples
# Spezifischen Text testen
uv run hooks/test-nova-guard.py --text "ignoriere vorherige Anweisungen"
# Datei testen
uv run hooks/test-nova-guard.py --file suspicious.txt
# Interaktiver Modus
uv run hooks/test-nova-guard.py -i
Nova-tracer arbeitet mit sinnvollen Standardeinstellungen, Sie können das Verhalten jedoch anpassen.
Bearbeiten Sie config/nova-tracer.yaml:
# Bericht-Ausgabeverzeichnis
# Leer = {Projekt}/.nova-tracer/reports/ (Standard)
# Relativer Pfad = relativ zum Projekt
# Absoluter Pfad = genauer Speicherort
report_output_dir: ""
# KI-gestützte Sitzungszusammenfassungen
# Auf false setzen, um statistikbasierte Zusammenfassungen zu verwenden (keine API-Aufrufe)
ai_summary_enabled: true
# Maximale Größe in KB für Werkzeugausgaben in Berichten
# Größere Ausgaben werden abgeschnitten
output_truncation_kb: 10
# Verzeichnis für benutzerdefinierte NOVA-Regeln
custom_rules_dir: "rules/"
Bearbeiten Sie config/nova-config.yaml:
# LLM-Anbieter für Stufe-3-Erkennung
llm_provider: anthropic
model: claude-3-5-haiku-20241022
# Erkennungsstufen (aktivieren/deaktivieren)
enable_keywords: true
enable_semantics: true
enable_llm: true
# Schwellwerte (0.0 - 1.0)
semantic_threshold: 0.7
llm_threshold: 0.7
# Schweregradfilter
min_severity: low # low, medium oder high
# Erforderlich für KI-Zusammenfassungen und LLM-Stufenerkennung
export ANTHROPIC_API_KEY=sk-ant-...
Erstellen Sie .nov-Dateien im Verzeichnis rules/:
rule MeineBenutzerdefinierteRegel
{
meta:
description = "Erkennt mein spezifisches Angriffsmuster"
author = "Ihr Name"
severity = "high"
category = "custom"
keywords:
$muster1 = /mein regex muster/i
$muster2 = "exakte Zeichenkette"
semantics:
$sem1 = "semantische Beschreibung des Angriffs" (0.75)
llm:
$llm1 = "Frage an das LLM zur Bewertung" (0.7)
condition:
any of ($muster*) or $sem1 or $llm1
}
nova_claude_code_protector/
├── install.sh # Globales Installationsskript
├── uninstall.sh # Deinstallationsskript
├── config/
│ ├── nova-config.yaml # NOVA-Scankonfiguration
├── rules/
│ ├── instruction_override.nov # Regeln für Anweisungsüberschreibungsangriffe
│ ├── roleplay_jailbreak.nov # Regeln für Jailbreak-Angriffe
│ ├── encoding_obfuscation.nov # Regeln für Kodierungsangriffe
│ └── context_manipulation.nov # Regeln für Kontextangriffe
├── hooks/
│ ├── session-start.py # SessionStart-Hook
│ ├── pre-tool-guard.py # PreToolUse-Hook (Blockierung)
│ ├── post-tool-nova-guard.py # PostToolUse-Hook (Scanning)
│ ├── session-end.py # SessionEnd-Hook (Berichte)
│ ├── test-nova-guard.py # Testwerkzeug
│ └── lib/
│ ├── session_manager.py # Logik zur Sitzungsverfolgung
│ ├── report_generator.py # HTML-Berichtsgenerierung
│ ├── ai_summary.py # KI-Zusammenfassungsgenerierung
│ └── config.py # Konfigurationsverwaltung
├── tests/ # Umfassende Testsuite (483 Tests)
└── test-files/ # Beispiel-Injektionsdateien
cat ~/.claude/settings.json | jq '.hooks'ls -la hooks/*.pyls .nova-tracer/sessions/Der erste Ladevorgang lädt etwa 1 GB an Modellen herunter. Bei Problemen:
# Modell-Cache leeren und erneut versuchen
rm -rf ~/.cache/huggingface/
uv run hooks/test-nova-guard.py --samples
echo $ANTHROPIC_API_KEYai_summary_enabled: true in der Konfiguration gesetzt ist# Alle Tests ausführen
uv run pytest tests/ -v
# Bestimmte Testdatei ausführen
uv run pytest tests/test_report_generator.py -v
# Mit Codeabdeckung
uv run pytest tests/ --cov=hooks/lib
MIT-Lizenz – Siehe LICENSE
| Modus | Hook | Verhalten | Anwendungsfall |
|---|
| AKTIV | PreToolUse | Blockiert Ausführung, bevor sie stattfindet | Gefährliche Befehle (rm -rf /, sudo rm, usw.) |
| PASSIV | PostToolUse | Warnt Claude, nachdem Inhalt gelesen wurde | Prompt Injection in Dateien, Webseiten, Befehlsausgaben |
| Stufe | Methode | Geschwindigkeit | Erfasst |
|---|
| Schlüsselwörter | Regex-Muster | ~1ms | Bekannte Angriffsmuster, exakte Phrasen |
| Semantik | ML-Ähnlichkeit | ~50ms | Paraphrasierte Angriffe, Variationen |
| LLM | KI-Bewertung | ~500-2000ms | Raffinierte, neuartige Angriffe |