info[at]nsec.ir
(+۹۸)-۳۱-۳۳۹۱۵۳۳۶

بهبود وب‌اسمبلی یا ناکارآمد شدن وصله‌های Meltdown و Spectre!

خلاصه: ­محققان امنیتی دریافتند که تغییرات جدید در استاندارد WebAssembly می‌تواند اقدامات سطح مرورگر در مقابله با حملات Meltdown و Spectre را ناکارآمد کند. درواقع اضافه کردن پشتیبانی از "نخ‌ها" در وب‌اسمبلی باعث می‌شود که به‌روزرسانی‌های مرورگرهای کروم و فایرفاکس برای مقابله در برابر حملات Meltdown و Spectre و سایر حملات جانبی ناکارآمد شوند.

 

به گفته محققان امنیتی Forcepoint، با توجه به تغییرات جدیدی که قرار است در استاندارد webAssembly رخ دهد ممکن است  بعضی از اقداماتی که در سطح مرورگر در برابر حملات Meltdown و Spectre انجام می‌شوند، ناکارآمد شوند.

WebAssembly یا (WA or WAsm) تکنولوژی جدیدی‌ست که سال پیش به وجود آمده و در حال حاضر توسط همه­‌ی مرورگرها اعم از Chrome، Firefox، Edge و Safari پشتیبانی می­شود. این تکنولوژی یک زبان باینری فشرده است که یک مرورگر آنرا به کد ماشین تبدیل کرده و به طور مستقیم روی CPU اجرا می­کند.

سازندگان مرورگر، وب­اسمبلی را برای بهبود سرعت تحویل و کارایی کد جاوا اسکریپت ایجاد کردند، همچنین دست توسعه­دهندگان را باز گذاشتند تا بتوانند کدها را از زبان­های سطح بالا مانند (C, C++, others) به Wasm  تبدیل کرده و سپس آن­ها را داخل مرورگر اجرا کنند. استاندارد وب‌اسمبلی در انجمن توسعه دهند­گان وب، به عنوان یک موفقیت بزرگ محسوب می­شود.

وب­اسمبلی در مقابل سوء­استفاده ایمن نیست!

اما همانند همه فناوری­ها، این تکنولوژی نیز با برخی اثرات سوء و یا موارد سوءاستفاده پیش­بینی نشده همراه است. برای مثال، ظهور استخراج‌کنندگان رمز-ارز را می‌توان بدون هیچ ابهامی، به اضافه شدن وب‌اسمبلی در مرورگرهای اصلی، مرتبط دانست، چراکه همه‌ی ماینرها با استفاده از وب‌اسمبی اجرا می‌شوند.

اما این تنها تاثیر سوء وب‌اسمبلی نیست و محققان Forcepoint تاثیر جانبی دیگری را نیز در وب‌اسمبلی کشف کرده‌اند.

به‌گفته‌ی محققان زمانی که Wasm از نخ‌ها با حافظه‌ی اشتراکی پشتیبانی می‌کند، تایمرهای بسیار دقیق جاوااسکریپت می‌توانند ایجادشوند، که این کار ممکن است  باعث شود که مرورگر برای مقابله با یرخی از حملات جانبی CPU  به صورت غیر موثر عمل کند.

webAssembly ممکن است برخی از ویژگی‌های موثر در کاهش و مقابله با حملات در مرورگر، را دوربزند.

 در این رابطه محققان به طور دقیق­­تری به حملات زمان­بندی اشاره دارند. حملات زمان­بندی (timing)، دسته‌ای از حملات رمزنگاری هستند که از طریق آن یک ناظر شخص ثالث می­تواند محتویات داده­های رمز شده را با ثبت و تجزیه و تحلیل زمان انجام شده برای اجرای الگوریتم رمزنگاری محاسبه کند. آسیب‌پذیری‌های Meltdown و Spectre برای پردازنده، که اخیرا کشف شدند، نمونه‌ای از حملات زمان‌بندی هستند.

این حملات به توانایی مهاجمان برای اندازه‌گیری فواصل زمانی دقیق متکی هستند. این پارامتر، برای انجام حملات کانال جانبی و بازیابی اطلاعات کافی از داده‌های رمزشده، مورد نیاز است.

هنگامی که Meltdown و Spectre  در ماه ژانویه نمایان شدند، محققان کدهای اثبات مفهومی را برای آن‌ها منتشر کردند که مهاجم می‌توانست از آن‌ها برای بهره‌برداری از این آسیب‌پذیری‌ها از راه دور (از طریق اینترنت با استفاده از کد جاوااسکریپت که در مرورگر اجرا می‌شود.) استفاده کند.  این کد حمله از توابع داخلی مرورگرها مانند “SharedArrayBuffer” و “Performance.now” برای اندازه­گیری فواصل زمانی استفاده می­کند.

مرورگرهایی مانند فایر فاکس و کروم با به­روز­رسانی­هایی که دقت عملکرد این تایمرها را کاهش می‌دادند توانستند حملات Meltdown و Spectre و دیگر حملات کانال جانبی را ناکارآمد کنند. اما اکنون محققان متوجه شدند که ازآن‌جایی که پشتیبانی از نخ­ها در وب­اسمبلی اضافه می­شود و این ویژگی به مرورگرهای مدرن رسیده است، این اقدامات مرورگرها بی­فایده خواهندبود، چراکه مهاجم راه جدیدی برای اندازه‌گیری فواصل زمانی دقیق از طریق WebAssembly را در اختیار دارد. جلوگیری از این اتفاق مستلزم آن است که توسعه‌دهندگان مرورگرها، پشتبانی وب‌اسمبلی از "نخ‌ها" را محدود کنند.