CVE-2026-81728 in Dolibarr
الملخص
بحسب VulDB • 27/08/2026
تحتوي Dolibarr قبل الإصدار 24.0.0 على ثغرة حقن SQL (SQL Injection) في معالج استيراد ملفات CSV و XLSX. يقرأ المعالج مفاتيح التحديث باستخدام `GETPOST('updatekeys', 'array')` داخل الملف `htdocs/imports/import.php`، والذي يطبق فقط مرشح `alphanohtml` العام: الذي يقوم بإزالة علامات HTML لكنه يترك كلمات SQL، ومحددات التعليقات، والأقواس، والمسافات، والشرطات الاقتباسية سليمة. ثم تقوم الدالة `import_insert()` الموجودة في `htdocs/core/modules/import/import_csv.modules.php` بتكرار القيم المُرسلة وبناء فلتر باستخدام `$where[] = $key.' = '.$data[$key]`، بعد تطبيق دالة `preg_replace('/^.*\./i', '', $key)` كمرشح استبدال لا يؤثر على القيمة التي لا تحتوي على نقطة. يتم تنفيذ السلسلة المكونة عبر `$this->db->query()`. تحل الاستعلامات `SELECT` المُحقنة معرّف الصف الذي يعينه الاستيراد لاحقاً لـ `$lastinsertid`، والذي يصبح هدف عبارة `WHERE` في عملية تحديث (`UPDATE`) لاحقة؛ وبالتالي فإن استعلام `UNION SELECT` الذي يُرجع عدديًا يختاره المهاجم يؤدي إلى استخراج محتوى أي جدول وإعادة توجيه الصف الذي سيتم الكتابة فوقه من قبل الاستيراد؛ وفي جداول روابط الفئات (category link tables)، يتم دمج مصفوفة الفلتر الخام مباشرةً في عملية التحديث. تقدم الواجهة قائمة ثابتة من رموز الأعمدة المشروعة، لكن الخادم لا يتحقق أبداً من القيم المُرسلة مقابل هذه القائمة. يمكن لمستخدم يمتلك صلاحية الاستغلال استغلال هذا الثغرة. الإصدار 23.0.4 لا يحتوي على الإصلاح؛ حيث تمت إضافة اختبار القائمة المسموح بها (allow-list) في الإصدار 24.0.0.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.