
NOVA - Claude Code Protection System contra ataques de injeção de prompt
Monitoramento de segurança e defesa contra injeção de prompt para Claude Code usando o NOVA Framework.
# Clone o repositório
git clone https://github.com/fr0gger/nova-claude-code-protector.git
cd nova_claude_code_protector
# Instale globalmente (registra hooks em ~/.claude/settings.json)
./install.sh
# Reinicie o Claude Code para ativar os hooks
É isso! O Nova-tracer agora protegerá todas as suas sessões do Claude Code.
brew install jq no macOS)./install.sh
O instalador irá:
~/.claude/settings.json./uninstall.sh
O desinstalador irá:
.nova-tracer/O Nova-tracer registra quatro hooks do Claude Code que funcionam juntos:
┌─────────────────────────────────────────────────────────────┐
│ 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/ │
│ │
└─────────────────────────────────────────────────────────────┘
O Nova-tracer fornece dois modos de proteção:
Importante: A detecção de injeção de prompt é passiva. Quando o Nova-tracer detecta uma injeção de prompt em um arquivo ou página web, o conteúdo já foi lido pelo Claude. O Nova-tracer envia uma mensagem de aviso ao Claude aconselhando-o a tratar o conteúdo com suspeita, mas não impede que Claude veja o conteúdo malicioso.
Esta é uma limitação da arquitetura do hook PostToolUse - ele é executado após a ferramenta ser usada. O bloqueio ativo de injeções de prompt exigiria a varredura do conteúdo antes que Claude o lesse, o que envolveria ler os arquivos duas vezes (uma para varredura, outra para Claude).
O que é bloqueado ativamente:
rm -rf /, sudo rm -rf, mkfsdd if=... of=/dev/, fork bombscurl ... | sh, leitura de ~/.ssh/id_rsaO que é avisado passivamente:
Uma vez instalado, o Nova-tracer funciona automaticamente:
Os relatórios são salvos no diretório .nova-tracer/reports/ de cada projeto:
# Liste os relatórios do projeto atual
ls .nova-tracer/reports/
# Abra um relatório no seu navegador
open .nova-tracer/reports/session-abc123.html
O relatório HTML interativo inclui:
Teste a detecção do Nova-tracer sem executar o Claude Code:
# Execute testes de ataque de exemplo
uv run hooks/test-nova-guard.py --samples
# Teste texto específico
uv run hooks/test-nova-guard.py --text "ignore previous instructions"
# Teste um arquivo
uv run hooks/test-nova-guard.py --file suspicious.txt
# Modo interativo
uv run hooks/test-nova-guard.py -i
O Nova-tracer funciona com padrões sensatos, mas você pode personalizar o comportamento.
Edite config/nova-tracer.yaml:
# Diretório de saída do relatório
# Vazio = {projeto}/.nova-tracer/reports/ (padrão)
# Caminho relativo = relativo ao projeto
# Caminho absoluto = local exato
report_output_dir: ""
# Resumos de sessão com IA
# Defina como false para usar resumos apenas com estatísticas (sem chamadas de API)
ai_summary_enabled: true
# Tamanho máximo em KB para saídas de ferramentas nos relatórios
# Saídas maiores serão truncadas
output_truncation_kb: 10
# Diretório para regras NOVA personalizadas
custom_rules_dir: "rules/"
Edite config/nova-config.yaml:
# Provedor LLM para detecção de Nível 3
llm_provider: anthropic
model: claude-3-5-haiku-20241022
# Níveis de detecção (ativar/desativar)
enable_keywords: true
enable_semantics: true
enable_llm: true
# Limiares (0.0 - 1.0)
semantic_threshold: 0.7
llm_threshold: 0.7
# Filtro de severidade
min_severity: low # low, medium, ou high
# Necessário para resumos com IA e detecção de nível LLM
export ANTHROPIC_API_KEY=sk-ant-...
Crie arquivos .nov no diretório 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 # Script de instalação global
├── uninstall.sh # Script de remoção
├── config/
│ ├── nova-config.yaml # Configuração de varredura NOVA
├── rules/
│ ├── instruction_override.nov # Regras de ataque de sobrescrita
│ ├── roleplay_jailbreak.nov # Regras de ataque de jailbreak
│ ├── encoding_obfuscation.nov # Regras de ataque de codificação
│ └── context_manipulation.nov # Regras de ataque de contexto
├── hooks/
│ ├── session-start.py # Hook SessionStart
│ ├── pre-tool-guard.py # Hook PreToolUse (bloqueio)
│ ├── post-tool-nova-guard.py # Hook PostToolUse (varredura)
│ ├── session-end.py # Hook SessionEnd (relatórios)
│ ├── test-nova-guard.py # Utilitário de teste
│ └── lib/
│ ├── session_manager.py # Lógica de rastreamento de sessão
│ ├── report_generator.py # Geração de relatório HTML
│ ├── ai_summary.py # Geração de resumo com IA
│ └── config.py # Gerenciamento de configuração
├── tests/ # Suíte de testes abrangente (483 testes)
└── test-files/ # Arquivos de injeção de exemplo
cat ~/.claude/settings.json | jq '.hooks'ls -la hooks/*.pyls .nova-tracer/sessions/A primeira execução baixa ~1GB de modelos. Se ocorrerem problemas:
# Limpe o cache do modelo e tente novamente
rm -rf ~/.cache/huggingface/
uv run hooks/test-nova-guard.py --samples
echo $ANTHROPIC_API_KEYai_summary_enabled: true na configuração# Execute todos os testes
uv run pytest tests/ -v
# Execute um arquivo de teste específico
uv run pytest tests/test_report_generator.py -v
# Execute com cobertura
uv run pytest tests/ --cov=hooks/lib
Licença MIT - Veja LICENSE
| Modo | Hook | Comportamento | Caso de Uso |
|---|
| ATIVO | PreToolUse | Bloqueia a execução antes que ocorra | Comandos perigosos (rm -rf /, sudo rm, etc.) |
| PASSIVO | PostToolUse | Avisa o Claude após a leitura do conteúdo | Injeção de prompt em arquivos, páginas web, saída de comandos |
| Nível | Método | Velocidade | Captura |
|---|
| Palavras-chave | Padrões regex | ~1ms | Padrões de ataque conhecidos, frases exatas |
| Semântica | Similaridade ML | ~50ms | Ataques parafraseados, variações |
| LLM | Avaliação de IA | ~500-2000ms | Ataques sofisticados e novos |