
CVE-2024-1561 - Gradio قراءة ملفات تعسفية
CVE-2024-1561 هي ثغرة قراءة ملفات تعسفية تؤثر على إصدارات Gradio الأقدم من 4.13.0. Gradio هو إطار عمل Python شهير يُستخدم لبناء واجهات ويب بسرعة لنماذج التعلم الآلي وتطبيقات الذكاء الاصطناعي.
توجد الثغرة لأن نقطة النهاية /component_server لا تقيّد بشكل صحيح أيّ من دوال الفئة الداخلية Component يمكن استدعاؤها. يمكن للمهاجم إساءة استخدام هذا السلوك لاستدعاء دوال لم يكن مقصودًا أبدًا كشفها عبر HTTP.
إحدى هذه الدوال، move_resource_to_block_cache، تسمح بنسخ ملف من نظام الملفات المحلي إلى دليل ذاكرة التخزين المؤقت المؤقتة في Gradio. وبمجرد نسخ الملف، يصبح متاحًا عبر نقطة النهاية /file، مما يسمح للمهاجم باسترجاع محتوياته.
على الرغم من أن الثغرة لا توفّر تنفيذًا مباشرًا للكود عن بُعد، إلا أنها يمكن أن تكشف ملفات حساسة من الخادم، ويمكن استغلالها لجمع بيانات الاعتماد وملفات الإعدادات ومفاتيح API والرموز المميزة أو معلومات أخرى مفيدة لهجمات لاحقة.
الإصدارات 4.13.0 وما بعدها تحتوي على الفحوصات الأمنية اللازمة لمنع استدعاء الدوال التعسفي.
تعود المشكلة إلى التحقق غير الكافي داخل نقطة النهاية /component_server.
بدلاً من تقييد الطلبات بقائمة آمنة من الدوال القابلة للاستدعاء، سمح Gradio للمهاجمين بتحديد أسماء دوال تعسفية تخص مثيل مكوّن.
ولأن الدالة الداخلية:
move_resource_to_block_cache()
تقبل مسار نظام ملفات كمدخل، يمكن للمهاجم توجيه التطبيق لتخزين أي ملف قابل للقراءة على الخادم في ذاكرة التخزين المؤقت.
بمجرد تخزينه في الذاكرة المؤقتة، يُكشف الملف عبر وظيفة تقديم الملفات العادية في Gradio.
عادةً ما يتبع الهجوم الناجح الخطوات التالية:
/config./component_server.move_resource_to_block_cache./etc/passwd)./file.تسمح هذه العملية باسترجاع أي ملفات يمكن لعملية Gradio قراءتها عن بُعد.
POST /component_server HTTP/1.1
Host: target
Content-Type: application/json
{
"component_id": "3",
"data": "/etc/passwd",
"fn_name": "move_resource_to_block_cache",
"session_hash": "aaaaaaaaaaa"
}
في حال نجاح الطلب، يُرجع Gradio موقع الملف المخزّن مؤقتًا.
يمكن للمهاجم بعد ذلك طلب:
GET /file=/tmp/gradio/<cached-file>/passwd HTTP/1.1
Host: target
لاسترجاع المحتويات.
قد يسمح الاستغلال الناجح للمهاجم بقراءة ملفات حساسة بما في ذلك:
/etc/passwd.env)يعتمد الأثر على صلاحيات تطبيق Gradio.
لمعالجة هذه الثغرة:
هذا المستودع مُقدَّم لأغراض تعليمية وللبحث الأمني ولاختبار الاختراق المصرّح به فقط. احصل دائمًا على إذن صريح قبل اختبار أنظمة لا تملكها أو ليس لديك تفويض لتقييمها.