تیمی از محققان از ETH Zurich، Vrije Universiteit Amsterdam و Qualcomm یک روش جدید حمله RowHammer را منتشر کرده اند که می تواند محتویات تک تک بیت های حافظه دسترسی تصادفی پویا (DRAM) را تغییر دهد. این حمله با اسم رمز Blacksmith و CVE-2021-42114 شناخته شد. بسیاری از تراشههای DDR4 مجهز به محافظت در برابر روشهای کلاس RowHammer که قبلاً شناخته شده بودند، مستعد این مشکل هستند. ابزارهایی برای تست آسیب پذیری سیستم شما در GitHub منتشر شده است.
به یاد بیاورید که حملات کلاس RowHammer به شما این امکان را می دهد که محتویات تک تک بیت های حافظه را با خواندن چرخه ای داده ها از سلول های حافظه مجاور تحریف کنید. از آنجایی که حافظه DRAM یک آرایه دو بعدی از سلولها است که هر کدام از یک خازن و یک ترانزیستور تشکیل شدهاند، انجام خواندن مداوم همان ناحیه حافظه منجر به نوسانات ولتاژ و ناهنجاریهایی میشود که باعث کاهش بار کوچک در سلولهای مجاور میشود. اگر شدت خواندن بالا باشد، سلول همسایه ممکن است مقدار زیادی شارژ را از دست بدهد و چرخه بازسازی بعدی زمان لازم برای بازیابی حالت اولیه خود را نخواهد داشت، که منجر به تغییر در مقدار داده های ذخیره شده در سلول می شود. .
برای محافظت در برابر RowHammer، سازندگان تراشه مکانیسم TRR (Refresh ردیف هدف) را پیشنهاد کردند که از تخریب سلولها در ردیفهای مجاور محافظت میکند، اما از آنجایی که حفاظت بر اساس اصل "امنیت از طریق مبهم" بود، مشکل را حل نکرد. ریشه، اما فقط از موارد خاص شناخته شده محافظت می شود، که یافتن راه هایی برای دور زدن حفاظت را آسان می کند. به عنوان مثال، در ماه مه، گوگل روش Half-Double را پیشنهاد کرد که تحت تأثیر محافظت TRR قرار نگرفت، زیرا این حمله سلول هایی را که مستقیماً در مجاورت هدف قرار نداشتند، تحت تأثیر قرار داد.
روش جدید Blacksmith راه متفاوتی را برای دور زدن حفاظت TRR ارائه میکند، بر اساس دسترسی غیریکنواخت به دو یا چند رشته مهاجم در فرکانسهای مختلف برای ایجاد نشت شارژ. برای تعیین الگوی دسترسی به حافظه که منجر به نشتی شارژ می شود، یک fuzzer ویژه توسعه داده شده است که به طور خودکار پارامترهای حمله را برای یک تراشه خاص انتخاب می کند و ترتیب، شدت و سیستماتیک دسترسی به سلول را تغییر می دهد.
چنین رویکردی که با تأثیرگذاری روی سلولهای مشابه همراه نیست، روشهای حفاظتی فعلی TRR را بیاثر میکند، که به یک شکل به شمارش تعداد تماسهای مکرر به سلولها خلاصه میشود و با رسیدن به مقادیر معین، شروع به شارژ مجدد میکند. سلول های همسایه در Blacksmith، الگوی دسترسی به طور همزمان در چندین سلول از طرفهای مختلف هدف پخش میشود، که امکان دستیابی به نشت شارژ را بدون رسیدن به مقادیر آستانه ممکن میسازد.
این روش به طور قابل توجهی مؤثرتر از روشهای پیشنهادی قبلی برای دور زدن TRR بود - محققان موفق شدند به اعوجاج بیتی در تمام 40 تراشه حافظه DDR4 مختلف خریداری شده توسط سامسونگ، میکرون، SK Hynix و یک سازنده ناشناس دست یابند (سازنده روی 4 تراشه مشخص نشده است). برای مقایسه، روش TRRespass که قبلاً توسط همان محققان پیشنهاد شده بود تنها برای 13 تراشه از 42 تراشه آزمایش شده در آن زمان مؤثر بود.
بهطور کلی، انتظار میرود که روش Blacksmith برای 94 درصد از تمام تراشههای DRAM موجود در بازار اعمال شود، اما محققان میگویند برخی از تراشهها آسیبپذیرتر و راحتتر از بقیه برای حمله هستند. استفاده از کدهای تصحیح خطا (ECC) در تراشه ها و دوبرابر کردن نرخ تازه سازی حافظه، محافظت کاملی را ایجاد نمی کند، اما عملکرد را پیچیده می کند. قابل توجه است که این مشکل در تراشههای منتشر شده از قبل مسدود نمیشود و نیاز به اجرای حفاظت جدید در سطح سختافزار دارد، بنابراین این حمله برای سالها مرتبط باقی خواهد ماند.
مثالهای عملی شامل روشهایی برای استفاده از Blacksmith برای تغییر محتویات ورودیها در جدول صفحه حافظه (PTE، ورود جدول صفحه) برای به دست آوردن امتیازات هسته، خراب کردن کلید عمومی RSA-2048 ذخیره شده در حافظه در OpenSSH (شما میتوانید کلید عمومی را وارد کنید. ماشین مجازی شخص دیگری برای مطابقت با کلید خصوصی مهاجم برای اتصال به VM قربانی) و با تغییر حافظه فرآیند sudo برای به دست آوردن امتیازات ریشه، بررسی اعتبار را دور بزنید. بسته به تراشه، از 3 ثانیه تا چند ساعت زمان حمله برای تغییر یک بیت هدف طول می کشد.
علاوه بر این، میتوانیم به انتشار چارچوب باز تست چکش ردیف LiteX برای آزمایش روشهای حفاظت از حافظه در برابر حملات کلاس RowHammer، که توسط Antmicro برای Google توسعه یافته است، اشاره کنیم. این چارچوب مبتنی بر استفاده از FPGA برای کنترل کامل دستورات ارسال شده به طور مستقیم به تراشه DRAM است تا تأثیر کنترل کننده حافظه را از بین ببرد. جعبه ابزار در پایتون برای تعامل با FPGA ارائه شده است. دروازه مبتنی بر FPGA شامل یک ماژول برای انتقال داده های بسته (الگوهای دسترسی به حافظه را تعریف می کند)، یک Payload Executor، یک کنترل کننده مبتنی بر LiteDRAM (تمام منطق مورد نیاز برای DRAM را پردازش می کند، از جمله فعال سازی ردیف و به روز رسانی حافظه) و یک CPU VexRiscv. توسعه های پروژه تحت مجوز آپاچی 2.0 توزیع می شود. پلتفرم های مختلف FPGA از جمله Lattice ECP5، Xilinx Series 6، 7، UltraScale و UltraScale+ پشتیبانی می شوند.
منبع: opennet.ru