
افحص مخرجات نماذج اللغة الكبيرة (LLM) والمحتوى المُولَّد بالذكاء الاصطناعي بحثًا عن إشارات تسريب البيانات (EchoLeak, CVE-2025-32711) قبل وصولها إلى المستخدمين أو الأنظمة اللاحقة
امسح مخرجات نماذج اللغة الكبيرة والمحتوى المُولَّد بالذكاء الاصطناعي بحثًا عن مؤشرات تسريب البيانات قبل وصولها إلى المستخدمين أو السجلات أو الأنظمة النهائية.
تتعامل تطبيقات نماذج اللغة الكبيرة الحديثة بشكل روتيني مع المطالبات الحساسة والمستندات الداخلية وردود واجهات البرمجة وبيانات المستخدمين. وهذا يخلق حدًا أمنيًا جديدًا: طبقة المخرجات.
أثبتت عائلة هجمات EchoLeak (بما في ذلك CVE-2025-32711) كيف يمكن تضمين حمولات مخفية أو مبهمة في النص المُولَّد واستخدامها لتسريب البيانات عبر الأدوات أو الروابط أو سلاسل التحليل.
تركّز الماسحات التقليدية على الملفات والتبعيات وحركة مرور وقت التشغيل. وهي لا تفحص مخرجات النموذج المُولَّد بطريقة مخصصة لهذا الغرض.
يوفر exfil-scan "ماسح فيروسات لردود نماذج اللغة الكبيرة":
| الفئة | الخطورة | ما يتم اكتشافه |
|---|---|---|
| نص مخفي | HIGH | تسلسلات يونيكود صفرية العرض وغير المرئية المستخدمة لإخفاء الحمولات |
| بيانات مشفّرة | HIGH | تشغيلات Base64/hex/octal/unicode للهروب التي يُرجَّح أنها تحمل محتوى مشفّرًا |
| بيانات في الروابط | MEDIUM | سلاسل استعلام طويلة بشكل مريب وحمولات معاملات URL مشفّرة |
| تسريبات البيانات الوصفية | HIGH | مفاتيح شبيهة بالاعتمادات وتنسيقات رموز في المخرجات المنظَّمة/غير المنظَّمة |
| إخفاء المعلومات عبر يونيكود | MEDIUM | عناصر تحكم ثنائية الاتجاه وكلمات بأسلوب التجانس متعدد النصوص |
| شذوذ بنيوي | LOW | تكرارات مفرطة لأسطر جديدة/علامات تبويب وقطع أثرية لترميز أحرف الاستبدال |
low وmedium وhighstdin أو ملف واحد أو دليلtext أو json أو markdown أو htmlgit clone https://github.com/your-org/exfil-scan.git
cd exfil-scan
pip install -e .
pip install exfil-scan
pip install -e ".[dev]"
pytest
echo 'api_key: sk-ABCDEFGHIJKLMNOPQRSTUVWXYZ123456' | exfil-scan
exfil-scan --input output.txt
exfil-scan --directory ./model-logs --recursive
ملاحظات:
--input أو --directory، وليس كلاهما معًا.stdin.1.exfil-scan --input suspicious.txt --format text
النمط المتوقع:
exfil-scan report
=================
Scanned targets: 1
Total findings: 2
1. [HIGH] metadata_leaks/known_token_format:openai_key
Location: suspicious.txt:1:10
Description: Matched known credential/token format (openai_key).
exfil-scan --input suspicious.txt --format json
الشكل المتوقع:
{
"finding_count": 2,
"scanned_targets": ["suspicious.txt"],
"findings": [
{
"category": "metadata_leaks",
"rule": "known_token_format:openai_key",
"severity": "HIGH",
"description": "Matched known credential/token format (openai_key).",
"location": "suspicious.txt:1:10",
"snippet": "..."
}
]
}
exfil-scan --directory ./outputs --recursive --format html --output report.html
السلوك المتوقع:
exfil-scan --input suspicious.txt --format markdown --output report.md
النمط المتوقع:
# exfil-scan Report
- Scanned targets: 1
- Total findings: 2
يأتي المستودع مع default-config.yaml.
يمكنك تمرير ملف خاص بك عبر --config.
ضبط الحساسية:
low: عدد أقل من النتائج الإيجابية الخاطئة وعتبات أكبرmedium: إعدادات افتراضية متوازنةhigh: يلتقط أنماطًا أكثر دقةتجاوز الحساسية من سطر الأوامر:
exfil-scan --input out.txt --sensitivity high
يمكنك إضافة تنسيقات الرموز ومفاتيح البيانات الوصفية الخاصة بك:
sensitivity: medium
rules:
metadata_keys:
- api_key
- db_password
- internal_token
token_patterns:
custom_jwt: "\\beyJ[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\b"
corp_secret: "\\bcorp_[A-Za-z0-9]{24,}\\b"
ثم شغّل:
exfil-scan --input response.log --config ./my-config.yaml
مسؤوليات الوحدات:
exfil_scan/cli.py: تحليل الوسائط واختيار الإدخال وعرض الإخراج ومعالجة الخروجexfil_scan/config.py: القيم الافتراضية وتحميل YAML والدمج العودي وتطبيع ملفات الحساسيةexfil_scan/scanner.py: محركات الكشف الست وفئات بيانات النتائج وتنسيق التقاريرtests/test_scan.py: اختبارات انحدار للكشف وصيغ الإخراجتدفق التنفيذ:
| الرمز | المعنى |
|---|---|
0 | لا توجد نتائج (نظيف) |
1 | تم اكتشاف نتائج |
2 | خطأ في التشغيل أو الوسائط |
وهذا يجعل تكامل CI مباشرًا:
exfil-scan --directory ./artifacts --recursive --format json --output exfil-report.json
إذا تم العثور على أي اكتشاف، يمكن أن تفشل مهمتك بسرعة بناءً على رمز الخروج 1.
شغّل الاختبارات:
pytest
تشمل التغطية:
exfil-scan هو ماسح ارشادي.
وهو مصمم لتقليل المخاطر وإظهار المخرجات المشبوهة، وليس لإثبات سلامة المحتوى.
نمط النشر الموصى به:
هذا المشروع مرخّص بموجب رخصة MIT.
راجع LICENSE للشروط الكاملة.
المساهمات مرحّب بها. عند فتح طلب سحب (PR)، تضمين:
| الخيار | النوع | الافتراضي | الوصف |
|---|
-i, --input | path | none | فحص ملف إدخال واحد |
-d, --directory | path | none | فحص جميع الملفات المدعومة في دليل |
-r, --recursive | flag | false | الاستمرار في الأدلة الفرعية مع --directory |
-c, --config | path | none | مسار ملف إعداد YAML |
-s, --sensitivity | low|medium|high | config/default | تجاوز ملف الحساسية |
-f, --format | text|json|html|markdown | text | تنسيق عرض التقرير |
-o, --output | path | stdout | كتابة التقرير المعروض إلى ملف |
--version | flag | n/a | طباعة إصدار الواجهة |
-h, --help | flag | n/a | عرض الاستخدام والوسائط |