آسیب پذیری در مکانیسم اجرای دستورات گمانه زنی پردازنده های AMD

پروژه Grsecurity جزئیات و نمایشی از روش حمله برای آسیب‌پذیری جدید (CVE-2021-26341) در پردازنده‌های AMD را منتشر کرده است که مربوط به اجرای گمانه‌زنی دستورالعمل‌ها پس از عملیات رو به جلو بدون قید و شرط است. اگر حمله موفقیت آمیز باشد، آسیب پذیری اجازه می دهد تا محتویات مناطق حافظه دلخواه تعیین شود. به عنوان مثال، محققان اکسپلویتی را آماده کرده اند که به آنها امکان می دهد با اجرای کدهای غیرمجاز در زیرسیستم هسته ePBF، طرح آدرس را تعیین کرده و مکانیسم حفاظتی KASLR (تصادفی سازی حافظه هسته) را دور بزنند. دیگر سناریوهای حمله را نمی توان رد کرد که می تواند منجر به نشت محتوای حافظه هسته شود.

این آسیب‌پذیری به شما امکان می‌دهد شرایطی ایجاد کنید که تحت آن، پردازنده، در طول اجرای پیش‌دستانه، دستور را بلافاصله پس از دستور پرش در حافظه (SLS، Straight Line Speculation) به صورت فرضی پردازش کند. علاوه بر این، چنین بهینه‌سازی نه تنها برای عملگرهای پرش شرطی، بلکه برای دستورالعمل‌هایی که مستلزم پرش بدون قید و شرط مستقیم هستند، مانند JMP، RET و CALL نیز کار می‌کند. با پیروی از دستورالعمل های پرش بدون قید و شرط، داده های دلخواه که برای اجرا در نظر گرفته نشده اند را می توان قرار داد. پس از تعیین اینکه یک شعبه شامل اجرای دستور بعدی نمی شود، پردازنده به سادگی حالت را به عقب برمی گرداند و اجرای فرضی را نادیده می گیرد، اما ردی از اجرای دستورالعمل در حافظه پنهان مشترک باقی می ماند و برای تجزیه و تحلیل با استفاده از تکنیک های بازیابی کانال جانبی در دسترس است.

مانند سوء استفاده از آسیب‌پذیری Spectre-v1، این حمله مستلزم وجود توالی‌های معینی از دستورالعمل‌ها (ابزارها) در هسته است که منجر به اجرای گمانه‌زنی می‌شود. مسدود کردن یک آسیب‌پذیری در این مورد به شناسایی چنین ابزارهایی در کد و افزودن دستورالعمل‌های اضافی به آن‌ها منجر می‌شود که اجرای گمانه‌زنی را مسدود می‌کند. شرایط اجرای حدس و گمان نیز می تواند توسط برنامه های غیرمجاز در حال اجرا در ماشین مجازی eBPF ایجاد شود. برای مسدود کردن توانایی ساخت ابزارها با استفاده از eBPF، توصیه می‌شود دسترسی غیرمجاز به eBPF در سیستم را غیرفعال کنید ("sysctl -w kernel.unprivileged_bpf_disabled=1").

این آسیب‌پذیری بر پردازنده‌های مبتنی بر ریزمعماری Zen1 و Zen2، از جمله نسل اول و دوم پردازنده‌های AMD EPYC و AMD Ryzen Threadripper، و همچنین AMD Ryzen 2000/3000/4000/5000، AMD Athlon، AMD Athlon Threa، تاثیر می‌گذارد. پردازنده های سری PRO و APU A. برای جلوگیری از اجرای گمانه زنی دستورالعمل ها، توصیه می شود پس از انجام عملیات شاخه (RET، JMP، CALL) دستورالعمل های INT3 یا LFENCE را فراخوانی کنید.

منبع: opennet.ru

اضافه کردن نظر