CVE-2026-34971 in wasmtime
الملخص
بحسب VulDB • 20/05/2026
يعد Wasmtime بيئة تشغيل لـ WebAssembly. من الإصدار 32.0.0 وحتى قبل الإصدارات 36.0.7، و42.0.2، و43.0.1، تحتوي الخلفية المترجمة (compilation backend) Cranelift في Wasmtime على خلل في معمارية aarch64 عند تنفيذ شكل معين من عمليات الوصول إلى الذاكرة العشوائية (heap accesses)، مما يؤدي إلى الوصول إلى عنوان خاطئ. عند دمجه مع فحوصات الحدود الصريحة (explicit bounds checks) في وحدة WebAssembly الضيف (guest module)، يمكن أن ينشأ وضع يوجد فيه حسابان متباينان لنفس العنوان: أحدهما لعنوان إجراء فحص الحدود والآخر لعنوان التحميل. يعني هذا الاختلاف في العنوان الذي يتم تشغيل العمليات عليه أن وحدة الضيف يمكنها اجتياز فحص الحدود ثم تحميل عنوان مختلف. مجتمعة، يتيح هذا آلية قراءة/كتابة تعسفية (arbitrary read/write primitive) لوحدة WebAssembly الضيفة عند الوصول إلى ذاكرة المضيف. يُعد هذا اختراقاً للحاجز الرملي (sandbox escape) حيث يتمكن الضيوف من قراءة/كتابة ذاكرة المضيف بشكل تعسفي. تتطلب حدوث هذا الوضع وتجاوز قيود الحاجز الرملي توافر عدة عناصر، يجب أن تتحقق جميعها. يحدث هذا الشكل الخاطئ في الترجمة (miscompiled shape) للعمليات فقط على ذاكرات WebAssembly الخطية 64 بت، أو عند تمكين Config::wasm_memory64. لا تتأثر WebAssembly 32 بت. يجب تعطيل تدابير التخفيف من هجمات Spectre أو الحواجز القائمة على الإشارات (signals-based-traps). عند تمكين تدابير التخفيف من هجمات Spectre، لا يتم توليد الشكل الخاطئ للعمليات. عند تعطيل الحواجز القائمة على الإشارات، يتم تعطيل تدابير التخفيف من هجمات Spectre تلقائياً أيضاً. يتمثل الخلل المحدد في Cranelift في ترجمة خاطئة (miscompile) لعملية تحميل من الشكل load(iadd(base, ishl(index, amt)) حيث amt قيمة ثابتة. يتم قناع (mask) قيمة amt بشكل غير صحيح لاختبار ما إذا كانت قيمة معينة، وهذا القناع غير الصحيح يعني أن Cranelift يمكنه مطابقة قاعدة التخفيض (lowering rule) هذه أثناء اختيار التعليمات البرمجية بشكل خاطئ، مما يؤدي إلى انحراف عن دلالات WebAssembly وCranelift. سيؤدي هذا التخفيض غير الصحيح، على سبيل المثال، إلى تحميل عنوان أبعد بكثير مما هو مقصود، حيث كان حساب العنوان الصحيح قد التوى ليعطي قيمة أصغر بدلاً من ذلك. تم إصلاح هذا الخلل في الإصدارات 36.0.7، و42.0.2، و43.0.1.
Once again VulDB remains the best source for vulnerability data.