تیمی از محققان دانشگاه آزاد آمستردام یک جعبه ابزار Kasper را منتشر کرده اند که برای شناسایی قطعه کد در هسته لینوکس طراحی شده است که می تواند برای سوء استفاده از آسیب پذیری های کلاس Spectre ناشی از اجرای کدهای حدس زده بر روی پردازنده استفاده شود. کد منبع این جعبه ابزار تحت مجوز آپاچی 2.0 توزیع شده است.
به یاد بیاوریم که برای انجام حملاتی مانند Spectre v1، که تعیین محتوای حافظه را ممکن میسازد، وجود توالی خاصی از دستورات (گجتها) در کد ممتاز مورد نیاز است که منجر به اجرای گمانهزنی دستورالعملها میشود. . برای اهداف بهینه سازی، پردازنده شروع به اجرای چنین ابزارهایی در حالت حدس و گمان می کند، سپس تشخیص می دهد که پیش بینی انشعاب موجه نبوده و عملیات را به حالت اولیه خود برمی گرداند، اما داده های پردازش شده در طول اجرای حدسی به حافظه پنهان و بافرهای ریزمعماری ختم می شود و برای بازیابی از آنها با استفاده از روش های مختلف تعیین داده های باقی مانده از طریق کانال های شخص ثالث در دسترس است.
ابزارهای موجود قبلی برای اسکن ابزارهای آسیبپذیری Spectre، بر اساس جستجوی الگوهای معمولی، سطح بسیار بالایی از موارد مثبت کاذب را نشان میدهند، در حالی که بسیاری از ابزارهای واقعی را از دست دادهاند (آزمایشها نشان میدهند که 99 درصد از ابزارهای شناسایی شده توسط چنین ابزارهایی نمیتوانند برای حملات استفاده شوند. ، و 33 درصد از ابزارهای فعال که می توانند منجر به حمله شوند مورد توجه قرار نگرفتند).
برای بهبود کیفیت شناسایی گجتهای مشکلساز، کسپر آسیبپذیریهایی را مدلسازی میکند که مهاجم میتواند در هر مرحله از انجام حملات کلاس Spectre از آنها سوء استفاده کند - مشکلاتی که اجازه کنترل دادهها را میدهد مدلسازی میشوند (به عنوان مثال، جایگزینی دادههای مهاجم در ساختارهای ریزمعماری برای تأثیرگذاری بر اجرای گمانهزنی بعدی با استفاده از حملات کلاس LVI)، دسترسی به اطلاعات محرمانه (به عنوان مثال، هنگام فراتر رفتن از مرزهای بافر یا استفاده از حافظه پس از آزاد شدن) و افشای اطلاعات محرمانه (به عنوان مثال، با تجزیه و تحلیل وضعیت حافظه پنهان پردازنده یا استفاده از روش MDS).
هنگام آزمایش، هسته با کتابخانه های زمان اجرا Kasper مرتبط می شود و در سطح LLVM اجرا می شود. فرآیند بررسی، اجرای کد گمانهزنی را شبیهسازی میکند، که با استفاده از مکانیزم بازیابی نقطه بازرسی، که بهطور خاص یک شاخه کد پیشبینی نادرست را اجرا میکند، و سپس به حالت اولیه قبل از شروع شعبه برمیگردد. کسپر همچنین تلاش میکند تا آسیبپذیریهای نرمافزاری و سختافزاری مختلف را شبیهسازی کند، تأثیرات معماری و ریزمعماری را تجزیه و تحلیل کند و آزمایشهای فازی اقدامات احتمالی مهاجم را انجام دهد. برای تجزیه و تحلیل جریان های اجرا، پورت DataFlowSanitizer برای هسته لینوکس و برای تست فازی از نسخه اصلاح شده بسته syzkaller استفاده می شود.
اسکن هسته لینوکس با استفاده از Kasper، 1379 ابزار ناشناخته قبلی را شناسایی کرد که به طور بالقوه منجر به نشت داده ها در طول اجرای حدس و گمان دستورالعمل ها می شود. اشاره شده است که شاید فقط برخی از آنها ممکن است مشکلات واقعی ایجاد کنند، اما برای نشان دادن اینکه یک خطر واقعی وجود دارد، و نه فقط یک خطر تئوری، یک نمونه اولیه از یک اکسپلویت برای یکی از قطعات کد مشکل ساز ایجاد شد که منجر به اطلاعات می شود. نشت از حافظه هسته
منبع: opennet.ru