إعداد بيئة الفريق الأحمر
تثبيت DeepTeam
3 دقيقة للقراءة
DeepTeam من Confident AI هو إطار شامل لاختبار اختراق LLM مع 40+ فئة ثغرات و10+ استراتيجيات هجوم. يغطي هذا الدرس التثبيت والتكوين وتشغيل أول مسح للثغرات.
التثبيت
DeepTeam قابل للتثبيت عبر pip على جميع المنصات:
# تثبيت DeepTeam (جميع المنصات)
# pip install deepteam
# التحقق من التثبيت
try:
import deepteam
print(f"إصدار DeepTeam: {deepteam.__version__}")
except ImportError:
print("DeepTeam غير مثبت. شغّل: pip install deepteam")
إعداد التكوين
أنشئ ملف تكوين باستخدام متغيرات البيئة:
from pathlib import Path
from dotenv import load_dotenv
import os
def configure_deepteam():
"""إعداد تكوين DeepTeam."""
# تحميل متغيرات البيئة من ملف .env
env_file = Path.cwd() / ".env"
load_dotenv(env_file)
# التحقق من مفاتيح API المطلوبة
required_keys = ["OPENAI_API_KEY"]
missing = [k for k in required_keys if not os.getenv(k)]
if missing:
print(f"مفاتيح API مفقودة: {missing}")
print("أضفها إلى ملف .env الخاص بك")
return False
print("التكوين صالح. جاهز للمسح.")
return True
# تشغيل فحص التكوين
configure_deepteam()
أول مسح للثغرات
شغّل مسحاً أساسياً يستهدف الثغرات الشائعة:
from deepteam import RedTeamer, Vulnerability
from deepteam.models import OpenAIModel
# تهيئة مختبر الاختراق
red_teamer = RedTeamer(
# النموذج المستهدف للاختبار
target_model=OpenAIModel(model_name="gpt-4"),
# الثغرات المراد اختبارها
vulnerabilities=[
Vulnerability.PROMPT_INJECTION, # حقن المحث
Vulnerability.PII_LEAKAGE, # تسريب المعلومات الشخصية
Vulnerability.JAILBREAK, # كسر الحماية
Vulnerability.HARMFUL_CONTENT, # محتوى ضار
],
# عدد محاولات الهجوم لكل ثغرة
attack_count=5,
)
# تشغيل المسح
results = red_teamer.scan()
# عرض النتائج
for vuln_type, findings in results.items():
print(f"\n{vuln_type}:")
print(f" المحاولات: {findings['total_attempts']}")
print(f" الناجحة: {findings['successful_attacks']}")
print(f" معدل النجاح: {findings['attack_success_rate']:.1%}")
فهم فئات الثغرات
يختبر DeepTeam 40+ فئة ثغرات:
from enum import Enum
from dataclasses import dataclass
from typing import List
class VulnerabilityCategory(Enum):
INJECTION = "injection" # الحقن
LEAKAGE = "leakage" # التسريب
HARMFUL = "harmful" # الضار
ROBUSTNESS = "robustness" # المتانة
@dataclass
class VulnerabilityInfo:
"""معلومات حول فئة ثغرة."""
name: str
category: VulnerabilityCategory
description: str
owasp_mapping: str
# الثغرات الرئيسية للفهم
vulnerabilities = [
VulnerabilityInfo(
name="حقن المحث",
category=VulnerabilityCategory.INJECTION,
description="المهاجم يتلاعب بالنموذج عبر مدخلات مصممة",
owasp_mapping="LLM01"
),
VulnerabilityInfo(
name="تسريب المعلومات الشخصية",
category=VulnerabilityCategory.LEAKAGE,
description="النموذج يكشف معلومات شخصية",
owasp_mapping="LLM06"
),
VulnerabilityInfo(
name="كسر الحماية",
category=VulnerabilityCategory.HARMFUL,
description="تجاوز حواجز السلامة",
owasp_mapping="LLM01"
),
VulnerabilityInfo(
name="الهلوسة",
category=VulnerabilityCategory.ROBUSTNESS,
description="النموذج يولد معلومات خاطئة",
owasp_mapping="LLM09"
),
]
for vuln in vulnerabilities:
print(f"{vuln.name} ({vuln.owasp_mapping}): {vuln.description}")
استراتيجيات الهجوم
يتضمن DeepTeam استراتيجيات هجوم متعددة:
from deepteam import AttackStrategy
# استراتيجيات الهجوم المتاحة
strategies = {
"base64_injection": "تشفير الحمولة في base64",
"role_play": "جعل النموذج يتقمص شخصية مختلفة",
"hypothetical": "تأطير كسيناريو افتراضي",
"multi_language": "استخدام لغة غير الإنجليزية لتجاوز المرشحات",
"continuation": "طلب من النموذج إكمال نص ضار",
"few_shot": "تقديم أمثلة على السلوك المطلوب",
}
# التشغيل باستراتيجية محددة
red_teamer = RedTeamer(
target_model=OpenAIModel(model_name="gpt-4"),
vulnerabilities=[Vulnerability.JAILBREAK],
attack_strategies=[
AttackStrategy.ROLE_PLAY,
AttackStrategy.HYPOTHETICAL,
],
)
results = red_teamer.scan()
حفظ النتائج
تصدير النتائج للإبلاغ:
from pathlib import Path
import json
from datetime import datetime
def save_scan_results(results: dict, output_dir: Path):
"""حفظ نتائج المسح في ملف JSON."""
output_dir.mkdir(parents=True, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = output_dir / f"deepteam_scan_{timestamp}.json"
# إعداد التقرير
report = {
"scan_date": timestamp,
"tool": "DeepTeam",
"results": results,
"summary": {
"total_vulns_tested": len(results),
"vulns_with_findings": sum(
1 for r in results.values()
if r["successful_attacks"] > 0
),
}
}
filename.write_text(json.dumps(report, indent=2))
print(f"النتائج محفوظة في: {filename}")
return filename
# بعد المسح
output_path = Path.cwd() / "results"
save_scan_results(results, output_path)
رؤية أساسية: تجعل Python API الخاصة بـ DeepTeam من السهل التكامل مع مجموعات الاختبار الحالية. ابدأ بالثغرات الأربع الأساسية قبل توسيع التغطية.
بعد ذلك، سنستكشف Garak للمسح السريع للثغرات. :::