Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-5452 | Kitploit
أدوات/GitHubGitHub/skrkcb2/cve-2024-5452
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمأمن الذكاء الاصطناعي
GitHubskrkcb2/cve-2024-5452

CVE-2024-5452

عرض المستودع
منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2024-5452

01. نظرة عامة على RCE و pytorch-lightning

  • 1) نظرة عامة على RCE و pytorch-lightning

    RCE (Remote Code Execution، تنفيذ التعليمات البرمجية عن بُعد) هي ثغرة تسمح للمهاجم بتنفيذ تعليمات برمجية عشوائية داخل النظام أو التطبيق عن بُعد، وهي مطابقة لـ CWE-94: Improper Control of Generation of Code ('Code Injection').

    PyTorch Lightning هي مكتبة تساعد على إدارة تدريب نماذج التعلم العميق القائمة على PyTorch بسهولة، وDeepDiff هي مكتبة تقارن بين كائنين من Python لتحليل الاختلافات.

    CVE-2024-5452 هي ثغرة تحدث عند استخدام DeepDiff وLightning في وظائف تطبيق الويب المتعلقة بأوزان نماذج الذكاء الاصطناعي في Lightning، وتؤدي إلى RCE أثناء إلغاء التسلسل (Deserialization) من خلال التحقق الضعيف من الترويسات في DeepDiff وتلويث خصائص الدلتا (Delta).

    من خلال هذا، سنستعرض مسار الكود الذي يؤدي إلى ثغرة تسمح للمهاجم بحقن كائنات عشوائية أو تنفيذ تعليمات برمجية عن بُعد (RCE)، وسنبحث عن الإجراءات المضادة لذلك.

02. تحليل ثغرة إلغاء التسلسل في بيئة pytorch-lightning

  • 2.1 تحليل هجوم باستخدام تلويث Delta في DeepDiff

    يمكن للمهاجم استهداف إحدى نقاط نهاية DeepDiff في شيفرة تطبيق الويب في pytorch-lightning، وتحديدًا /api/v1/delta، عن طريق إرسال خصائص دلتا ملوثة.
    سنستعرض مثالًا لفهم كيفية تلويث خصائص dunder في delta وما يؤدي إليه من إحداث ثغرة إلغاء تسلسل الكائنات.

    1) تدفق الهجوم باستخدام تلويث Delta في DeepDiff

    الطلب الأول هو مثال هجوم العميل، إعداد التلويث -> التحقق الضعيف من الترويسات في /api/v1/delta في DeepDiff -> حفظ الحالة من خلال إعداد التلويث.

    وصف الصورة

    [الشكل 1] POC - هجوم نقطة النهاية (Endpoint)

    وصف الصورة

    [الشكل 2] POC - حقن الثغرة / محتوى إعداد التلويث الكامل

    وصف الصورة

    [الشكل 3] lightning/api/core/api.py / جزء منطق فحص الترويسات الضعيف

    وصف الصورة

    [الشكل 4] lightning/api/core/app.py / قسم الإعداد

    وصف الصورة

    [الشكل 5] lightning/api/core/app.py / قسم حفظ الإعداد

    يقوم الطلب الأول بتجاوز التحقق من الترويسة في /api/v1/delta الموضح في [الشكل 3] عبر [الشكل 1]، ثم حقن إعدادات التلويث (دلتا) المعدلة كما في [الشكل 2]، ويحفظ الإعدادات من خلال [الشكل 4] و[الشكل 5].
    الآن دعونا نرى كيف تعمل إعدادات الدلتا المعدلة هذه في الطلب الثاني.

    وصف الصورة وصف الصورة

    [الشكل 6] lightning/api/core/app.py / تدفق المسار الأولي

    يُظهر [الشكل 6] تدفق الطلب الثاني بعد إعداد الدلتا، عبر run_once() -> maybe_apply_change() -> _collect_deltas_from_ui_and_work_queues()

    وصف الصورة

    [الشكل 7] حالة تلويث isinstance

    في [الشكل 7]، يتم تمرير فحص isinstance داخل _collect_deltas_from_ui_and_work_queues() باستخدام الإعداد الملوث (isinstance(delta, _DeltaRequest) == False)، وبالتالي يتجه الفرع إلى else.

    وصف الصورة

    [الشكل 8] حالة تلويث isinstance 1

    في [الشكل 8]، ولتسهيل الفهم، يتم عرض نتائج isinstance(delta, _DeltaRequest) و delta و _DeltaRequest(النوع). الطلب الأول هو طلب إعداد، وهو طبيعي لأنه يتم إعداد التعديل؛ أما الطلب التالي فتم تلويث نوع _DeltaRequest إلى str، مما يتجاوز الشرط. الآن دعونا نلقي نظرة على مثال _process_requests، وهو الهدف التالي في التدفق.

    وصف الصورة

    [الشكل 9] حالة تلويث isinstance 2

    كما نرى في [الشكل 9]، وبنفس ما سبق، نجح _process_requests في تجاوز فحص isinstance(request, _APIRequest) باستخدام الإعداد الملوث من كود POC للعميل على اليمين؛ هذا التلويث هو حالة يجعل استدعاء isinstance لسلسلة نصية (str) مقابل مثيل OrderSet يُرجع قيمة true. لقد رأينا حتى الآن نوعين من تلويث isinstance، وفي ما بعد سيتم إنشاء إعدادات تسمح باستدعاء الخصائص عبر التلويث.

    وصف الصورة

    وصف الصورة

    وصف الصورة

    [الشكل 10] حالة تلويث isinstance 3

    بعد الانتهاء من تجاوز isinstance وإعداد الدوال في [الشكل 10]، يتم ضبط "تثبيت الحالة الداخلية" (_INTERNAL_STATE_VARS: ()) لتكون فارغة، مما يجعل من المستحيل التحقق من حالة الإعدادات الداخلية في [الشكل 11].

    وصف الصورة

    [الشكل 11_1] دالة فحص _INTERNAL_STATE_VARS في /lightning/app/core/flow.py

    وصف الصورة

    [الشكل 11_2] __setattr__ في /lightning/app/core/flow.py

    بعد [الشكل 11]، اكتمل التلويث والإعداد الشامل.

    وصف الصورة

    [الشكل 12] أمر RCE

    وصف الصورة

    وصف الصورة

    [الشكل 13] استجابة RCE

    أخيرًا، في [الشكل 13]، يتم استدعاء exec بصلاحيات الجذر لتنفيذ الأمر من [الشكل 12] لإنهاء الهجوم.

