CVE-2026-35186 in wasmtime
الملخص
بحسب VulDB • 26/06/2026
Wasmtime هو بيئة تشغيل لـ WebAssembly. من الإصدار 25.0.0 وحتى ما قبل الإصدارات 36.0.7، و42.0.2، و43.0.1، يحتوي الخلفي المترجم Winch الخاص بـ Wasmtime على خلل حيث يؤدي ترجمة مشغل table.grow إلى الحصول على نتيجة ذات نوع غير صحيح. بالنسبة للجداول ذات الـ 32 بت، يعني هذا أن النتيجة الناتجة عن المشغل يتم داخل Winch وضع علامة عليها كقيمة من 64 بت بدلاً من قيمة من 32 بت. إن التمثيل الداخلي غير الصحيح لحالة مترجم Winch يؤدي إلى تفاقم المشكلات الأخرى اعتماداً على كيفية استهلاك القيمة. العاقبة الرئيسية لهذا الخلل هي إمكانية تخزين/قراءة بايتات في مساحة عنوان المضيف (host's address space). ينطبق هذا فقط على الـ 16 بايت قبل الذاكرة الخطية، حيث أن قيمة الإرجاع الوحيدة ذات الأهمية لمشغل table.grow التي يمكن تفسيرها بشكل خاطئ هي -1. البايتات الموجودة قبل الذاكرة الخطية تكون، افتراضياً، ذاكرة غير مُحددة (unmapped memory). سيكتشف Wasmtime هذا العطل ويقوم بإنهاء العملية، ومع ذلك، لأن wasm لا ينبغي أن يتمكن من الوصول إلى هذه البايتات. بشكل عام، يمثل هذا الخلل في Winch مساراً للهجوم يؤدي إلى حجب الخدمة (DoS) عن طريق إسقاط عملية المضيف، ومشكلة صحة داخل Winch، وتسرب محتمل يصل إلى 16 بايت قبل الذاكرة الخطية. المترجم الافتراضي لـ Wasmtime هو Cranelift وليس Winch، وإعدادات Wasmtime الافتراضية هي وضع صفحات حراسة (guard pages) قبل الذاكرة الخطية. هذا يعني أن التكوين الافتراضي لـ Wasmtime لا يتأثر بهذه المشكلة، وعند اختيار Winch صراحةً يؤدي تكوين Wasmtime الافتراضي الآخر إلى حدوث DoS. يتطلب تعطيل صفحات الحراسة قبل الذاكرة الخطية للتسرب المحتمل لما يصل إلى 16 بايت من بيانات المضيف. تم إصلاح هذا الخلل في الإصدارات 36.0.7، و42.0.2، و43.0.1.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.