Linux yadrosida spekulyativ kodlarni bajarish muammolari uchun skaner Kasper endi mavjud

Amsterdam Erkin universiteti tadqiqotchilari jamoasi Linux yadrosidagi kod parchalarini aniqlash uchun moʻljallangan Kasper asboblar toʻplamini nashr etdi, undan protsessorda spekulyativ kod bajarilishi natijasida kelib chiqqan Spectre-sinf zaifliklaridan foydalanish mumkin. Asboblar to'plamining manba kodi Apache 2.0 litsenziyasi ostida tarqatiladi.

Eslatib o'tamiz, Spectre v1 kabi xotira tarkibini aniqlash imkonini beruvchi hujumlarni amalga oshirish uchun imtiyozli kodda buyruqlarning spekulyativ bajarilishiga olib keladigan ma'lum ketma-ket buyruqlar (gadjetlar) mavjudligi talab qilinadi. . Optimallashtirish maqsadida protsessor bunday gadjetlarni spekulyativ rejimda ishga tushira boshlaydi, so‘ngra filial bashorati asoslanmaganligini aniqlaydi va operatsiyalarni asl holatiga qaytaradi, ammo spekulyativ bajarish jarayonida qayta ishlangan ma’lumotlar kesh va mikroarxitektura buferlarida tugaydi va uchinchi tomon kanallari orqali qoldiq ma'lumotlarni aniqlashning turli usullari yordamida ulardan olish mumkin.

Gadjetlarni skanerlash uchun ilgari mavjud bo‘lgan Spectre zaifligi uchun odatiy naqshlarni qidirishga asoslangan vositalar juda yuqori darajadagi noto‘g‘ri pozitivlarni ko‘rsatdi, shu bilan birga ko‘plab haqiqiy gadjetlar etishmayotgan edi (tajribalar shuni ko‘rsatdiki, bunday vositalar bilan aniqlangan gadjetlarning 99% hujumlar uchun ishlatib bo‘lmaydi). , va hujumga olib kelishi mumkin bo'lgan ishlaydigan gadjetlarning 33 foizi e'tiborga olinmagan).

Muammoli gadjetlarni aniqlash sifatini yaxshilash uchun Kasper tajovuzkor Spectre sinfidagi hujumlarni amalga oshirishning har bir bosqichida foydalanishi mumkin bo'lgan zaifliklarni modellashtiradi - ma'lumotlarni boshqarish imkonini beruvchi muammolar modellashtiriladi (masalan, tajovuzkor ma'lumotlarini mikroarxitektura tuzilmalariga almashtirish yordamida keyingi spekulyativ bajarilishiga ta'sir qilish). LVI sinfidagi hujumlar), maxfiy ma'lumotlarga kirish (masalan, bufer chegaralaridan tashqariga chiqish yoki xotiradan bo'shatilgandan so'ng foydalanish) va maxfiy ma'lumotlarni sizib chiqish (masalan, protsessor keshining holatini tahlil qilish yoki MDS usuli yordamida).

Linux yadrosida spekulyativ kodlarni bajarish muammolari uchun skaner Kasper endi mavjud

Sinov paytida yadro Kasper ish vaqti kutubxonalari va LLVM darajasida ishlaydigan tekshiruvlar bilan bog'lanadi. Tekshiruv jarayoni spekulyativ kod bajarilishini taqlid qiladi, tekshirish punkti-tiklash mexanizmi yordamida amalga oshiriladi, bu noto'g'ri prognoz qilingan kod filialini maxsus bajaradi va keyin filial boshlanishidan oldin asl holatiga qaytariladi. Kasper, shuningdek, turli xil dasturiy ta'minot va apparat zaifliklarini simulyatsiya qilishga harakat qiladi, arxitektura va mikroarxitektura effektlarining ta'sirini tahlil qiladi va mumkin bo'lgan tajovuzkor harakatlarining noaniq testini amalga oshiradi. Amalga oshirish oqimlarini tahlil qilish uchun Linux yadrosi uchun DataFlowSanitizer porti ishlatiladi va fuzz test uchun syzkaller paketining o'zgartirilgan versiyasi ishlatiladi.

Linux yadrosida spekulyativ kodlarni bajarish muammolari uchun skaner Kasper endi mavjud

Kasper yordamida Linux yadrosini skanerlashda avval noma'lum bo'lgan 1379 ta gadjet aniqlandi, ular ko'rsatmalarning spekulyativ bajarilishi paytida ma'lumotlarning sizib chiqishiga olib kelishi mumkin. Ta'kidlanishicha, ehtimol ulardan faqat ba'zilari haqiqiy muammolarni keltirib chiqarishi mumkin, ammo haqiqiy xavf mavjudligini ko'rsatish uchun faqat nazariy emas, balki muammoli kod bo'laklaridan biri uchun ekspluatatsiyaning ishchi prototipi ishlab chiqilgan bo'lib, bu ma'lumotga olib keladi. yadro xotirasidan oqish.

Manba: opennet.ru

a Izoh qo'shish