
DonkAI هو مختبر عملي لـ OWASP Top 10 لتطبيقات LLM (2025) - لا يتطلب LLM حقيقيًا.
مختبر عملي لـ OWASP Top 10 لتطبيقات LLM (2025) - لا يتطلب LLM حقيقيًا.
DonkAI هو تطبيق ويب هشّ عن قصد، يمكنك تشغيله بأمر واحد واستخدامه لتعلّم كيف تُخترق الأنظمة المدمجة مع LLM عبر اختراقها فعليًا. كل فئة من فئات OWASP LLM Top 10 ممثّلة بتحَدٍّ واحد قابل للعب على الأقل، مع موجز مكتوب، ومحرّر حمولات، ودفاع نشط يتطلب تجاوزه، وتلميحات تدريجية، وسجلّ لكل محاولة خاص بكل مستخدم. إنه أكثر من مجرد مجموعة ثابتة من التمارين؛ إنه مختبر تعليمي قابل للتوسعة: البنية المعيارية (ملف واحد لكل فئة، للواجهة الخلفية والأمامية) تجعل إضافة ثغرات جديدة، أو تقوية الدفاعات القائمة، أو بناء مسارات جديدة كليًا لورش العمل والدورات ومسابقات CTF أمرًا مباشرًا.
تحذير يعرّض هذا التطبيق عن قصد أسطح هجوم حيّة (حقن المطالبات، وIDOR، وحقن SQL، وبيانات اعتماد مُرمّزة، والمزيد). يجب تشغيله فقط في بيئة مختبر معزولة، ويفضَّل داخل آلة افتراضية مخصصة، ويجب أبدًا نشره على الإنترنت المفتوح.
يحدد OWASP Top 10 لتطبيقات LLM المخاطر ويوفّر المفردات اللازمة للحديث عنها، وهو قراءة أساسية لأي شخص يعمل في مجال أمان LLM. صُمم DonkAI ليكون امتدادًا عمليًا لذلك العمل: بيئة تجريبية صغيرة وحتمية حيث تجرّب الهجمات بنفسك، وتشاهد نجاحها ضد محادث آلي زائف لكنه واقعي، وتقرأ شرحًا موجزًا يوضح ما الذي نجح للتو وكيف سيدافع نظام حقيقي ضده. لا يوجد LLM حقيقي خلف الكواليس؛ فالتقنية بأكملها قائمة على القواعد، لذا فإن المختبر رخيص، ومناسب للعمل دون اتصال، وقابل للتكرار.
استنسخ المستودع، وابنِه، وشغّل الحزمة الكاملة بأمرين:
git clone https://github.com/OWASP/DonkAI.git && cd DonkAI
docker compose up --build
ثم افتح http://localhost:3000، وسجّل الدخول باستخدام alice / password123، واختر تحَدّيك الأول من لوحة OWASP على اليسار.
| الخدمة | الرابط / العنوان |
|---|---|
| واجهة الويب | http://localhost:3000 |
| الواجهة الخلفية (API + التوثيق) | http://localhost:8000/docs |
| PostgreSQL | — قاعدة بيانات |
| اسم المستخدم | كلمة المرور |
|---|
نصيحة — لمسح كل الحالة (المستخدمين والجلسات وسجل المحاولات) والبدء من صفحة نظيفة:
docker compose down -v
كل فئة في OWASP LLM Top 10 ممثّلة بتحَدٍّ واحد على الأقل قابل للعب.
لإضافة الفئات والتحديات أو تعديلها، راجع توسيع التحديات.
┌──────────────────┐ ┌──────────────────┐ ┌────────────────┐
│ React SPA │ ───► │ FastAPI │ ───► │ PostgreSQL │
│ :3000 │ │ :8000 │ │ :5432 │
│ webapp/ │ │ ml-service/ │ │ database/ │
└──────────────────┘ └──────────────────┘ └────────────────┘
هذا التطبيق هشّ عن قصد. القيم الافتراضية (كلمات المرور، وبيانات اعتماد قاعدة البيانات، والأسرار المُرمّزة في المطالبات النظامية) هي جزء من المحتوى التعليمي، وليست إغفالات أمنية. شغّله محليًا أو في مختبر معزول، وليس أبدًا على مضيف مشترك أو على الإنترنت العام، ولا أبدًا ضد بيانات إنتاج حقيقية.
لا تطبّق التقنيات التي تتعلمها هنا إلا ضد أنظمة تملكها أو لديك إذن كتابي صريح لاختبارها.
localhost:5432donk_ai_lab| الدور |
|---|
alice | password123 | user |
bob | password123 | user |
admin | admin123 | admin |
| # | الفئة | التحديات | ملف الواجهة الخلفية |
|---|
| LLM01 | حقن المطالبات | 2 | llm01_prompt_injection.py |
| LLM02 | كشف المعلومات الحساسة | 2 | llm02_sensitive_info.py |
| LLM03 | سلسلة التوريد | 1 | llm03_supply_chain.py |
| LLM04 | تسميم البيانات والنموذج | 1 | llm04_data_poisoning.py |
| LLM05 | معالجة المخرجات غير الصحيحة | 2 | llm05_improper_output.py |
| LLM06 | الوكالة المفرطة | 2 | llm06_excessive_agency.py |
| LLM07 | تسريب المطالبة النظامية | 2 | llm07_system_prompt_leak.py |
| LLM08 | نقاط ضعف المتجهات والتضمين | 1 | llm08_vector_weaknesses.py |
| LLM09 | المعلومات المضللة | 1 | llm09_misinformation.py |
| LLM10 | الاستهلاك غير المحدود | 1 | llm10_unbounded_consumption.py |
| الطبقة | التقنية | الدور |
|---|
| الواجهة الأمامية | React | تعرض واجهة التحدي، ومحرّر الحمولات، ودرج سجل كل محاولة. |
| الواجهة الخلفية | FastAPI | محرّك تحديات واحد قائم على القواعد لكل فئة OWASP - حتمي بالكامل، دون أي استدعاءات لـ LLM. |
| قاعدة البيانات | PostgreSQL | تخزّن users وchat_sessions وchat_messages وexploit_attempts |