
اختبار كشف حقن الأوامر لوكلاء الويب.
WAInjectBench هو معيار شامل لـ كشف حقن الأوامر (prompt injection) في وكلاء الويب.
يغطي 6 أنواع من الهجمات، عبر نمطين: النص والصورة.
data/
text/
benign/ → 4 فئات، مخزّنة كملفات JSONLmalicious/ → 8 أنواع هجمات، مخزّنة كملفات JSONLimage/
benign/ → فئتان، مخزّنتان في مجلدات فرعيةmalicious/ → 7 أنواع هجمات، مخزّنة في مجلدات فرعيةاستنسخ المستودع وأنشئ البيئة:
git clone https://github.com/Norrrrrrr-lyn/WAInjectBench.git
cd WAInjectBench
conda env create -f environment.yml
conda activate wainjectbench
يدعم WAInjectBench خطّي تقييم: الكشف المعتمد على النص والكشف المعتمد على الصورة.
python main_text.py \
--data_dir [path to text dataset] \
--detector [detector name] \
--result_dir [output path] \
--gpu [gpu id]
الكاشفات المتاحة: ["kad", "promptarmor", "embedding-t", "promptguard", "datasentinel", "ensemble"]
PromptArmor → يتطلب OPENAI_API_KEY كمتغير بيئة.
DataSentinel →
git clone https://github.com/liu00222/Open-Prompt-Injection.git
نزّل النموذج المُدرَّب مسبقًا إلى: WAInjectBench/Open-Prompt-Injection/DataSentinel_Models عيّن الدليل ومسار النموذج في detector_text/datasentinel.py.
python main_image.py \
--data_dir [path to image dataset] \
--detector [detector name] \
--result_dir [output path] \
--gpu [gpu id]
الكاشفات المتاحة: ["gpt-4o-prompt", "llava-1.5-7b-prompt", "jailguard", "embedding-i", "llava-1.5-7b-ft", "ensemble"]
GPT-4o-Prompt → يتطلب OPENAI_API_KEY كمتغير بيئة.
JailGuard →
git clone https://github.com/shiningrain/JailGuard.git
اتبع ملف README الخاص به لتهيئة MiniGPT4.
LLaVA-1.5-7B-FT → يتطلب تنزيل نموذجنا المُدرَّب بدقة وتعيين مساره في detector_image/llava.py.
نوفّر أيضًا نسخًا مُدرَّبة داخل النطاق من نموذجي Embedding-T وEmbedding-I، متاحة في model/embedding-t/in-domain وmodel/embedding-i/in-domain. لاستخدامها، اتبع نفس إجراء التقييم كما في التجارب الرئيسية، ولكن حدّث مسار النموذج في detector_text/embedding-t.py وdetector_image/embedding-i.py.
نوفّر كودًا لتدريب المصنّفات الثنائية المعتمدة على التضمين لكلٍّ من النص والصورة.
مصنّف تضمين النص
python train/embedding-t.py \
--input_dir [dir with training text jsonl files] \
--output_dir [model output path]
صيغة JSONL:
{"text": "example", "label": 1} # 1 for malicious, 0 for benign
مصنّف تضمين الصورة
python train/embedding-i.py \
--input_dir [dir with training image jsonl files] \
--output_dir [model output path]
صيغة JSONL:
{"path": "path/to/image.png", "label": 1}
ضبط دقيق لـ LLaVA-1.5-7B
python train.py \
--train_jsonl train.jsonl \
--val_jsonl val.jsonl \
--use_lora \
--amp_dtype bf16 \
--device_mode single \
--gpu_id 0
يجب أن تحتوي ملفات JSONL على مسارات الصور والتسميات (1 = خبيث، 0 = حميد). تستخدم التجارب في ورقتنا المعاملات الفائقة الافتراضية.