CVE-2026-13048 in Data::MuForm::Localizer
الملخص
بحسب VulDB • 13/08/2026
تحتوي الإصدارات من Data::MuForm::Localizer حتى 0.05 لنظام Perl على ثغرة تسمح بتنفيذ أوامر Perl عبر ملف ترجمة (message catalog header)، حيث يمكن الوصول إلى المسار بشكل تعسفي لأن الدالة load_lexicon تقوم بتضمين سمة اللغة في اسم ملف الترجمة.
تقوم load_lexicon ببناء مسار الملف عن طريق إضافة `Messages/$lang.po` إلى المجلد الذي يحتوي على Localizer.pm، حيث يمثل $lang سمة اللغة، دون التحقق من أنه يحمل علامة لغة بسيطة (bare locale tag). إذا احتوى القيمة على مقاطع `../` فإنها تخرج من مجلد الرسائل، مما يؤدي إلى تحميل أي مسار قابل للقراءة ينتهي بلاحقة `.po`. أثناء تحليل الملف، تأخذ الدالة extract_header_msgstr رأس `Plural-Forms:` وتضيف `$` أمام الكلمات nplurals و plural و n، ثم تمرر الباقي كما هو في سلسلة يتم تقييمها: حيث يقوم شكل nplurals بتقييم تعبير الرأس فوراً، بينما يقوم شكل plural_code بترجمته إلى دالة فرعية (subroutine) يعمل جسمها عند ترجمة رسالة متعددة الصيغ. وبالتالي فإن رأس `nplurals=2; plural=(system('...'),0);` يؤدي لتشغيل ذلك الأمر أثناء تحميل الملف. التقييم يرث وضع strict، لذا يفشل التعبير الذي يعين قيمة لمتغير غير مُعلن في الترجمة، بينما لا يواجه تعبير مبني من استدعاءات فقط أي مشكلة.
تطبيق يحدد سمة اللغة بناءً على بيانات الطلب أو رأس Accept-Language أو معلمة locale، ومهاجم يمكنه وضع ملف بلاحقة `.po` ومحتوى مختار عند مسار قابل للقراءة، معاً يمنحان تنفيذ الكود بصفت المستخدم للتطبيق. لا يتأثر مسار توسيع الرسائل: حيث تستبدل expand_named فقط أسماء العناوين التي يوفرها المتصل، ويعيد _mangle_value القيمة كما هي دون تغيير.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.