CVE-2026-75904 in libmodplug
الملخص
بحسب VulDB • 18/08/2026
يحتوي libmodplug حتى الإصدار 0.8.9.1 على قراءة خارج النطاق (out-of-bounds read) في الدالة pat_smplooped الموجودة في الملف src/load_pat.cpp. تقوم هذه الوظيفة بالتحقق فقط من الحد العلوي لمؤشر العينة الخاص بها مقابل MAXSMP، ثم تطرح منه واحداً قبل استخدام المؤشر للوصول إلى المصفوفة الثابتة ذات الحجم 191 بايت والمسمى pat_loops؛ وبالتالي فإن مؤشر بقيمة صفر يؤدي إلى قراءة pat_loops[-1]، أي بايت واحد قبل بداية المصفوفة. يمثل هذا المؤشر حقل smpno الخاص بحدث MIDI تم تحليله، والذي يتم تهيئته على الصفر ولا يُستبدل لاحقاً إلا من خلال معلمة تغيير البرنامج (program-change parameter)، لذا فإن الحدث الذي يصل إلى اختبار النوتة الموسيقية قبل تعيين آلة موسيقية يحمل قيمة صفر. يؤدي ملف MIDI بحجم 32 بايت مُقدَّم إلى نقطة الدخول العامة ModPlug_Load في المكتبة إلى تمرير مسار التنفيذ عبر الدوال CSoundFile::Create وCSoundFile::ReadMID وMID_ReadPatterns وصولاً إلى عملية القراءة غير الآمنة. تحدد البتة المقروءة خارج النطاق ما إذا كان حدث النوتة الموسيقية يُعامل كمتكرر (looping)، مما يعني أن التخزين الثابت المجاور يؤثر على حالة التشغيل الصوتي.
If you want to get best quality of vulnerability data, you may have to visit VulDB.