دور زدن مکانیزم های دفاعی MTE در آسیب پذیری های باینری

5 خرداد 1404 - خواندن 3 دقیقه - 26 بازدید

دور زدن مکانیزم های دفاعی MTE در آسیب پذیری های باینری

مقدمه

در موضوع بهره برداری از آسیب پذیری های باینری، یکی از چالش های اصلی، دور زدن مکانیزم های دفاعی است که در سطح سیستم عامل و سخت افزار توسعه داده شده اند. یکی از این مکانیزم ها، Memory Tagging Extension (MTE) است که به ویژه در پردازنده های ARM برای مقابله با آسیب پذیری های باینری طراحی شده است. این یادداشت به بررسی نحوه عملکرد MTE و روش های دور زدن آن می پردازد.

مکانیزم MTE

MTE به عنوان یک مکانیزم دفاعی سخت افزاری، برای هر شیء (obj) یک Key منحصر به فرد ایجاد می کند. این مکانیزم به طور خاص برای جلوگیری از انحراف اشاره گرها (Pointers) طراحی شده است.

ساختار Tag ها

ساختار Tag ها به صورت 64 بایت است که 4 بیت اولیه آن در سمت اشاره گر قرار دارد. این 4 بیت شامل یک مقدار تصادفی است که در طول فرآیند اشاره به obj، این مقدار تصدیق می شود. در صورت درست بودن این مقدار، دسترسی به شیء مجاز خواهد بود.

روش های دور زدن MTE

یکی از روش های دور زدن MTE، Leak شدن Tag در یک آدرس دیگر به واسطه ظرفیت حملات Cache Side-Channel است. با استفاده از این روش، مهاجم قادر است از حافظه Cache که امکان دسترسی سریع پردازنده به داده ها را فراهم می کند، سوءاستفاده کند.

Gadget Store-to-Load

مهاجم با تعریف یک Gadget Store-to-Load می تواند در زمان ذخیره یک بازه آدرس افست، به Tag Valid دسترسی پیدا کند. در زمان بارگذاری، این Tag می تواند برای اشاره گر دارای آسیب پذیری استفاده شود. این فرآیند به مهاجم این امکان را می دهد که از ضعف های موجود در سیستم بهره برداری کند و به اطلاعات حساس دسترسی یابد.


پس مکانیزم MTE به عنوان یک ابزار دفاعی در برابر آسیب پذیری های باینری، نقش مهمی در افزایش امنیت سیستم های مبتنی بر ARM ایفا می کند. با این حال، وجود روش های دور زدن مانند حملات Cache Side-Channel و استفاده از Gadget Store-to-Load، نشان دهنده این است که هیچ مکانیزم امنیتی کاملا بی نقص نیست.

این یادداشت به عنوان یک هشدار به جامعه امنیت سایبری و توسعه دهندگان نرم افزارها ارائه می شود تا به اهمیت بررسی و تقویت مکانیزم های دفاعی در برابر حملات پیچیده توجه بیشتری داشته باشند.