
مشروع مادة أمن الويب والتطبيقات — المجموعة 06، صف NT213.Q21.ANTT
يعيد المشروع إنتاج ثغرة أمنية حقيقية تم الإعلان عنها (CVE-2026-24055) على منصة Langfuse — وهي نقطة نهاية OAuth تتيح للمهاجم الاستيلاء على ربط مساحة عمل Slack بمشروع شخص آخر دون الحاجة إلى تسجيل الدخول.
يتضمن المشروع: إعداد بيئة Docker تحاكي كلاً من الإصدار المصاب والإصدار المُرقَّع، وتنفيذ الاستغلال خطوة بخطوة، والتحقق من أن الترقيع يعمل بشكل صحيح. ومن خلال ذلك، يتم التدرب على تحليل ثغرة التحكم في الوصول (Access Control) في تدفق OAuth، وهي مهارة تُطبَّق مباشرة عند بناء أو تدقيق أنظمة المصادقة على الويب.
المهارات المُظهَرة: تحليل تدفق OAuth2، Docker، قراءة التنبيهات الأمنية، كتابة التقارير الفنية، اختبار الأمان (security testing).
CVE-2026-24055 هي ثغرة Improper Access Control في Langfuse من الإصدار 3.89.0 إلى 3.146.0.
نقطة النهاية /api/public/slack/install لا تتطلب المصادقة، مما يتيح للمهاجم ربط مساحة عمل Slack الخاصة به بأي مشروع بمجرد معرفة projectId. عندما ينشئ الضحية أتمتة لإرسال الإشعارات إلى Slack، سيتم تسريب كامل محتوى الـ prompt إلى مساحة عمل المهاجم.
| الخاصية | التفاصيل |
|---|---|
| CWE | CWE-284 — Improper Access Control |
| الإصدارات المتأثرة | Langfuse 3.89.0 – 3.146.0 |
| الإصدار المُرقَّع | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| الأداة | الحد الأدنى للإصدار |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | أي إصدار |
| RAM | 8 GB |
يتيح Slack API استخدام
http://localhost:3000كـ Redirect URL.
http://localhost:3000
cd vulnerable
cp .env.example .env
افتح ملف .env، واملأ القيم التالية:
NEXTAUTH_URL=http://localhost:3000
SLACK_CLIENT_ID=<your-slack-client-id>
SLACK_CLIENT_SECRET=<your-slack-client-secret>
SLACK_STATE_SECRET=any-random-string
docker compose up -d
تحقق من جاهزية الحاويات:
docker compose ps
انتظر حوالي 30–60 ثانية. يجب أن تكون جميع الحاويات في حالة
Up (healthy).
انتقل إلى http://localhost:3000:
حساب الضحية (Victim)
حساب المهاجم (Attacker)
من متصفح المهاجم (دون الحاجة إلى تسجيل الدخول إلى Langfuse)، انتقل إلى:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
ما يحدث:
سجّل الدخول بحساب الضحية:
Prompt created / updated / deletedSlack → اختر القناةcd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# املأ القيم نفسها كما في قسم vulnerable
docker compose up -d
جرّب دون تسجيل الدخول:
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
النتيجة المتوقعة — HTTP 401:
{ "error": "Authentication required" }
جرّب تسجيل الدخول كمهاجم، باستخدام projectId الخاص بالضحية:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
النتيجة المتوقعة — HTTP 403:
{ "error": "You do not have permission to configure Slack for this project" }
تم ترقيع الثغرة بالكامل.
docker compose down
إذا أردت حذف جميع البيانات (volumes):
docker compose down -v
cve-2026-24055/
├── README.md ← هذا الملف
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (مصاب)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (مُرقَّع)
└── .env.example