
بحث وشيفرة معيارية ودفاع ضد هجمات إعادة ربط الهدف التي تخدع حرّاس سلامة نماذج اللغة الكبيرة (LLM) ليجعلوها تُقيّم محتوى مُضلِّلًا مزوّرًا، إضافةً إلى تقوية عبر تقطير الحد الأقصى للقطاعات.
الكود والبيانات وكل درجة خام الخاصة بالورقة البحثية (paper/main.pdf، المصدر في paper/).
تتلقى حرّاس أمان نماذج اللغة الكبيرة المحتوى الذي تراجعه عبر إدراج نصي مباشر (string interpolation) في موجّه التقييم الخاص بها، لذا فإن المحتوى الذي يحاكي تنسيق موجّه الحارس نفسه يمكنه أن يفتح مهمة تقييم ثانية مزوّرة بمستند تمويهي غير ضار، يقوم الحارس بتقييمه بعد ذلك بدلاً من المحتوى الحقيقي (إعادة توجيه الهدف - target rebinding). إن إلحاق مهمة مزوّرة كهذه يتجاوز Shieldstral-1.0-3B في جميع طلبات AdvBench الخمسة والسبعين المحجوزة والمُسجّلة مسبقاً التي يرصدها، وينتقل إلى gpt-oss-safeguard-20B وLlama Guard 4، وفي معيارنا القياسي، GuardRebind (52 عائلة هجوم، 5 عناصر تحكم)، تتجاوز أقوى عائلة نسبة 93-100% من العناصر المرصودة لدى كل واحد من خمسة حرّاس. يدرّب التقطير الذاتي بأقصى مقطع (segment-max self-distillation) الحارس على تقييم المحتوى بدرجة لا تقل عن أشد أجزائه ضرراً، ويقلل من التجاوز في الهجمات المحجوزة من 75% إلى نحو 1%، لكن مهاجماً تكيفياً موجهاً بالدرجة لا يزال يتجاوز الحارس المدرّب في 94% من العناصر، وأكثر من نصفها دون أي بنية مزوّرة على الإطلاق.
يُوصف الهجوم نثراً هنا عن قصد. يتم توليد الحمولات (payloads) بواسطة
src/attacks.py (الدراسة التأكيدية) وsrc/bench/attacks_grammar.py (المعيار القياسي)، و
مُدرجة في ملحق الورقة البحثية.
| المسار | الوصف |
|---|---|
PROTOCOL.md | التسجيل المسبق لدراسة Shieldstral التأكيدية (القسم 3 من الورقة؛ التنبؤات P1-P9) |
PROTOCOL_v2.md | التسجيل المسبق لمعيار الورقة القياسي والدفاع (M1-M5، F1-F6، A1-A3)، مع الانحرافات المسجّلة D1-D4 |
src/*.py | الدراسة التأكيدية على Shieldstral والتشغيلات عبر النماذج (المُقيّم، الحمولات، الاستئصال، سلّم التمويه، عملاء OpenRouter) |
src/bench/ | GuardRebind: محمّلات مجموعات البيانات (data.py)، محوّلات الحرّاس (guards.py)، قواعد الهجوم، المشغّلات المحلية وعبر واجهة البرمجة، التحليل |
src/fix/ | الدفاع: التقطير بأقصى مقطع (distill.py)، التقييم (evaluate.py)، الهجمات التكيفية (adaptive.py)، خطوط الأساس دون تدريب (baselines.py)، تنسيق الإدخال المحدود (inputs.py) |
src/mech/ | ترقيع التنشيط، المسابر الخطية، تشابه التمثيل، استجابة الجرعة التمويهية |
scripts/queue_*.sh | طوابير مهام قابلة للاستئناف أنتجت النتائج (مهمة GPU واحدة في كل مرة) |
scripts/pod/ | تشغيل طوابير الدفاع على وحدة معالجة رسومات CUDA مستأجرة (Runpod) ونسخ النتائج مرة أخرى |
scripts/analysis_r2/ | إحصاءات المعالج (CPU) الكامنة وراء أرقام الدفاع (Wilson، Newcombe، Hanley-McNeil، bootstrap المزدوج) |
paper/data/ | نصوص المعالج (CPU) ومخرجاتها للأرقام المحسوبة مباشرة للورقة البحثية |
paper/figures/make_figures.py | يرسم أشكال الورقة البحثية من results/ |
results/ | كل درجة خام وملخص تستشهد به الورقة البحثية |
الأوامر نسبية إلى جذر المستودع. خطوات "GPU" تحمّل نموذج حارس؛ خطوات "CPU" تقرأ فقط
الملفات في results/.
القسم 3، إعادة توجيه الهدف (Shieldstral، الدراسة التأكيدية، PROTOCOL.md)
| الورقة | ملفات النتائج | أُنتجت بواسطة |
|---|---|---|
| الشكل 1 (التشريح؛ الدرجات) | results/confirm_shieldstral.csv (المستند الأول، none وquery_doc) | python -m src.confirm (GPU) |
| الجدول 1 (الاستئصال) | results/confirm_log.txt [ablation]، results/tables.md | python -m src.confirm (المخرجات القياسية هي confirm_log.txt)، ثم python -m src.figures (CPU، يكتب tables.md) |
| الشكل 2 (الدرجات؛ ثلاثة فخاخ) | results/confirm_shieldstral.csv، results/confirm_groundtruth.csv | python -m src.confirm، python -m src.groundtruth (GPU، المخرجات القياسية results/groundtruth_log.txt)؛ يُرسم بواسطة paper/figures/make_figures.py (CPU) |
| تشغيل 100 طلب (نص) | results/confirm_hundred.csv، results/hundred_log.txt | python -m src.hundred (GPU) |
| ضابط الاستعلام المُليَّن (نص) | results/confirm_soften.csv، results/soften_log.txt | python -m src.soften (GPU) |
| الحكم المزوَّر مقابل المهمة المزوَّرة (نص) | results/fix/forgery_controls_base.json | python -m src.fix.forgery_controls --cond base --split test --allow-test --out results/fix/forgery_controls_base.json (GPU؛ في scripts/queue_fix_full.sh) |
| فقرة المتانة (نص القسم 3) | results/confirm_log.txt [recency]، [markers]، [policy]؛ results/supp_log.txt [A] | python -m src.confirm، python -m src.supp (GPU) |
| فقرة الاستجابة للجرعة في القسم 3؛ ترقيع التنشيط (الملحق C) | results/mech/patching_test_n100.json، dose_response_test_n150_d40.json، dose_response_test_n150_d40_rho_ci.json (تشغيلات تقسيم التطوير *_dev_* للمقارنة) | src.mech.{patching,dose_response} (GPU؛ الخطوة 0 من scripts/queue_fix_full.sh، PART=main)؛ فترات rho: python -m src.mech.dose_response --recompute results/mech/dose_response_test_n150_d40.json (CPU) |
| حساسية العتبة (نص القسم 3، tau = 0.1) | results/sensitivity.md | python -m src.sensitivity (CPU، يقرأ confirm_shieldstral.csv) |
القسم 4، GuardRebind (PROTOCOL_v2.md)
| الورقة | ملفات النتائج | أُنتجت بواسطة |
|---|---|---|
| ثلاثة تصاميم حارس (نص القسم 4) | results/confirm_crossmodel.csv، results/confirm_gpt_oss_mechanism.csv، results/gpt_oss_mechanism_log.txt | python -m src.crossmodel 30، python -m src.gpt_oss_mechanism 30 (واجهة OpenRouter API، بدون GPU) |
| الجدول 2 (المعيار المرجعي، الحراس المحليون) | results/bench/v2/<guard>__default.jsonl (درجات خام، معرّفات العناصر فقط)، results/bench/v2/bypass.csv، run_config.json | scripts/queue_bench.sh (GPU) -> python -m src.bench.run_bench_v2 ...، ثم python -m src.bench.analyze --inp results/bench/v2 (CPU) |
| الجدول 2 (صف gpt-oss-safeguard)، فقرة gpt-oss (القسم 4.2)، قراءة الأحكام المتعددة (الملحق C) | results/bench/v2/gpt_oss_safeguard_20b.jsonl، results/bench/v2/gpt_oss_summary.md، results/bench/v2/gpt_oss/*، paper/data/gpt_oss_strict.md | python -m src.bench.api_bench (OpenRouter)، python -m src.bench.api_summary (CPU)، python paper/data/gpt_oss_strict.py > paper/data/gpt_oss_strict.md (CPU) |
| التجاوز لكل عائلة (نص القسم 4.2؛ الجدول الكامل منشور، وليس في الورقة) | results/bench/v2/bypass.csv (السياسة الافتراضية، عمود bypass)؛ gpt-oss من paper/data/gpt_oss_strict.md | python -m src.bench.analyze (CPU) |
| حساسية عتبة المعيار المرجعي (منشورة، وليست في الورقة) | results/bench/v2/bypass_tau.csv | python -m src.bench.analyze (CPU) |
| إعادة صياغة السياسة ومقارنة رمز التحكم (الملحق C) | results/bench/v2/<guard>__para{1,2}.jsonl، results/bench/v2/policy_range.csv، results/bench/v2/bypass.csv | scripts/queue_bench.sh، src.bench.analyze |
| فحص Qwen3Guard "ما الذي يُعد مهمة" | results/bench/explore/qwen3guard.md | python -m src.bench.explore.qwen3guard --n 40 (GPU، تقسيم التدريب) |
الأقسام 5-6، الدفاع (PROTOCOL_v2.md، الجولة 2 = الانحراف D4)