اپل

یک حمله سخت‌افزاری جدید به نام PACMAN علیه چیپست های پردازنده M1 اپل نشان داده شده است که به‌طور بالقوه یک عامل مخرب را با توانایی اجرای کد دلخواه در سیستم‌های macOS مسلح می‌کند.

جوزف راویچاندران، وئون تائک نا، جی لانگ و منجیا یان، محققان MIT در مقاله‌ای جدید دراین‌باره می‌گویند[۱]: این حمله از “حملات اجرای speculative برای دور زدن مکانیسم مهم حفاظت از حافظه یا همان احراز هویت اشاره‌گر ARM که یک ویژگی امنیتی است که برای اعمال یکپارچگی اشاره‌گر استفاده می‌شود، بهره می‌برد.”

نکته نگران‌کننده‌تر این است که این محققان افزودند: «درحالی‌که مکانیسم‌های سخت‌افزاری مورداستفاده توسط PACMAN را نمی‌توان با ویژگی‌های نرم‌افزاری وصله کرد، اما باگ‌های تخریب حافظه ممکن است ایجاد شوند».

این آسیب‌پذیری ریشه در کدهای تأیید اعتبار اشاره‌گر (PACs) دارد[۲]، یک خط دفاعی معرفی‌شده در معماری arm64e که هدف آن شناسایی و ایمن‌سازی در برابر تغییرات غیرمنتظره در اشاره‌گرها[۳] یا اشیایی که یک آدرس حافظه را ذخیره می‌کنند، در حافظه است.

هدف PACها حل یک مشکل رایج در امنیت نرم‌افزار، مانند آسیب‌پذیری‌های تخریب حافظه است که اغلب با بازنویسی داده‌های کنترلی در حافظه (یعنی اشاره‌گرها) برای هدایت اجرای کد به یک مکان دلخواه که توسط مهاجم کنترل می‌شود، مورد بهره‌برداری قرار می‌گیرند.

درحالی‌که استراتژی‌هایی مانند Address Space Layout Randomization (ASLR) برای افزایش دشواری انجام حملات سرریز بافر ابداع شده است[۴]، هدف PAC ها تعیین اعتبار اشاره‌گرها با حداقل اندازه و تأثیر عملکرد است، و به‌طور مؤثر مانع از ایجاد اشاره‌گر معتبر برای استفاده در یک بهره‌بردار توسط دشمن می‌شود.

این با محافظت از یک اشاره‌گر با یک هش رمزنگاری – به نام کد تأیید اعتبار اشاره‌گر (PAC) – برای اطمینان از یکپارچگی آن به دست می‌آید. اپل PAC ها را به شرح زیر توضیح می‌دهد[۵]:

احراز هویت اشاره‌گر با ارائه یک دستورالعمل ویژه CPU برای اضافه کردن یک امضای رمزنگاری – یا PAC – به بیت‌های مرتبه بالای استفاده‌نشده از یک اشاره‌گر، قبل از ذخیره کردن اشاره‌گر کار می‌کند. دستورالعمل دیگری پس از خواندن نشانگر از حافظه، امضا را حذف و احراز هویت می‌کند. هرگونه تغییر در مقدار ذخیره‌شده بین نوشتن و خواندن، امضا را باطل می‌کند. CPU شکست احراز هویت را به‌عنوان خرابی حافظه تفسیر می‌کند و یک بیت مرتبه بالا را در نشانگر تنظیم می‌کند که نشانگر را نامعتبر می‌کند و باعث ازکارافتادن برنامه می‌شود.

اپل

اما PACMAN “موانع اولیه برای انجام حملات control-flow hijacking روی یک پلت فرم محافظت‌شده با استفاده از احراز هویت اشاره‌گر را از بین می‌برد.” خرابی حافظه و speculative execution را برای دور زدن ویژگی امنیتی ترکیب می‌کند[۶] و «نتایج تأیید PAC را از طریق کانال‌های جانبی ریزمعماری بدون ایجاد هرگونه خرابی» فاش می‌کند.

روش حمله، به‌طور خلاصه، تمایز بین یک PAC صحیح و هش نادرست را ممکن می‌سازد، و به یک بازیگر بد اجازه می‌دهد تا مقدار صحیح PAC را در حین سرکوب خرابی‌ها و ایجاد یک حمله control-flow hijacking روی یک برنامه یا سیستم‌عامل دارای PA فعال قربانی، مقدار صحیح PAC را brute-force کند.

پیشگیری از خرابی، به‌نوبه خود، موفقیت‌آمیز است زیرا هر مقدار PAC با بهره‌برداری از یک کانال جانبی مبتنی بر زمان‌بندی از طریق translation look-aside buffer  یا همان TLB با استفاده از حمله Prime+Probe، حدس زده می‌شود[۷-۹].

آسیب‌پذیری‌های speculative execution، همان‌طور که در مورد Spectre و Meltdown مشاهده شد، اجرای غیرقانونی را به سلاح تبدیل می‌کند[۱۰]، تکنیکی که برای ایجاد بهبود عملکرد در ریزپردازنده‌های مدرن با پیش‌بینی[۱۱] محتمل‌ترین مسیر جریان اجرای برنامه استفاده می‌شود.

بااین‌حال، شایان‌ذکر است که این مدل تهدید فرض می‌کند که قبلاً یک آسیب‌پذیری فساد حافظه قابل بهره‌برداری در یک برنامه قربانی (کرنل) وجود دارد، که به‌نوبه خود به مهاجم غیرمجاز (یک برنامه مخرب) اجازه می‌دهد تا کد سرکش را به مکان‌های حافظه خاصی در فرآیند قربانی تزریق کند.

محققان نتیجه گرفتند: «این حمله پیامدهای مهمی برای طراحانی دارد که به دنبال پیاده‌سازی پردازنده‌های آینده دارای تأیید اعتبار اشاره‌گر هستند، و پیامدهای گسترده‌ای برای امنیت اصول اولیه یکپارچگی control-flow در آینده دارد».

 

منابع

[۱] https://pacmanattack.com

[۲] https://lwn.net/Articles/718888

[۳] https://en.wikipedia.org/wiki/Pointer_(computer_programming)

[۴] https://en.wikipedia.org/wiki/Address_space_layout_randomization

[۵] https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication

[۶] https://thehackernews.com/2021/05/new-spectre-flaws-in-intel-and-amd-cpus.html

[۷] https://apa.aut.ac.ir/?p=8880

[۸] https://en.wikipedia.org/wiki/Translation_lookaside_buffer

[۹] https://thehackernews.com/2021/03/new-browser-attack-allows-tracking.html

[۱۰] https://en.wikipedia.org/wiki/Out-of-order_execution

[۱۱] https://en.wikipedia.org/wiki/Branch_predictor

[۱۲] https://thehackernews.com/2022/06/mit-researchers-discover-new-flaw-in.html