موضوع مقاله: چکش ردیفی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # چکش ردیفی | مقدمه: در این حالت احتمال نشت یا تغییر اطلاعات در ردیف‌های مجاور ردیفی که به‌طور مستقیم به آن دسترسی داریم وجود دارد. | ## بخش 1: چکش ردیفی | عدم ایزوله بودن سلول‌های حافظه DRAM نسبت به یکدیگر بخاطر تراکم بالای سلول در DRAMهای مدرن می‌باشد و می‌توان با یک سری الگوهای خاص دسترسی به حافظه به صورت سریع و متناوب چندین بار به یک ردیف از حافظه دسترسی داشت که این در حمله rowhammer باعث می‌شود سلول به اندازه کافی در یک بازه نشت اطلاعات داشته باشد. سابقه در RAM پویا(DRAM)، هر بیت از داده‌های ذخیره‌شده، یک سلول حافظه جداگانه را اشغال می‌کند که به صورت الکتریکی با یک خازن و یک ترانزیستور اجرا می‌شود. حالت شارژ خازن (شارژ شده یا دشارژ) همان چیزی است که معین می‌کند که آیا یک سلول حافظه "۱" یا "۰" به عنوان یک مقدار دودویی ذخیره می‌کند. تعداد بسیار زیادی از سلول‌های حافظه DRAM به مدارهای مجتمع متصل می‌شوند همراه با یک سری منطق اضافی که سلول‌ها را برای اهداف خواندن، نوشتن، و بازنویسی داده‌ها سازماندهی می‌کند. سلول‌های حافظه (مربع‌های آبی در تصویر) بیشتر به شکل ماتریس‌ها سازماندهی و از طریق سطرها و ستون‌ها آدرس دهی می‌شوند. یک آدرس حافظه که برای یک ماتریس استفاده می‌شود به آدرس سطر و ستون تقسیم می‌شود، که به وسیله آدرس سطر و سپس آدرس ستون به ترتیب پردازش می‌شوند (در تصویر، به ترتیب مستطیل‌های عمودی و افقی سبز نشان داده شده‌است). یک آدرس ردیف، ردیف را برای یک عملیات خواندن انتخاب می‌کند (به عنوان فعال‌سازی ردیف نیز شناخته می‌شود)، بیت از تمام سلولهای موجود در ردیف به تقویت کننده‌های حس منتقل می‌شود که بافر ردیف را تشکیل می‌دهند (مربع‌های قرمز در تصویر) که در آن بیت دقیق با استفاده از آدرس ستون انتخاب می‌شود. در نتیجه، عملیات‌های خواندن دارای یک ماهیت مخرب هستند، زیرا طراحی DRAM به سلول‌های حافظه نیاز دارد تا پس از آنکه مقادیر آن‌ها با انتقال بار سلول به بافر سطر خوانده شد، بازنویسی شوند. عملیات نوشتن آدرس‌ها را به روشی مشابه رمزگشایی می‌کند، اما در نتیجه دراین طراحی باید تمام ردیف‌ها بازنویسی شوند تا مقدار یک بیت واحد تغییر یابد. در نتیجه دیگر طراحی، حافظه DRAM مستعد تغییرات تصادفی در داده‌های ذخیره‌شده‌است که به خطاهای حافظه نرم و ویژگی پرتوه‌ای کیهانی و دلایل دیگر شناخته می‌شوند. تکنیک‌های مختلفی وجود دارند که خطاهای حافظه نرم را خنثی و قابلیت اطمینان DRAMرا بهبود می‌بخشد که حافظه تصحیح خطا (ECC)و انواع پیشرفته آن (مانند حافظه lockstep)اغلب مورد استفاده قرار می‌گیرند. مرور افزایش تراکم مدارهای مجتمع DRAM (ICs) باعث شده‌است که سلولهای حافظه کوچکتر از نظر فیزیکی قادر به ذخیره بارهای کوچکتر باشند، که این منجر به کاهش حاشیه نویز عملیاتی، افزایش سرعت تعامل الکترومغناطیسی بین سلولهای حافظه و احتمال از دست رفتن بیشتر داده‌ها می‌شود. در نتیجه، خطاهای اختلال مشاهده می‌شود که توسط سلول‌هایی که در عملکرد یکدیگر دخالت می‌کنند ایجاد می‌شوند و به صورت تغییرات تصادفی در مقادیر بیت‌های ذخیره‌شده در سلول‌های حافظه قرار می‌گیرند. آگاهی از خطاهای اختلال به اوایل دهه ۱۹۷۰ و اینتل ۱۱۰۳ بعنوان اولین DRAM در دسترس جامعه بازمی‌گردد؛ از آن زمان سازندگان DRAMها تکنیک‌های مختلفی را برای مقابله با خطاهای اختلال، مانند بهبود انزوای بین سلول‌ها و انجام آزمایش تولید بکار گرفته‌اند. با این حال، محققان در یک تجزیه و تحلیل در سال ۲۰۱۴ ثابت کردند که تراشه‌های DDR3 SDRAM تجاری موجود در سال‌های ۲۰۱۲ و ۲۰۱۳ مستعد خطاهای مزاحم هستند، در حالی که با استفاده از اصطلاح چکش ردیف برای نامگذاری عوارض جانبی مرتبط با آن که منجر به مشاهده تلنگرهای بیت شده‌است در حالی که از چکش ردیفی برای نامگذاری اثر جانبی مربوطه استفاده می‌شود که منجر به پرش بیت می‌شود. در درجه اول به تراکم بالای سلول‌های حافظه و نتایج تعاملات مرتبط بین سلول‌ها نسبت داده می‌شود، در حالی که فعالسازی‌های سریع DRAM به عنوان علت اصلی تعیین شده‌است. | ## بخش 2: چکش ردیفی | فعال سازی‌های مکرر ردیف باعث نوسان ولتاژ در خطوط انتخاب ردیف مرتبط می‌شود، که مشاهده شده‌است که نرخ‌های تخلیه بیش از حد مجاز در خازن‌ها متعلق به ردیف‌های حافظه مجاور است، که ردیف‌های قربانی نامیده می‌شوند. اگر سلولهای حافظه آسیب دیده قبل از اینکه شارژ زیادی از دست ندهند تجدید نشوند، خطاهای مزاحم رخ می‌دهد. آزمایش‌ها نشان می‌دهند که یک خطای اختلال ممکن است پس از انجام هر گونه نمایش در حدود ۱۳۹٬۰۰۰ دسترسی‌های حافظه بعدی (با تخلیه حافظه نهان) مشاهده شود و این که یک سلول حافظه در هر ۱۷۰۰ سلول ممکن است در معرض خطر باشد. این تست‌ها همچنین نشان می‌دهند که میزان خطای اختلال به‌طور قابل‌توجهی با افزایش دمای محیط تحت‌تاثیر قرار نمی‌گیرد، در حالی که به محتوای واقعی DRAM بستگی دارد، زیرا الگوهای بیت خاصی منجر به خطای اختلال در دماهای بالاتر می‌شود. در تصویر ارائه شده در این بخش، این نوع می‌تواند هر دو ردیف زرد را با هدف القاء پرش‌های بیت در ردیف بنفش فعال کند، که در این حالت، ردیف قربانی خواهد بود. آزمایشات نشان می‌دهد که این روش ممکن است منجر به میزان قابل توجهی بالاتر از خطاهای مزاحم شود، در مقایسه با نوعی که تنها یکی از ردیف‌های DRAM همسایه ردیف قربانی را فعال می‌کند. کاهش روش‌های مختلف برای تشخیص موفق، پیش‌گیری، اصلاح یا کاهش اثر چکش ردیفی وجود دارد. آزمایشات نشان می‌دهد که راه حل‌های ساده ECC، ارائه قابلیت‌های اصلاح یک خطا و قابلیت تشخیص دو خطا (SEC DED)، قادر به اصلاح یا تشخیص همه خطاهای مزاحم مشاهده شده نیستند زیرا برخی از آنها شامل بیش از دو بیت پرش در هر کلمه حافظه می‌شوند. یک راه‌حل موثرتر دوباره نویسی بیشتر حافظه با فاصله‌های متناوب کوتاه از ۶۴ میلی ثانیه معمولی است. برخی از فروشندگان به آپدیت‌های سیستم عامل می‌پردازند که این نوع کاهش را پیاده‌سازی می‌کنند. یکی از اقدامات پیچیده‌تر پیشگیری ردیف‌های حافظه که غالباً به آنها دسترسی داریم را پیدا می‌کنند و فعالانه ردیف‌های همسایه آن‌ها را بازنویسی می‌کند. هنگامی که با DIMMs مورد استفاده قرار می‌گیرد، این پردازنده‌ها با استفاده از افت پیش‌فرض، در دو برابر فرکانس معمول، که منجر به تأخیر دسترسی حافظه بالاتر می‌شوند و ممکن است پهنای باند حافظه را تا ۴–۲٪ کاهش دهند، بازسازی می‌کنند. از طریق داخلی، TRR با شمارش تعداد فعال سازی‌های ردیف و مقایسه آن در برابر تعداد پیش تعریف شده حداکثر فعال سازی تراشه (MAC) و مقادیر حداکثر فعال کننده پنجره (tMAW)، ردیف‌های قربانی احتمالی را شناسایی می‌کند و این سطرها را برای جلوگیری از پرش بیت بازنویسی می‌کند. مقدار MAC حداکثر تعداد کل فعال سازی‌های ردیفی است که ممکن است در یک بازه زمانی مشخص بر روی یک ردیف DRAM خاص مشاهده شود که مساوی یا کوتاه‌تر از زمان tMAW زمان قبل از ردیف‌های همسایه آن به عنوان ردیف‌های قربانی است. اگر مجموع فعال سازی‌های ردیف برای دو ردیف همسایه خود به حد MAC برسد در پنجره زمان tMAW می‌تواند TRR را نیز به عنوان یک ردیف قربانی مشخص کند. نسخه ۵٫۰ از نرم‌افزار تشخیص حافظه MemTest86، که در ۳ دسامبر ۲۰۱۳ منتشر شد، یک تست چکش ردیفی را اضافه کرد که بررسی می‌کند که آیا RAM کامپیوتر مستعد خطاهای آشفتگی است یا نه. | ## بخش 3: چکش ردیفی | مفاهیم محافظت از حافظه، به عنوان روشی برای جلوگیری از دسترسی فرایندها به حافظه که به هریک از آنها اختصاص نیافته‌است، یکی از مفاهیم پشت اکثر سیستم عامل‌های مدرن است. با استفاده از حفاظت از حافظه در ترکیب با مکانیزم‌های مرتبط با امنیت مانند حلقه‌های محافظ، امکان جداسازی امتیاز بین فرایندها وجود دارد، که در آن برنامه‌ها و سیستم‌های کامپیوتری به بخش‌هایی محدود می‌شوند که نیاز دارند یک کار خاص را انجام دهند. خطاهای اخلال (توضیح داده‌شده در بخش بالا) به‌طور مؤثر لایه‌های مختلف حفاظت از حافظه را در سطح بسیار پایین سخت‌افزار شکست می‌دهد، عملاً ایجاد یک نوع بردار حمله منحصر به فرد که به فرایندها اجازه می‌دهد تا محتویات بخش‌های اختیاری حافظه اصلی را با دستکاری مستقیم سخت‌افزار اصلی تغییر دهند. در مقایسه، بردارهای حمله مرسوم مانند سرریزهای بافر با هدف سوء استفاده از مکانیسم‌های محافظت در سطح نرم‌افزار، با سوء استفاده از اشتباهات مختلف برنامه‌نویسی برای دستیابی به تغییرات محتوای اصلی حافظه اصلی غیرقابل دسترسی هستند.Murat Balaban (June 6, 2009). بهره‌برداری تحقیقات اولیه در مورد اثر چکش ردیفی، که در ژوئن سال ۲۰۱۴ منتشر شد، ماهیت خطاهای مزاحم را تشریح کرد و پتانسیل ساخت حمله را نشان داد، اما هیچ نمونه ای از سوء استفاده از امنیت کاری ارائه نکرد. مقاله تحقیقاتی بعدی در اکتبر ۲۰۱۴ به وجود هر گونه مسایل مربوط به امنیت ناشی از اثر چکش ردیفی هیچ اشاره ای نکرد. در تاریخ ۹ مارس ۲۰۱۵، پروژه Zero گوگل دو بهره‌برداری از امتیازات کاری را براساس اثر چکش ردیفی را با ایجاد ماهیت بهره‌برداری خود در معماری x86-64 فاش کرد. دومین بهره‌برداری که توسط پروژه صفر عرضه شد، به عنوان یک فرایند لینوکس بر روی معماری x۸۶–۶۴ اجرا می‌شود و اثر چکش ردیف را برای دستیابی نامحدود به تمام حافظه فیزیکی نصب‌شده در یک کامپیوتر، بهره‌برداری می‌کند. با استفاده از خطاهای مزاحم با پاشش حافظه، این بهره‌برداری قادر به تغییر ورودی‌های جدول صفحه (PTE) است که توسط سیستم حافظه مجازی برای نقشه‌برداری آدرس‌های مجازی به آدرس‌های فیزیکی مورد استفاده قرار می‌گیرد، که نتیجه آن سوءاستفاده از دسترسی نامحدود حافظه می‌باشد. با توجه به ماهیت آن و عدم توانایی معماری x86-64 در ایجاد clflush یک دستورالعمل ماشین ممتاز، این بهره‌برداری به سختی قابل استفاده در رایانه‌هایی است که از مکانیزم‌های جلوگیری از چکش ردیفی داخلی استفاده نمی‌کنند. Project Zero هنگام آزمایش قابلیت استفاده از سوء استفاده، متوجه شد که حدود نیمی از ۲۹ لپ تاپ آزمایش شده دارای خطاهای مزاحم هستند، در حالی که برخی از آنها در کمتر از پنج دقیقه کپی کردن با چکش ردیفی در لپ تاپ‌های آسیب‌پذیر رخ می‌دهند. لپ تاپ‌های آزمایش شده بین سال‌های ۲۰۱۰ و ۲۰۱۴ ساخته شده‌اند و از حافظه غیر ECC DDR3 استفاده می‌کنند. به جای تکیه بر دستورالعمل clflush برای انجام فلاش‌های حافظه نهان، این روش با ایجاد سرعت بسیار بالایی از تخلیه حافظه نهان با استفاده از الگوهای دسترسی دقیق به حافظه، به حافظه غیرمشخص می‌رسد. اگرچه سیاست‌های جایگزینی حافظه پنهان بین پردازنده‌ها متفاوت است، این رویکرد با بکارگیری الگوریتم استراتژی تخلیه حافظه پنهان تطبیقی بر اختلافات معماری غلبه می‌کند. اثبات مفهوم این رویکرد هم به عنوان اجرای کد بومی و هم به عنوان اجرای جاوا اسکریپت محض که در فایرفاکس ۳۹ اجرا می‌شود، ارایه شده‌است. این آسیب‌پذیری به عنوان CVE-2016-6728 اذعان شد و وصله ای در مدت یک ماه توسط گوگل منتشر شد تا اثر خود را کاهش دهد، اما به دلیل ماهیت کلی اجرای‌های احتمالی حمله، وصله نرم‌افزاری کارآمد دشوار است که بتواند با اطمینان آن را پیاده‌سازی کند. | ## جمع‌بندی | این کار مبتنی بر روش تجربی مبتنی بر تزریق خطا است، و به حالت‌های هدف حمله عمومی تعمیم داده شد و چند حالت هدف کاربردی پیدا کرد که قبلاً ناشناخته بودند.