
إعادة إنتاج تعليمية لثغرة اجتياز المسار CVE-2026-14628 مع أمثلة برمجية قابلة للاستغلال وآمنة، وشرح للإصلاح، وعروض توضيحية قابلة للتشغيل لدراسة CWE-22.
عرض توضيحي صغير وقابل للتشغيل لفئة ثغرات تجاوز المسار (CWE-22)، مستخدماً الثغرة المُكشفة مؤخراً CVE-2026-14628 كنقطة مرجعية من العالم الواقعي.
تؤثر CVE-2026-14628 على 'NousResearch/hermes-agent' (< 2026.5.16).
تقوم دالة extract_media في gateway/platforms/base.py ببناء مسار نظام ملفات من حمولة webhook الواردة دون التحقق منها، مما يسمح لمهاجم عن بُعد وغير مصادق بقراءة ملفات خارج دليل الوسائط المقصود.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nلا يستهدف هذا المستودع قاعدة اكواد hermes-agent الفعلية ولا يستغلها. بدلاً من ذلك، يعيد إنتاج نمط الثغرة بدقة في مثال صغير ومستقل، بحيث يسهل دراسة الخلل وإصلاحه وإعادة استخدامه كمرجع عند مراجعة أي كود آخر.
| File | Purpose |
|---|---|
vulnerable_example.py | يعيد إنتاج المنطق المعيب: بناء المسار عبر دمج سلاسل نصية ساذج، دون تحقق |
secure_example.py | النسخة المُصلحة: تتحقق من أن المسار المطلق المُحلّل يبقى داخل دليل الجذر المقصود |
python3 vulnerable_example.py
يُظهر الناتج "المهاجم" وهو يقرأ بنجاح ملفاً (secret_outside_media_root.txt) يقع خارج دليل media_storage/ المقصود، باستخدام إدخال مثل ../secret_outside_media_root.txt.
python3 secure_example.py
يتم رفض نفس الإدخال الخبيث مع ظهور خطأ واضح PathTraversalError.
يتم تطبيق دفاعين متكاملين في secure_example.py:
.. أو فواصل المسارات قبل ملامسة نظام الملفات إطلاقاً (فشل سريع، وخطأ واضح للمستدعين الشرعيين).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
تجاوز المسار هو واحدة من أكثر فئات الثغرات شيوعاً وتجنباً في البرمجيات التي تتعامل مع رفع الملفات، أو تنزيلها، أو أي اسم ملف يتحكم فيه المستخدم — فمعالجات webhook، ومعالجات الوسائط، وعارضو السجلات، ومحركات القوالب، وواجهات برمجة تطبيقات تقديم الملفات هي أهداف متكررة. الإصلاح رخيص (بضعة أسطر)؛ أما تكلفة تجاهله فهي كشف ملفات تعسفي، وفي الحالات الأسوأ (عند اقترانه بصلاحية الكتابة) تنفيذ كود عن بُعد.
هذا المشروع لأغراض تعليمية فقط. إنه إعادة إنتاج عامة لفئة ثغرات معروفة، وليس استغلالاً عملياً ضد أي برنامج محدد قيد التشغيل أو غير مُحدَّث. لا تستخدم هذه التقنيات ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.