2) مثال مختصر لهجوم تلويث Delta في DeepDiff (يسار: خادم lightning App، يمين: Client)

وصف الصورة

03. الإجراءات المضادة

لقد استعرضنا حتى الآن تدفق تنفيذ ثغرة RCE عبر إلغاء تسلسل الكائنات (CVE-2024-5452) في بيئة lightning. وبما أن طريقة الهجوم هذه تتمثل في الاستيلاء على الخادم نفسه، فإن الإجراءات المضادة مهمة. لذا نقدم تحديث الإصدار الأحدث.

  • تحديث lightning

    إذا كان الإصدار lightning <= 2.2.1، فيُرجى التحديث إلى إصدار أكبر من lightning > 2.3.3.
  • تعديل بسيط على مكتبة lightning

    هذا الحل هو مجرد طريقة إغلاق سريعة للحالات الطارئة، فيُرجى اعتباره مرجعًا فقط. أضف منطقًا بسيطًا إلى نقطة النهاية /api/v1/delta (المسار /lightning/app/core/api) أو عزز جزء فحص الجلسة أعلاه. depence
  • الاكتشاف والحظر عبر IPS

    تم اختبار الهجوم باستخدام Postman عبر تحديد خصائص dunder في JSON image 20250210_143207

04. الخلاصة

لقد استعرضنا حتى الآن ثغرة تسبب RCE من خلال تلويث خصائص Dunder عبر Lightning وDeepDiff. هذه الثغرة تنشأ أولاً من التحقق الضعيف من الترويسات، ثم من فحص خصائص delta الضعيف في إلغاء تسلسل الكائنات.

05. المراجع

(poc) https://security.snyk.io/vuln/SNYK-PYTHON-PYTORCHLIGHTNING-7218866
(nist) https://nvd.nist.gov/vuln/detail/CVE-2024-5452

تنزيل الأداة