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

ASLR

این آسیب‌پذیری بر روی روشِ عملکردِ واحدِ مدیریت حافظه (بخشی که در تمامی CPU ها وجود دارد) قرار دارد. این واحد، وظیفه راه‌اندازی و هدایت به منظورِ bypass کردن حفاظتِ ASLR(1) را بر عهده دارد.

ASLR نوعی سیستم دفاعی امنیتی است که توسط تمامی سیستم‌عامل‌ها از ویندوز و لینوکس گرفته تا macOS، اندروید و BSD مورد استفاده قرار می‌گیرد.

به طور کلی، ASLR نوعی مکانیزم حفاظت از حافظه است که محل‌های اجرای برنامه‌ها در حافظه دستگاه را رندمایز(۲) می‌کند. این کار در عوض، کار را برای مهاجمان سخت می‌کند تا payloadهای مخرب را توسط بهره‌برداری از سرریزهای بافر یا آسیب‌پذیری‌های مشابه در محل‌های مشخص اجرا کنند.

به طور خلاصه، این آسیب‌پذیری این امکان را در اختیار مهاجمان قرار می‌دهد تا به صورت چشم‌ بسته از محلی دزدی کنند.

اما در حال حاضر گروهی از محققان، که به VUSec معروف هستند از دانشگاه Vrije در هلند یک حمله را بازسازی کردند[۱] که می‌تواند حفاظت ASLR را بر روی حداقل ۲۲ معماری میکروی CPU مختلف bypass کند. این معماری‌ها شامل معماری‌های تولید شده توسط سازندگان معروف مانند اینتل، AMD، ARM، Allwinner، Nvidia و دیگر سازندگان هستند.

این حمله که ASLR Cashe یا AnC نامیده شده است، حیاتی است چراکه از یک کد جاوا اسکریپت ساده استفاده می‌کند تا آدرس‌های پایه را در حافظه شناسایی کند که سیستم و اجزای برنامه آن‌ها را اجرا می‌کنند.

بنابراین صرف مشاهده از یک سایت مخرب می‌تواند این حمله را آغاز کند که به مهاجمان اجازه می‌دهد تا هدف‌های بیشتری را جهت حمله به محل مورد نظر از حافظه هدایت کنند تا داده‌های حساس را که در حافظه PC ذخیره شده است، بدزدند.

در [۲] روش انجام شدن این حمله به طور کامل آورده شده است.

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

MMU بر روی چیپ‌های دسکتاپ، موبایل و سرور قرار دارد و وظیفه‌اش تعیین کردن محلی است که کامپیوتر برنامه‌ها را ذخیره می‌کند و به طور مداوم یک دایرکتوری را بررسی می‌کند که یک page table را فراخوانی کرده تا آدرس‌های مورد نظر را نگهداری کند.

دستگاه‌ها معمولا page table را در کشِ CPU ذخیره می‌کنند که این عمل چیپ‌ها را سریع‌تر کرده و کارایی آن‌ها را افزایش می‌دهد. اما این جزء، همچنین مقداری از cache خود را با برنامه‌های غیرقابل اعتماد نظیر مرورگرها به اشتراک می‌گذارد.

بنابراین یک قطعه از کد جاوا اسکریپت که بر روی یک وب‌سایت مخرب در حال اجراست می‌تواند بر روی cache مورد نظر نوشته شود (توسط حمله side channel) و به مهاجمان اجازه دهد تا محلی که اجزای نرم‎افزار مانند فایل‌های RAM-mapped و کتابخانه‌ها در حافظه مجازی قرار دارند را شناسایی کنند.

با در دسترس داشتن اطلاعات این محل‌ها، هر مهاجمی می‌تواند بخشی از حافظه کامپیوتر را بخواند که در نهایت آن‌ها می‌توانند از آن برای اجرا کردن‌ بهره‌بردارهای پیچیده‌تر استفاده کنند و سطح دسترسی خود را برای تمام سیستم‌عامل افزایش داده و سیستمِ کامپیوتر مورد نظر را hijack کنند.

