
लक्ष्य रीबाइंडिंग हमलों के लिए शोध कोड, बेंचमार्क और रक्षा, जो LLM सुरक्षा गार्डों को धोखा देकर जाली डिकॉय सामग्री को ग्रेड करने के लिए प्रेरित करते हैं, साथ ही सेगमेंट-मैक्स डिस्टिलेशन हार्डनिंग।
पेपर के लिए कोड, डेटा और प्रत्येक कच्चा स्कोर (paper/main.pdf, स्रोत paper/ में)।
LLM सुरक्षा गार्ड जिस सामग्री की समीक्षा करते हैं, उसे उनके ग्रेडिंग प्रॉम्प्ट में सादे स्ट्रिंग इंटरपोलेशन द्वारा प्राप्त करते हैं, इसलिए ऐसी सामग्री जो गार्ड के अपने प्रॉम्प्ट प्रारूप की नकल करती है, एक हानिरहित डिकॉय दस्तावेज़ के साथ एक दूसरा, जाली ग्रेडिंग कार्य खोल सकती है, जिसे गार्ड फिर वास्तविक सामग्री के बजाय ग्रेड करता है (target rebinding)। ऐसा जाली कार्य जोड़ने से Shieldstral-1.0-3B उन सभी 75 पूर्व-पंजीकृत held-out AdvBench अनुरोधों पर पार हो जाता है जिन्हें वह फ़्लैग करता है, gpt-oss-safeguard-20B और Llama Guard 4 पर स्थानांतरित हो जाता है, और हमारे बेंचमार्क GuardRebind (52 आक्रमण परिवार, 5 नियंत्रण) में, सबसे मजबूत परिवार पाँच गार्डों में से प्रत्येक पर फ़्लैग किए गए आइटमों का 93-100% पार कर लेता है। Segment-max self-distillation गार्ड को सामग्री को उसके सबसे हानिकारक भाग के बराबर या उससे अधिक स्कोर करने के लिए प्रशिक्षित करता है और held-out आक्रमणों पर बायपास को 75% से घटाकर लगभग 1% कर देता है, लेकिन एक स्कोर-निर्देशित अनुकूली आक्रमणकारी अभी भी प्रशिक्षित गार्ड को 94% आइटमों पर पार कर लेता है, जिनमें से आधे से अधिक में कोई जाली संरचना ही नहीं होती।
आक्रमण का वर्णन यहाँ जानबूझकर गद्य में किया गया है। पेलोड 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), आक्रमण व्याकरण, स्थानीय और API रनर, विश्लेषण |
src/fix/ | रक्षा: segment-max distillation (distill.py), मूल्यांकन (evaluate.py), अनुकूली आक्रमण (adaptive.py), प्रशिक्षण-मुक्त बेसलाइन (baselines.py), सीमित इनपुट प्रारूप (inputs.py) |
src/mech/ | एक्टिवेशन पैचिंग, लीनियर प्रोब, प्रतिनिधित्व समानता, डिकॉय डोज़-रिस्पॉन्स |
scripts/queue_*.sh | परिणाम उत्पन्न करने वाली फिर से शुरू होने योग्य जॉब कतारें (एक बार में एक GPU जॉब) |
scripts/pod/ | किराए के CUDA GPU (Runpod) पर रक्षा कतारें चलाएँ और परिणाम वापस कॉपी करें |
scripts/analysis_r2/ | रक्षा संख्याओं के पीछे का CPU सांख्यिकी (Wilson, Newcombe, Hanley-McNeil, paired bootstrap) |
paper/data/ | पेपर के लिए सीधे गणना की गई संख्याओं के लिए CPU स्क्रिप्ट और उनके आउटपुट |
paper/figures/make_figures.py | results/ से पेपर के चित्र बनाता है |
results/ | पेपर द्वारा उद्धृत प्रत्येक कच्चा स्कोर और सारांश |
कमांड रेपो रूट के सापेक्ष हैं। "GPU" चरण एक गार्ड मॉडल लोड करते हैं; "CPU" चरण केवल results/ में फ़ाइलें पढ़ते हैं।
अनुभाग 3, target rebinding (Shieldstral, पुष्टिकरण अध्ययन, PROTOCOL.md)
| paper | result files | produced by |
|---|---|---|
| Figure 1 (anatomy; scores) | results/confirm_shieldstral.csv (first document, none और query_doc) | python -m src.confirm (GPU) |
| Table 1 (ablation) | results/confirm_log.txt [ablation], results/tables.md | python -m src.confirm (stdout confirm_log.txt है), फिर python -m src.figures (CPU, tables.md लिखता है) |
| Figure 2 (scores; three decoys) | results/confirm_shieldstral.csv, results/confirm_groundtruth.csv | python -m src.confirm, python -m src.groundtruth (GPU, stdout results/groundtruth_log.txt); paper/figures/make_figures.py द्वारा बनाया गया (CPU) |
| 100-request run (text) | results/confirm_hundred.csv, results/hundred_log.txt | python -m src.hundred (GPU) |
| softened-query control (text) | results/confirm_soften.csv, results/soften_log.txt | python -m src.soften (GPU) |
| forged verdict vs forged task (text) | 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 में) |
| robustness paragraph (Section 3 text) | results/confirm_log.txt [recency], [markers], [policy]; results/supp_log.txt [A] | python -m src.confirm, python -m src.supp (GPU) |
| Section 3 dose-response paragraph; activation patching (Appendix C) | results/mech/patching_test_n100.json, dose_response_test_n150_d40.json, dose_response_test_n150_d40_rho_ci.json (तुलना के लिए dev-split रन *_dev_*) | src.mech.{patching,dose_response} (GPU; scripts/queue_fix_full.sh का step 0, PART=main); rho intervals: python -m src.mech.dose_response --recompute results/mech/dose_response_test_n150_d40.json (CPU) |
| threshold sensitivity (Section 3 text, tau = 0.1) | results/sensitivity.md | python -m src.sensitivity (CPU, confirm_shieldstral.csv पढ़ता है) |
Section 4, GuardRebind (PROTOCOL_v2.md)
| paper | result files | produced by |
|---|---|---|
| three guard designs (Section 4 text) | 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 नहीं) |
| Table 2 (benchmark, local guards) | results/bench/v2/<guard>__default.jsonl (raw scores, केवल item ids), 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) |
| Table 2 (gpt-oss-safeguard row), gpt-oss paragraph (Section 4.2), multi-verdict reading (Appendix 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) |
| per-family bypass (Section 4.2 text; पूरी तालिका जारी, paper में नहीं) | results/bench/v2/bypass.csv (default policy, bypass column); gpt-oss paper/data/gpt_oss_strict.md से | python -m src.bench.analyze (CPU) |
| benchmark threshold sensitivity (जारी, paper में नहीं) | results/bench/v2/bypass_tau.csv | python -m src.bench.analyze (CPU) |
| policy paraphrases और control-token comparison (Appendix 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 "what counts as a task" probe | results/bench/explore/qwen3guard.md | python -m src.bench.explore.qwen3guard --n 40 (GPU, train split) |
Sections 5-6, the defense (PROTOCOL_v2.md, round 2 = deviation D4)