
NOVA - نظام حماية كلود كود من هجمات حقن الأوامر
مراقبة أمنية والدفاع عن حقن الأوامر لـ Claude Code باستخدام إطار NOVA.
# استنساخ المستودع
git clone https://github.com/fr0gger/nova-claude-code-protector.git
cd nova_claude_code_protector
# التثبيت العالمي (يسجل الخطافات في ~/.claude/settings.json)
./install.sh
# أعد تشغيل Claude Code لتفعيل الخطافات
هذا كل شيء! سيقوم Nova-tracer الآن بحماية جميع جلسات Claude Code الخاصة بك.
brew install jq على macOS)./install.sh
سيقوم المثبت بما يلي:
~/.claude/settings.json./uninstall.sh
سيقوم برنامج الإلغاء بما يلي:
.nova-tracer/ اختياريًايسجل Nova-tracer أربعة خطافات لـ Claude Code تعمل معًا:
┌─────────────────────────────────────────────────────────────┐
│ جلسة Claude Code │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. خطاف بدء الجلسة │
│ └── إنشاء ملف JSONL للجلسة │
│ └── تهيئة التتبع بمعرف الجلسة │
│ │
│ 2. خطاف ما قبل استخدام الأداة (Bash, Write, Edit) [نشط] │
│ └── فحص الأوامر قبل التنفيذ │
│ └── حظر العمليات الخطيرة (rm -rf, إلخ.) │
│ │
│ 3. خطاف ما بعد استخدام الأداة (Read, Bash, WebFetch, إلخ.) [سلبي] │
│ └── فحص مخرجات الأداة بحثًا عن حقن الأوامر │
│ └── تحذير Claude في حالة اكتشاف تهديدات │
│ └── تسجيل الحدث مع حكم NOVA │
│ │
│ 4. خطاف نهاية الجلسة │
│ └── إنشاء تقرير HTML تفاعلي │
│ └── إنشاء ملخص جلسة مدعوم بالذكاء الاصطناعي │
│ └── حفظ في .nova-tracer/reports/ │
│ │
└─────────────────────────────────────────────────────────────┘
يوفر Nova-tracer وضعين للحماية:
هام: كشف حقن الأوامر سلبي. عندما يكتشف Nova-tracer حقن أوامر في ملف أو صفحة ويب، يكون المحتوى قد تمت قراءته بالفعل بواسطة Claude. يرسل Nova-tracer رسالة تحذير إلى Claude تنصحه بالتعامل مع المحتوى بتشكك، لكنه لا يمنع Claude من رؤية المحتوى الخبيث.
هذا قيد في بنية خطاف PostToolUse - فهو يعمل بعد تنفيذ الأداة. الحظر النشط لحقن الأوامر يتطلب فحص المحتوى قبل أن يقرأه Claude، مما يتضمن قراءة الملفات مرتين (مرة للفحص، ومرة لـ Claude).
ما يتم حظره بنشاط:
rm -rf /, sudo rm -rf, mkfsdd if=... of=/dev/, قنابل الشوكةcurl ... | sh, قراءة ~/.ssh/id_rsaما يتم التحذير منه بشكل سلبي:
بمجرد التثبيت، يعمل Nova-tracer تلقائيًا:
يتم حفظ التقارير في دليل .nova-tracer/reports/ لكل مشروع:
# عرض قائمة التقارير للمشروع الحالي
ls .nova-tracer/reports/
# فتح تقرير في المتصفح
open .nova-tracer/reports/session-abc123.html
يتضمن تقرير HTML التفاعلي:
اختبر كشف Nova-tracer دون تشغيل Claude Code:
# تشغيل اختبارات العينة للهجمات
uv run hooks/test-nova-guard.py --samples
# اختبار نص محدد
uv run hooks/test-nova-guard.py --text "ignore previous instructions"
# اختبار ملف
uv run hooks/test-nova-guard.py --file suspicious.txt
# الوضع التفاعلي
uv run hooks/test-nova-guard.py -i
يعمل Nova-tracer بالإعدادات الافتراضية المنطقية، لكن يمكنك تخصيص السلوك.
قم بتحرير 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/"
قم بتحرير 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
# مطلوب للملخصات الذكية وكشف المستوى LLM
export ANTHROPIC_API_KEY=sk-ant-...
أنشئ ملفات .nov في دليل rules/:
rule MyCustomRule
{
meta:
description = "يكشف نمط هجومي المحدد"
author = "اسمك"
severity = "high"
category = "custom"
keywords:
$pattern1 = /نمط regex الخاص بي/i
$pattern2 = "تطابق سلسلة نصية دقيقة"
semantics:
$sem1 = "وصف دلالي للهجوم" (0.75)
llm:
$llm1 = "سؤال ليقيمه LLM" (0.7)
condition:
any of ($pattern*) or $sem1 or $llm1
}
nova_claude_code_protector/
├── install.sh # سكريبت التثبيت العالمي
├── uninstall.sh # سكريبت الإزالة
├── config/
│ ├── nova-config.yaml # تكوين فحص NOVA
├── rules/
│ ├── instruction_override.nov # قواعد هجمات التجاوز
│ ├── roleplay_jailbreak.nov # قواعد هجمات الهروب
│ ├── encoding_obfuscation.nov # قواعد هجمات الترميز
│ └── context_manipulation.nov # قواعد هجمات السياق
├── hooks/
│ ├── session-start.py # خطاف بدء الجلسة
│ ├── pre-tool-guard.py # خطاف ما قبل الأداة (حظر)
│ ├── post-tool-nova-guard.py # خطاف ما بعد الأداة (فحص)
│ ├── session-end.py # خطاف نهاية الجلسة (تقارير)
│ ├── test-nova-guard.py # أداة اختبار
│ └── lib/
│ ├── session_manager.py # منطق تتبع الجلسات
│ ├── report_generator.py # إنشاء تقارير HTML
│ ├── ai_summary.py # إنشاء ملخصات الذكاء الاصطناعي
│ └── config.py # إدارة التكوين
├── tests/ # مجموعة اختبارات شاملة (483 اختبار)
└── test-files/ # ملفات حقن عينة
cat ~/.claude/settings.json | jq '.hooks'ls -la hooks/*.pyls .nova-tracer/sessions/التشغيل الأول يقوم بتحميل ~1 جيجابايت من النماذج. إذا حدثت مشكلات:
# مسح ذاكرة التخزين المؤقت للنموذج وإعادة المحاولة
rm -rf ~/.cache/huggingface/
uv run hooks/test-nova-guard.py --samples
echo $ANTHROPIC_API_KEYai_summary_enabled: true في التكوين# تشغيل جميع الاختبارات
uv run pytest tests/ -v
# تشغيل ملف اختبار محدد
uv run pytest tests/test_report_generator.py -v
# تشغيل مع تغطية
uv run pytest tests/ --cov=hooks/lib
رخصة MIT - انظر LICENSE
| الوضع | الخطاف | السلوك | حالة الاستخدام |
|---|
| نشط | PreToolUse | يمنع التنفيذ قبل حدوثه | الأوامر الخطيرة (rm -rf /, sudo rm, إلخ.) |
| سلبي | PostToolUse | يحذر Claude بعد قراءة المحتوى | حقن الأوامر في الملفات، صفحات الويب، مخرجات الأوامر |
| المستوى | الطريقة | السرعة | ما يكتشفه |
|---|
| الكلمات المفتاحية | أنماط Regex | ~1ms | أنماط الهجوم المعروفة، العبارات الدقيقة |
| الدلالي | تشابه ML | ~50ms | هجمات معاد صياغتها، تنويعات |
| LLM | تقييم الذكاء الاصطناعي | ~500-2000ms | هجمات متطورة وجديدة |