گروهی از محققان دانشگاه صنعتی گراتس (اتریش)، که پیش از این به خاطر توسعه حملات MDS، NetSpectre، Throwhammer و ZombieLoad شناخته میشدند، یک روش حمله کانال جانبی جدید (CVE-2021-3714) علیه موتور Memory-Deduplication منتشر کردهاند. این حمله به فرد اجازه میدهد تا وجود دادههای خاص در حافظه را تعیین کند، نشت حافظه بایت به بایت را سازماندهی کند یا طرحبندی حافظه را برای دور زدن تصادفیسازی مبتنی بر آدرس (ASLR) تعیین کند. روش جدید با حملات قبلی نشان داده شده به موتور deduplication متفاوت است، زیرا این حمله از یک میزبان خارجی با استفاده از تغییرات در زمان پاسخ به درخواستهای ارسال شده توسط مهاجم بر روی پروتکلهای HTTP/1 و HTTP/2 به عنوان معیار انجام میشود. امکانسنجی این حمله برای سرورها بر اساس ... نشان داده شد. Linux и Windows.
حملات به مکانیزم حذف دادههای تکراری حافظه، از تفاوت در زمان پردازش نوشتن به عنوان کانالی برای نشت اطلاعات در موقعیتهایی که تغییر دادهها منجر به شبیهسازی یک صفحه حافظه حذف دادههای تکراری با استفاده از مکانیزم کپی-هنگام-نوشتن (COW) میشود، سوءاستفاده میکنند. در حین عملیات، هسته صفحات حافظه یکسان را از فرآیندهای مختلف شناسایی کرده و آنها را ادغام میکند و صفحات حافظه یکسان را به یک ناحیه واحد از حافظه فیزیکی نگاشت میکند تا فقط یک کپی ذخیره شود. هنگامی که یک فرآیند سعی در تغییر دادههای مرتبط با صفحات حذف دادههای تکراری دارد، یک استثنا (خطای صفحه) رخ میدهد و مکانیزم کپی-هنگام-نوشتن به طور خودکار یک کپی جداگانه از صفحه حافظه ایجاد کرده و آن را به فرآیند اختصاص میدهد. فرآیند کپی کردن زمان بیشتری میبرد، که ممکن است نشان دهنده تغییر در دادههایی باشد که با فرآیند دیگری همپوشانی دارند.
محققان نشان دادهاند که تأخیرهای ناشی از مکانیسم COW نه تنها به صورت محلی، بلکه با تجزیه و تحلیل تغییرات زمان پاسخ در شبکه نیز قابل تشخیص هستند. روشهای متعددی برای تعیین محتوای حافظه از یک میزبان از راه دور با تجزیه و تحلیل زمان اجرای درخواستها بر روی پروتکلهای HTTP/1 و HTTP/2 پیشنهاد شده است. برای ذخیره الگوهای انتخاب شده، از برنامههای وب استاندارد استفاده میشود که اطلاعات دریافتی در درخواستها را در حافظه ذخیره میکنند.
اصل کلی حمله به پر کردن جای خالی خلاصه میشود. سرور صفحات حافظه با دادههایی که به طور بالقوه محتوای یک صفحه حافظه موجود در سرور را کپی میکنند. سپس مهاجم منتظر میماند تا هسته، حذف دادههای تکراری و ادغام صفحه حافظه را انجام دهد، پس از آن دادههای تکراری کنترلشده را تغییر داده و زمان پاسخ را برای تعیین موفقیت حمله ارزیابی میکند.

در طول آزمایشها، حداکثر نرخ نشت اطلاعات در طول حمله از طریق شبکه جهانی ۳۴.۴۱ بایت در ساعت و در طول حمله از طریق شبکه محلی ۳۰۲.۱۶ بایت در ساعت بود که نسبت به سایر روشهای استخراج دادهها از طریق کانالهای جانبی سریعتر است (به عنوان مثال، در طول حمله NetSpectre، نرخ انتقال داده ۷.۵ بایت در ساعت است).
سه نوع حملهی عملی پیشنهاد شده است. نوع اول امکان شناسایی دادهها در حافظه را فراهم میکند. سرورهای وبکه از Memcached استفاده میکند. این حمله شامل بارگذاری مجموعه دادههای خاص در فضای ذخیرهسازی Memcached، پاک کردن یک بلوک deduplicated، بازنویسی همان عنصر و ایجاد شرایط برای یک کپی COW با تغییر محتوای بلوک است. در طول آزمایش با Memcached، تعیین نسخه libc نصب شده روی سیستم در حال اجرا در یک ماشین مجازی در ۱۶۶.۵۱ ثانیه امکانپذیر بود.
روش دوم به محققان این امکان را داد تا با بازسازی بایت به بایت محتوا، محتوای رکوردها را در سیستم مدیریت پایگاه داده MariaDB (DBMS) با استفاده از ذخیرهسازی InnoDB کشف کنند. این حمله با ارسال درخواستهای اصلاحشدهی ویژه که باعث عدم تطابق تک بایتی در صفحات حافظه میشوند و تجزیه و تحلیل زمان پاسخ برای تعیین اینکه آیا حدس در مورد محتوای بایت درست بوده است یا خیر، انجام میشود. نرخ نشت این نوع کم است و هنگام حمله از یک شبکه محلی به ۱.۵ بایت در ساعت میرسد. مزیت این روش این است که میتوان از آن برای بازیابی محتوای ناشناخته حافظه استفاده کرد.
نوع سوم به مهاجم اجازه میداد تا در عرض چهار دقیقه مکانیسم حفاظتی KASLR را به طور کامل دور بزند و اطلاعاتی در مورد آفست حافظه تصویر هسته ماشین مجازی به دست آورد، حتی زمانی که آدرس آفست در صفحه حافظهای قرار دارد که سایر دادههای آن بدون تغییر باقی مانده است. این حمله از میزبانی واقع در ۱۴ هاپ دورتر از سیستم هدف انجام شد. انتظار میرود نمونههای کد برای حملات ارائه شده در GitHub منتشر شود.
منبع: opennet.ru
