Wasmtime میں اہم خطرہ، WebAssembly ایپلی کیشنز کے لیے رن ٹائم

اصلاحی اپ ڈیٹس Wasmtime 6.0.1, 5.0.1 اور 4.0.1 نے کمزوری (CVE-2023-26489) کو طے کیا، جسے خطرے کی ایک اہم سطح تفویض کی گئی تھی۔ کمزوری ڈیٹا کو الگ تھلگ WebAssembly کوڈ کے لیے اجازت دی گئی حدود سے باہر میموری کے علاقے میں لکھنے کی اجازت دیتی ہے، جسے ممکنہ طور پر حملہ آور اپنے کوڈ کو الگ تھلگ WASI ماحول سے باہر کرنے کے لیے استعمال کر سکتا ہے۔

Wasmtime WASI (WebAssembly سسٹم انٹرفیس) ایکسٹینشن کے ساتھ WebAssembly ایپلی کیشنز کو باقاعدہ اسٹینڈ اکیلے ایپلی کیشنز کے طور پر چلانے کا رن ٹائم ہے۔ ٹول کٹ کو رسٹ زبان میں لکھا گیا ہے، اور یہ کمزوری کرین لفٹ کوڈ جنریٹر میں لکیری میموری ایڈریسنگ کے اصولوں کی وضاحت کرنے میں ایک منطقی غلطی کی وجہ سے ہوتی ہے، جو ہارڈ ویئر فن تعمیر سے آزاد ایک انٹرمیڈیٹ نمائندگی کو x86_64 فن تعمیر کے لیے قابل عمل مشین کوڈ میں ترجمہ کرتا ہے۔

خاص طور پر، WebAssembly ایپلی کیشنز کے لیے، WebAssembly میں اجازت دی گئی 35-بٹ پتوں کی بجائے 33-بٹ موثر پتوں کا حساب لگایا گیا، جس نے پڑھنے اور لکھنے کے آپریشنز کے لیے مجاز ورچوئل میموری کی حد کو 34 GB تک منتقل کر دیا، جبکہ سینڈ باکس کے ماحول کی ترتیبات تحفظ فراہم کرتی ہیں۔ بیس ایڈریس سے 6 جی بی۔ نتیجے کے طور پر، بیس ایڈریس سے 6 سے 34 جی بی تک ورچوئل میموری کی حد WebAssembly ایپلی کیشنز سے پڑھنے اور لکھنے کے لیے دستیاب تھی۔ یہ میموری دوسرے WebAssembly ماحول یا WebAssembly رن ٹائم اجزاء کی میزبانی کر سکتی ہے۔

اگر Wasmtime ورژن کو اپ ڈیٹ کرنا ممکن نہیں ہے تو، خرابی کو روکنے کے لیے ایک حل یہ ہے کہ "Config::static_memory_maximum_size(0)" کے آپشن کی وضاحت کی جائے تاکہ تمام لکیری میموری تک رسائی پر علیحدہ باؤنڈز چیک کو فعال کیا جا سکے (نتیجے میں کارکردگی کا ایک اہم جرمانہ) . دوسرا آپشن یہ ہے کہ "Config::static_memory_guard_size(1 <36)" سیٹنگ کا استعمال کریں تاکہ مشکل والے ورچوئل میموری رینج میں رکھے گئے گارڈ پیجز کی تعداد میں اضافہ کیا جا سکے (ایک استثنیٰ جب تک رسائی حاصل ہو) ویب اسمبلی ایپلیکیشنز کو بیک وقت چلانے کے لیے تعداد کو محدود کرنا)۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں