
المستودع الكامل لجميع المختبرات المتاحة كجزء من المعيار
معيار لتقييم وكلاء الذكاء الاصطناعي في تحديات أمن الويب، تم توليده بواسطة محرك TarantuLabs.
TarantuBench هي مجموعة من 100 تطبيق ويب قابل للاختراق، كل منها يحتوي على علم مخفي (TARANTU{...}). مهمة الوكيل هي العثور على العلم واستخراجه من خلال التفاعل مع التطبيق عبر HTTP — تمامًا كما يفعل مختبر الاختراق البشري.
تتراوح التحديات من اختراق تسجيل الدخول عبر SQL injection للمبتدئين إلى سلاسل هجومية متعددة الخطوات تتطلب استغلال ما يصل إلى 5 ثغرات بالتسلسل — بما في ذلك إساءة استخدام منطق الأعمال، و XSS المخزنة لسرقة الجلسات، وتزوير JWT، و SSRF، و SQL injection على واجهات برمجة التطبيقات الداخلية.
كل مختبر هو تطبيق Node.js/Express مستقل مع قاعدة بيانات SQLite في الذاكرة. لا تبعيات خارجية، ولا حاجة للوصول إلى الشبكة — فقط قم بتشغيل الخادم وابدأ الاستكشاف.
تم توليد جميع التحديات في هذا الإصدار باستخدام محرك توليد المختبرات الخاص بـ TarantuLabs.
يمثل TarantuBench v1 معيارًا ناضجًا وقابلًا للتوسع مدعومًا بخط أنابيب توليد مثبت:
متطلبات عقدة Node: Node.js 18+ و npm.
متطلبات مهمة Inspect AI: Python 3.11+ و Docker و uv أو مثبت آخر متوافق مع PEP 517.
مجموعة بيانات المختبرات القابلة للتشغيل منشورة على Hugging Face في
tarantulabs/TarantuBench.
يحتوي هذا المستودع على GitHub على حزام التقييم والوثائق.
git clone https://github.com/Trivulzianus/TarantuBench.git
cd TarantuBench
cd eval && npm install && cd ..
# تحميل ملف مجموعة البيانات من Hugging Face، أو استنساخ مستودع مجموعة البيانات:
# git clone https://huggingface.co/datasets/tarantulabs/TarantuBench data
# تشغيل وكيلك ضد جميع المختبرات الـ 100
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--command "python my_agent.py --url {URL}" \
--timeout 300
# إنشاء بطاقة النتائج
node eval/scorecard.js
قبل تشغيل تقييم رسمي، تحقق من أن مجموعة البيانات المحلية أو على Hugging Face تحتوي على العدد المتوقع من الصفوف والمخطط:
node eval/validate-dataset.js --dataset data/tarantubench-v1.jsonl --expected-count 100
node eval/validate-dataset.js --hf tarantulabs/TarantuBench --expected-count 100
يقوم الحزام بتشغيل كل مختبر، ويضع وكيل تسجيل شفاف أمامه، وينفذ أمر الوكيل الخاص بك (مع استبدال {URL} بعنوان الهدف). يمكن كتابة وكيلك بأي لغة — يحتاج فقط إلى إجراء طلبات HTTP وإرسال العلم عبر POST {URL}/submit-flag مع جسم {"flag": "TARANTU{...}"}.
# تشغيل مختبر واحد في وضع الخادم — يطبع الحزام عنوان URL، وتتصل أنت بوكيلك
node eval/harness.js --dataset data/tarantubench-v1.jsonl \
--labs corporate-portal-chain-xss-idor \
--mode server --timeout 300
يمثل كل صف في data/tarantubench-v1.jsonl تحديًا واحدًا:
| العمود | النوع | الوصف |
|---|---|---|
lab_id | string | معرف فريد |
title | string | اسم التحدي قابل للقراءة البشرية |
description | string | وصف سيناريو مختصر (يظهر للوكيل) |
objectives | list[string] | ما يطلب من الوكيل تحقيقه |
hints | list[string] | تلميحات تقدمية اختيارية (لدراسات الاستئصال) |
difficulty | string | مبتدئ أو متوسط أو متقدم |
category | string | عائلة الثغرات الرئيسية (مثل SQL Injection، XSS) |
vuln_subtype | string | تقنية محددة (مثل sqli-union، xss-stored) |
chain_type | string أو null | معرف السلسلة متعددة الخطوات، أو null للمختبرات ذات الثغرة الواحدة |
server_code | string | كود مصدر كامل لـ Node.js/Express للتطبيق القابل للاختراق |
dependencies | object | تبعيات حزمة npm اللازمة لتشغيل الخادم |
| الصعوبة | العدد | الوصف |
|---|---|---|
| مبتدئ | 35 | ثغرة واحدة، استغلال مباشر |
| متوسط | 25 | يتطلب تعدادًا أو تجاوزًا للمرشحات أو منطقًا متعدد الخطوات |
| متقدم | 40 | سلاسل متعددة الخطوات، عيوب منطق الأعمال، أو استغلال عميق |
| الفئة | العدد |
|---|---|
| سلاسل ثغرات متعددة | 34 |
| SQL Injection | 20 |
| IDOR (مرجع كائن مباشر غير آمن) | 11 |
| تجاوز المصادقة/التفويض | 10 |
| XSS (البرمجة النصية عبر المواقع) | 10 |
| منطق الأعمال | 8 |
| Command Injection | 5 |
| SSRF | 2 |
34 من أصل 100 مختبر تتطلب ربط عدة ثغرات:
| نوع السلسلة | العدد | الخطوات |
|---|---|---|
| SSRF ← SQL Injection | 8 | تجاوز التحكم في الوصول عبر SSRF، ثم استخراج العلم عبر SQLi |
| SSRF ← Blind SQLi | 5 | SSRF للوصول إلى نقطة نهاية داخلية، ثم استخراج منطقي أعمى |
| XSS ← SQL Injection | 7 | سرقة جلسة المسؤول عبر XSS المخزنة، ثم استخدام بحث خاص بالمسؤول مع SQLi |
| XSS ← IDOR | 5 | سرقة جلسة المسؤول عبر XSS المخزنة، ثم الوصول إلى بيانات مخفية عبر IDOR |
| JWT Forgery ← Blind SQLi | 4 | كسر سر JWT ضعيف، وتزوير رمز مميز برتبة مرتفعة، واستخراج العلم حرفًا بحرف |
| JWT Forgery ← IDOR | 3 | كسر JWT، وتزوير دور مرتفع، والوصول إلى نقاط نهاية API مقيدة |
| منطق الأعمال ← XSS ← JWT ← SSRF ← SQLi | 1 | سلسلة من 5 خطوات عبر إساءة استخدام الإحالات، وسرقة الجلسة، وتزوير JWT، و SSRF، و SQLi union |
| XSS ← JWT ← SSRF ← SQLi | 1 | سلسلة من 4 خطوات عبر سرقة الجلسة، وتزوير JWT، و SSRF، و SQL injection |
يتم توزيع المختبرات عبر 20 موضوع تطبيق واقعي — بوابات بنكية، أنظمة مستشفيات، متاجر إلكترونية، لوحات تحكم إنترنت الأشياء، خدمات حكومية، منصات ألعاب، والمزيد — مما يضمن اختبار أنماط الثغرات في سياقات متنوعة.
يكشف TarantuBench أيضًا عن مهمة Inspect AI لتدفق تسجيل inspect_evals التجريبي. تحتفظ المهمة بمجموعة بيانات المختبرات على Hugging Face، وتشغل كل تطبيق Node/Express مُولد داخل صندوق رمل Docker التابع لـ Inspect، وتمنح النموذج أدوات مقيدة قابلة للتكوين بدلاً من شل.
uv sync
uv run inspect eval src/tarantubench/task.py@tarantubench \
--model openai/gpt-4o \
--limit 1
إعدادات Inspect الافتراضية هي صندوق أسود عن قصد:
prompt_detail=minimalinclude_hints=0toolset=standardmessage_limit=80attempts=20معلمات المهمة المفيدة:
uv run inspect eval src/tarantubench/task.py@tarantubench \
--model openai/gpt-4o \
-T toolset=standard \
-T prompt_detail=minimal \
-T include_hints=0 \
-T attempts=20 \
-T message_limit=80 \
-T revision=46c250e72ceb46dc457e558dc96366a03fdc9fff
خيارات تفصيل الطلب: