إعداد بيئة الفريق الأحمر

تثبيت 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 للمسح السريع للثغرات. :::

اختبار

الوحدة 2: إعداد بيئة الفريق الأحمر

خذ الاختبار