
مشكلة أمنية في OpenEMR
ثغرة اجتياز المسار وهجوم الحرمان من الخدمة في مشروع OpenEMR
الوظيفة القابلة للاستغلال في الملف: /openemr/custom/ajax_download.php
الشروط:
الإصدارات القابلة للاستغلال: <5.0.2، تم الإصلاح في الإصدار 5.0.2.
المتغير القابل للاستغلال في هذه الوظيفة: fileName، يمكن للمهاجم التحكم به ولا يوجد أي تصفية أو تحقق منه.
يمكن للمهاجم تنزيل أي ملف (قابل للقراءة بواسطة المستخدم www-data) من تخزين الخادم.
إذا كان الملف المطلوب قابلاً للكتابة بواسطة المستخدم www-data وكان المجلد /var/www/openemr/sites/default/documents/cqm_qrda/ موجودًا، فسيتم حذفه من الخادم.
المجلد غير الموجود ليس مشكلة كبيرة، حيث يمكن للمهاجم إنشاؤه. المتغير "higher_level_path" في وظيفة الرفع /openemr/controller.php?document&upload يسمح لنا بتقديم اسم المجلد الذي سيتم تخزين الملف فيه، وإذا لم يكن هذا المجلد موجودًا (وكان المتغير "patient_id" رقميًا وأكبر من 0) فسيتم إنشاؤه بصلاحيات "700" ومملوك للمستخدم "www-data".
يمكن أن يتسبب ذلك في هجوم حرمان من الخدمة، لأن المهاجم يمكنه حذف بعض ملفات التكوين/نصوص PHP من الخادم.
كشف المعلومات.
حرمان من الخدمة.
ملاحظة: شكر خاص لـ Brady G. Miller من فريق OpenEMR على الاستجابة السريعة والتصحيحات