
الرفض يوطّن، والضرر ينتقل، وطبقات الأمان تحت الضبط الدقيق بقليل من العينات
يمكن لبضع عشرات من الأمثلة الضارة أن تزيل رفض نموذج مُواءَم للطلبات الضارة. وقد حددت الأعمال السابقة الأمان في طبقات واتجاهات محددة، مما يشير إلى حماية المكان الذي تم العثور عليه. يختبر هذا المستودع تلك الفرضية بالطريقة التي يفعلها مهاجم تكيّفي. فهو يجد أين يمكن استعادة الرفض، ويجمّد تلك المنطقة ويهاجم مرة أخرى، ويصلح تحديث الأوزان ثم يترك المهاجم ينشره.
تقوم الدراسة على ثلاثة قياسات.
هذا المستودع هو القياس وكلا الدفاعين في صورة مكتبة صغيرة، بالإضافة إلى سجلات التشغيل والسكربتات التي تعيد بناء جداول الورقة البحثية.
(أ) يستبدل الترقيع المتزامن للتنشيط مخرجات طبقة النموذج المخترق بالحالة النظيفة عند التعبئة المسبقة وكل خطوة فك ترميز. (ب) في هجوم Llama المتطابق، يؤدي تجميد الطبقات 0–17 إلى نقل انتقال نصف السقف من 15 إلى 27–28.
pip install "git+https://github.com/js-lee-AI/refusal-relocates.git"
## الميزات الرئيسية
- **اكتشاف تلقائي للتقنيات**: التعرف على أطر العمل وقواعد البيانات وخدمات الويب تلقائيًا
- **محرك فحص قابل للتوسيع**: إضافة فحوصات مخصصة بسهولة
- **دعم الوكيل (Proxy)**: التكامل مع Burp Suite و ZAP
- **تقارير شاملة**: تصدير النتائج بصيغ JSON و HTML و Markdown
- **واجهة سطر أوامر (CLI)**: واجهة بسيطة وقوية للاستخدام في الأتمتة
- **دعم متعدد المنافذ**: فحص عدة منافذ في وقت واحد
## التثبيت
### المتطلبات الأساسية
- Python 3.8 أو أحدث
- pip (مدير حزم Python)
### التثبيت عبر pip
```bash
pip install recon-tool
git clone https://github.com/example/recon-tool.git
cd recon-tool
pip install -r requirements.txt
python setup.py install
docker pull example/recon-tool:latest
docker run -it example/recon-tool --help
recon-tool -u https://example.com
recon-tool -u https://example.com -p 80,443,8080 -o results.json --threads 10
recon-tool -c config.yaml
recon-tool -u https://target.com --full-scan
recon-tool -f targets.txt --output-dir ./results
recon-tool -u https://target.com --proxy http://127.0.0.1:8080
يمكن تكوين الأداة باستخدام ملف YAML أو متغيرات البيئة.
target:
url: https://example.com
timeout: 30
scan:
threads: 10
ports: [80, 443, 8080, 8443]
output:
format: json
directory: ./results
proxy:
enabled: false
url: http://127.0.0.1:8080
| المتغير | الوصف | القيمة الافتراضية |
|---|---|---|
RECON_TIMEOUT | مهلة الطلب بالثواني | 30 |
RECON_THREADS | عدد الخيوط المتزامنة | 5 |
RECON_OUTPUT | مجلد الإخراج | ./results |
RECON_PROXY | عنوان URL للوكيل | none |
نرحب بمساهماتكم! يرجى اتباع الخطوات التالية:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)هذا المشروع مرخص تحت رخصة MIT - راجع ملف LICENSE للتفاصيل.
هذه الأداة مخصصة للأغراض التعليمية واختبار الاختراق المصرح به فقط. يجب عليك الحصول على إذن كتابي صريح قبل استخدامها ضد أي هدف لا تملكه.```python import numpy as np import refusal
rng = np.random.default_rng(0) A = rng.standard_normal((16, 512)) / 512 ** 0.5 # LoRA factors of one module, rank 16 B = rng.standard_normal((512, 16)) / 16 ** 0.5 for name, decay in [("ordinary", 0.5), ("spread", 1.0)]: b = B * decay ** np.arange(16) # energy in a few directions, or spread flat before, after = refusal.update_stats(A, b), refusal.update_stats(*refusal.remove_top_k(A, b, k=2)) print(f"{name:8s} PR/r {before['pr_over_r']:.2f} top-2 energy {before['top2_energy_fraction']:.2f}" f" norm left after top-2 removal {after['unscaled_norm'] / before['unscaled_norm']:.2f}")
يضع الضبط الدقيق العادي معظم تحديثه في اتجاهات مفردة قليلة، لذا تُزيل إزالة الاتجاهين الأعلى معظمه. أما التحديث الموزَّع فله طيف مسطّح، لذا تترك الإزالة نفسها معظمه في مكانه. كما أن PR/r، نسبة المشاركة على رتبة LoRA، هي أيضًا نتيجة كاشف الطيف في الورقة البحثية.
يعمل هذا على وحدة المعالجة المركزية في نحو ثانية ولا ينزّل أي شيء. الشيفرة نفسها موجودة في [`examples/quickstart.py`](https://github.com/js-lee-ai/refusal-relocates/blob/main/examples/quickstart.py)، ويشغّلها CI عند كل دفعة.