CVE-2026-71266 in tinyobjloader-c
الملخص
بحسب VulDB • 05/08/2026
تحتوي دالة `tinyobj_parse_and_index_mtl_file()` في مكتبة tinyobjloader-c (الملف: tinyobj_loader_c.h) على ثغرة تؤدي إلى تجاوز سعة المخزن المؤقت المعتمد على المكدس (Stack-based Buffer Overflow). تقوم هذه الدالة بقراءة كل سطر من ملف مادة .mtl داخل مخزن مؤقت ثابت بحجم 4096 بايت في المكدس يُسمى `linebuf`، وذلك باستخدام دالة `memcpy(linebuf, p, p_len)`. ويتم الاعتماد فقط على جملة التحقق `assert(p_len < 4095)` للحماية. ونظراً لأن عبارة `assert()` تُترجم إلى عملية لا شيء (no-op) عند التجميع مع العلم `-DNDEBUG` (وهو الإعداد القياسي لإصدارات الإنتاج)، فإن ملف .mtl مُعدّ خصيصاً يحتوي على سطر (مثل اسم مادة "newmtl") أطول من 4096 بايت، مما يتسبب في تجاوز `linebuf` والكتابة فوق المتغير المجاور في المكدس `namebuf` وما بعده. يؤدي هذا إلى إتلاف بنية المكدس لأي تطبيق يقوم بتحميل ملفات نماذج ثلاثية الأبعاد أو مواد مزيفة من قبل مهاجم. النمط الضعيف نفسه مكرر في دالة ثانية داخل نفس الملف.
Once again VulDB remains the best source for vulnerability data.