
توجد ثغرة حقن مسار في OpenPLC-v3، تنشأ من عدم قيام البرنامج بأي فحوصات لصلاحية معاملات مسار الملف التي تُمرَّر إليه من سطر الأوامر. يمكن للمهاجمين قراءة أي ملف قابل للقراءة عبر إنشاء مسارات خبيثة، مما يشكل خطر تسريب معلومات.
توجد ثغرة حقن المسار في OpenPLC-v3، تنشأ من عدم إجراء البرنامج لأي عمليات تحقق من صحة معاملات مسار الملف التي يتم تمريرها من سطر الأوامر. يمكن للمهاجمين قراءة أي ملف قابل للقراءة من خلال إنشاء مسارات خبيثة، مما يشكل خطر تسرب المعلومات.
التحقق غير السليم من الإدخال (حقن المسار)
كشف المعلومات (قراءة ملفات عشوائية)
يحتوي البرنامج الثنائي المُجمَّع من glue_generator.cpp على ثغرة قراءة ملفات عشوائية ناتجة عن عدم كفاية التحقق من مسارات الملفات التي يقدمها المستخدم.
يمكن للمهاجم تحديد ملف عشوائي كوسيطة إدخال (مثل /etc/passwd) عند تنفيذ البرنامج. يقرأ التطبيق بعد ذلك الملف سطرًا بسطر، ويحلل المحتوى، ويطبع البيانات المحللة مباشرةً إلى وحدة التحكم باستخدام cout دون إجراء أي تحقق من:
ونتيجةً لذلك، يمكن للمهاجمين قراءة أي ملف يمكن الوصول إليه ضمن سياق صلاحيات العملية الجارية، مما يؤدي إلى كشف معلومات حساسة.
1.يستطيع المهاجم تنفيذ البرنامج الثنائي المعرّض للثغرة.
2.يمتلك حساب المستخدم الذي يقوم بتشغيل البرنامج إذن قراءة للملف المستهدف.
قد يؤدي الاستغلال الناجح إلى كشف معلومات حساسة للنظام، بما في ذلك على سبيل المثال لا الحصر:
قد تسهّل هذه المعلومات تصعيد الامتيازات أو الحركة الجانبية لاحقًا.
في glue_generator.cpp، يستخدم البرنامج مصفوفتي سلاسل نصية، varName و varType، لمعالجة محتويات الملفات المحللة وطباعتها إلى سطر الأوامر.
أثناء التحليل، يتوقع البرنامج تنسيق سطر محدد:
(<varType>,<varName>,
تحديدًا:
المحتوى الموجود بين ( والفاصلة الأولى , يُسند إلى varType؛
المحتوى الموجود بين الفاصلة الأولى والفاصلة الثانية , يُسند إلى varName.
لا يتم إجراء أي تحقق من مسار الملف المصدر أو من شرعية البيانات المحللة.
الخطوة 1: إنشاء ملف اختبار
أنشئ ملفًا باسم test.txt بالمحتوى التالي:
(aaaaaaaa,123,
الخطوة 2: تنفيذ البرنامج المعرّض للثغرة
نفّذ الأمر التالي:
./glue_generator ./test.txt whatever.cpp
سيقوم البرنامج بتحليل المحتوى وطباعة القيم المستخرجة إلى وحدة التحكم.
الخطوة 3: قراءة ملفات عشوائية
إذا تمكن المهاجم من تعديل ملف حساس (مثل /etc/passwd) أو التحكم فيه ليتضمن بيانات تطابق التنسيق المطلوب:
(aaaaaaaa,123,
فسيقوم البرنامج المعرّض للثغرة بتحليل المحتوى المقابل من الملف وطباعته.
بالنسبة للملفات الحساسة، قد يتم كشف أي سطر يطابق النمط التالي:
(<content1>,<content2>,
تعتمد كمية المعلومات المسربة على:
تنجم الثغرة عن:
1.غياب التحقق من مسارات الملفات التي يتحكم بها المستخدم.
2.منطق تحليل غير آمن يُطبَّق على ملفات عشوائية.
3.إخراج مباشر للمحتوى المحلل إلى وحدة التحكم دون عمليات تحقق من الصلاحيات.
4.غياب قيود على مواقع الملفات التي يمكن الوصول إليها.
للتخفيف من هذه الثغرة: