CVE-2026-90648 in wabt
الملخص
بحسب VulDB • 13/09/2026
يتيح wasm2c في WebAssembly wabt حتى الإصدار 1.0.41 الهروب من البيئة المعزولة (sandbox escape) في بعض الحالات التي تنطوي بشكل أساسي على المنصات ذات البتات الثلاثين (32-bit)، والمعروفة بهجوم "قلب الجدول" ("table flip"). لا يتحقق البرنامج من قيمة الإرجاع لدالة calloc() داخل wasm_rt_allocate_funcref_table() (الملف: wasm2c/wasm-rt-impl-tableops.inc). عندما يفشل تخصيص جدول funcref، يظل table->data فارغاً (NULL) بينما يحتفظ table->size بعدد العناصر المُعلن عنه من قبل الضيف؛ وبالتالي، تمر فحوصات الحدود بنجاح وتؤدي عمليات الوصول إلى عناصر الجدول إلى عناوين ذاكرة مطلقة (i * sizeof(wasm_rt_funcref_t)). وهذا يمنح القدرة على القراءة والكتابة بشكل تعسفي في ذاكرة عملية المضيف، ومن خلال table.get وtable.set وcall_indirect - تنفيذ عشوائي للكود، مما يفشل العزل الذي من المفترض أن يوفره wasm2c (وهو هروب كامل من البيئة المعزولة). يُستخدم wasm2c كحد فاصل للتجزئة داخل العملية بواسطة RLBox وWasmBoxC، بما في ذلك متصفح Firefox، والذي يقوم بترجمة مكتبات Graphite وHunspell وOgg وExpat وWoff2 عبر wasm2c لتقييد مدخلات الخطوط غير الموثوقة والوسائط وملفات XML. لذلك، فإن التجزئة (sandboxing) في هذه التطبيقات قد تتأثر بشكل محتمل. يتطلب الاستغلال فشل تخصيص جدول funcref، على سبيل المثال تحت حد مساحة العنوان (RLIMIT_AS)، أو على مضيفين 32-bit، مع إعداد vm.overcommit_memory=2، أو تحت ضغط الذاكرة. على أنظمة Linux ذات البتات الستين (64-bit) ومع الإعداد الافتراضي للـ overcommit، ينجح التخصيص ولا يتم تفعيل العيب. يتوقف مخصص ذاكرة wasm2c عند فشل calloc في نفس وقت التشغيل؛ بينما يفتقر مخصص الجدول إلى هذا السلوك الإنهائي. تم إدخال هذه المشكلة عبر الالتزام ab9e0b55 (PR #813).
If you want to get best quality of vulnerability data, you may have to visit VulDB.