مقدمة في اختبار اختراق الذكاء الاصطناعي
تحديد النطاق وقواعد الاشتباك
2 دقيقة للقراءة
قبل إطلاق أي تمرين للفريق الأحمر، يجب تحديد حدود واضحة. الاختبار بدون تفويض غير قانوني وغير أخلاقي. يغطي هذا الدرس التوثيق الأساسي الذي يتطلبه كل ارتباط بالفريق الأحمر.
وثيقة قواعد الاشتباك
يتطلب كل تمرين احترافي للفريق الأحمر قواعد اشتباك (RoE) موقعة:
from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional
from enum import Enum
class TestingScope(Enum):
IN_SCOPE = "in_scope" # ضمن النطاق
OUT_OF_SCOPE = "out_of_scope" # خارج النطاق
REQUIRES_APPROVAL = "requires_approval" # يتطلب موافقة
@dataclass
class RulesOfEngagement:
"""
اتفاقية رسمية تحدد حدود الفريق الأحمر.
يجب التوقيع عليها قبل بدء أي اختبار.
"""
project_name: str
client_name: str
start_date: datetime
end_date: datetime
authorized_testers: List[str]
emergency_contacts: List[str]
# تعريفات النطاق
in_scope_systems: List[str] = field(default_factory=list)
out_of_scope_systems: List[str] = field(default_factory=list)
allowed_techniques: List[str] = field(default_factory=list)
prohibited_techniques: List[str] = field(default_factory=list)
# القانونية
authorization_signature: Optional[str] = None
legal_review_date: Optional[datetime] = None
def is_authorized(self) -> bool:
"""التحقق من أن الارتباط مُفوّض بشكل صحيح."""
return (
self.authorization_signature is not None
and self.legal_review_date is not None
and datetime.now() >= self.start_date
and datetime.now() <= self.end_date
)
def check_scope(self, system: str) -> TestingScope:
"""التحقق مما إذا كان النظام ضمن النطاق."""
if system in self.out_of_scope_systems:
return TestingScope.OUT_OF_SCOPE
if system in self.in_scope_systems:
return TestingScope.IN_SCOPE
return TestingScope.REQUIRES_APPROVAL
عناصر النطاق الأساسية
| العنصر | الوصف | مثال |
|---|---|---|
| الأنظمة المستهدفة | تطبيقات LLM المراد اختبارها | "customer-support-bot-v2" |
| البيئة | إنتاج أو تجريبية أو اختبار | "التجريبية فقط" |
| نافذة الوقت | متى يُسمح بالاختبار | "أيام العمل 9ص-5م" |
| معالجة البيانات | ماذا تفعل بالثغرات المكتشفة | "الإبلاغ خلال 24 ساعة" |
| الإجراءات المستبعدة | ما يجب عدم فعله | "لا DoS، لا استخراج بيانات" |
قائمة فحص ما قبل الارتباط
@dataclass
class PreEngagementChecklist:
"""
التحقق من جميع المتطلبات قبل البدء.
"""
items: dict = field(default_factory=lambda: {
"written_authorization": False, # تفويض مكتوب
"scope_documented": False, # النطاق موثق
"emergency_contacts_confirmed": False, # جهات الطوارئ مؤكدة
"legal_review_complete": False, # المراجعة القانونية مكتملة
"insurance_verified": False, # التأمين موثق
"communication_channels_established": False, # قنوات الاتصال منشأة
"backup_restoration_plan": False, # خطة استعادة النسخ الاحتياطية
})
def is_ready(self) -> bool:
return all(self.items.values())
def get_blockers(self) -> List[str]:
return [item for item, complete in self.items.items() if not complete]
# قبل أي اختبار
checklist = PreEngagementChecklist()
checklist.items["written_authorization"] = True
checklist.items["scope_documented"] = True
# ... أكمل جميع العناصر
if not checklist.is_ready():
blockers = checklist.get_blockers()
print(f"لا يمكن المتابعة. المفقود: {blockers}")
الاعتبارات القانونية
تحذير: الاختبار غير المصرح به لأنظمة الذكاء الاصطناعي ينتهك قوانين الاحتيال الحاسوبي في معظم الولايات القضائية. احصل دائماً على إذن كتابي صريح.
النقاط القانونية الرئيسية:
- التفويض المكتوب من مالك النظام إلزامي
- أنظمة الطرف الثالث (واجهات API، النماذج) قد يكون لها شروط خدمة منفصلة
- قوانين حماية البيانات تنطبق على أي معلومات شخصية مكشوفة
- وثّق كل شيء للحماية القانونية
نموذج بيان النطاق
# مثال: نطاق محدد جيداً للفريق الأحمر لـ LLM
roe = RulesOfEngagement(
project_name="تقييم أمان روبوت الدردشة Q1 2025",
client_name="شركة أكمي",
start_date=datetime(2025, 1, 15),
end_date=datetime(2025, 1, 31),
authorized_testers=["alice@security.com", "bob@security.com"],
emergency_contacts=["security@acme.com", "+1-555-0123"],
in_scope_systems=[
"chatbot.acme.com",
"api.acme.com/v2/chat",
"internal-assistant.acme.local"
],
out_of_scope_systems=[
"production-database", # قاعدة بيانات الإنتاج
"payment-processing", # معالجة الدفع
"third-party-apis" # واجهات الطرف الثالث
],
allowed_techniques=[
"prompt_injection", # حقن المحث
"jailbreak_attempts", # محاولات كسر الحماية
"context_manipulation", # التلاعب بالسياق
"output_analysis" # تحليل المخرجات
],
prohibited_techniques=[
"denial_of_service", # رفض الخدمة
"data_exfiltration", # استخراج البيانات
"lateral_movement", # الحركة الجانبية
"social_engineering_employees" # الهندسة الاجتماعية للموظفين
],
authorization_signature="جين سميث، CISO",
legal_review_date=datetime(2025, 1, 10)
)
if roe.is_authorized():
print("الارتباط مُفوّض. تابع الاختبار.")
بعد ذلك، سنستكشف كيف تعمل الفرق الحمراء والزرقاء معاً بفعالية. :::