محققان به طور موفقیت‌آمیزی حملات جاوا اسکریپت AnC را از طریق مرورگرهای به روز رسانی شده فایرفاکس و کروم بر روی ۲۲ میکرو-معماری مختلف CPU در زمان تقریبی ۹۰ ثانیه و صرف نظر از قرارداشتن محافظ ASLR بر روی این مرورگرها مانند تایمرهای جاوا اسکریپت شکسته شده(۳)، بهره‌برداری کرده‌اند.

تیم تحقیقاتی VUSec  دو مقاله تحقیقاتی در این زمینه منتشر کرده است[۳و۴] که در آن جزئیات حمله AnC آورده شده است که همراه با دو ویدیو [۵] است که ثابت می‌کند این حمله بر روی یک سیستمِ دارای سیستم‌عامل لینوکس ۶۴ بیت و در مرورگر فایرفاکس قابل انجام است.

در حمله انجام شده توسط این تیم تحقیقاتی، محققان جاوا اسکریپتِ AnC خود را را با کد حمله‌ای که یک وصله منتشر شده مربوط به یک آسیب‌پذیری use-after-free به نام CVE-2013-0753 در فایرفاکس بهره‌برداری می‌کند، ترکیب کردند. این مسائل با حملات AnC توسط چندین آسیب‌پذیری شامل موارد زیر ردیابی می‌شوند:

  • CVE-2017-5925 برای پروسسورهای Intel
  • CVE-2017-5926 برای پروسسورهای AMD
  • CVE-2017-5927 برای پروسسورهای ARM
  • CVE-2017-5928 برای یک مسئله زمانبندی که بر روی چندین مرورگر تأثیرگذار است.

تیم VUSec  در حال حاضر به تمامی سازندگان چیپ و شرکت‌های نرم‌افزاری که تحت تأثیر این آسیب‌پذیری قرار دارند شامل شرکت‌های اینتل، AMD، سامسونگ، Nvidia، مایکروسافت، اپل، گوگل و موزیلا بیش از ۳ ماه پیش هشدار داده بود، اما در حال حاضر به صورت عمومی این آسیب‌پذیری را منتشر کرده است.

در مقاله منتشر شده توسط این تیم تحقیقاتی آمده است: “نتیجه این است که چنین رفتارِ cashing و randomization قویِ فضای آدرس، منحصر به فرد هستند. به علت اهمیت سلسله مراتب caching برای کارایی کلی سیستم، آماده‌سازی تمامی وصله‌ها به منظور اجرایی شدن، به نظر می‌رسد هزینه‌بر خواهد بود. علاوه بر این، حتی اگر mitigation ها در سخت‌افزار امکان‌پذیر باشند، مانند cache جداگانه برای page table ها، مشکلات ممکن است که دوباره در نرم‌افزار ظاهر شوند. از این رو، ASLR به عنوان یک محافظ خط مقدم در برابر حملات اشکالِ حافظه قابل اعتماد نیست و در سناریو‌های دفاعی آینده نباید به عنوان محور اساسیbuilding block در نظر گرفته شود.”

بر طبق گفته این تیم تحقیقاتی، تنها راهی که می‌توانید از خود در برابر حملات AnC محافظت کنید، فعال کردن plug-in ها شامل NoScript برای فایرفاکس یا ScriptSafe برای کروم برای بلاک کردن اجرا کد جاوا اسکریپت غیرقابل اطمینان بر روی مرورگر است.

منابع

[۱] https://www.vusec.net/projects/anc/

[۲] https://youtu.be/aILISvZlBAU

[۳] http://www.cs.vu.nl/~herbertb/download/papers/anc_ndss17.pdf

[۴] http://www.cs.vu.nl/~herbertb/download/papers/revanc_ir-cs-77.pdf

[۵] https://youtu.be/qGuZjOoArRw

[۶] http://thehackernews.com/2017/02/bypass-aslr-browser-javascript.html


(۱) Address Space Layout Randomization
(۲) randomize
(۳) broken JavaScript timers