AMD protsessorlarining spekulyativ ijro mexanizmidagi zaiflik

Grsecurity loyihasi shartsiz oldinga siljish operatsiyalaridan so'ng ko'rsatmalarning spekulyativ bajarilishi bilan bog'liq AMD protsessorlarida yangi zaiflikka (CVE-2021-26341) hujum qilish usulining tafsilotlari va namoyishini nashr etdi. Agar hujum muvaffaqiyatli bo'lsa, zaiflik o'zboshimchalik bilan xotira maydonlarining mazmunini aniqlash imkonini beradi. Masalan, tadqiqotchilar ePBF yadro quyi tizimida imtiyozsiz kodni bajarish orqali manzillar tartibini aniqlash va KASLR (yadro xotirasini randomizatsiyalash) himoya mexanizmini chetlab o'tish imkonini beruvchi ekspluatatsiya tayyorladilar. Yadro xotirasi tarkibining chiqib ketishiga olib kelishi mumkin bo'lgan boshqa hujum stsenariylarini inkor etib bo'lmaydi.

Zaiflik protsessor, oldindan bajarilganda, xotiradagi o'tish ko'rsatmasidan so'ng darhol buyruqni spekulyativ tarzda qayta ishlaydigan sharoitlarni yaratishga imkon beradi (SLS, Straight Line Speculation). Bundan tashqari, bunday optimallashtirish nafaqat shartli o'tish operatorlari uchun, balki JMP, RET va CALL kabi to'g'ridan-to'g'ri shartsiz o'tishni nazarda tutuvchi ko'rsatmalar uchun ham ishlaydi. Shartsiz o'tish bo'yicha ko'rsatmalarga rioya qilgan holda, bajarish uchun mo'ljallanmagan o'zboshimchalik bilan ma'lumotlar joylashtirilishi mumkin. Filial keyingi buyruqni bajarishni o'z ichiga olmaydi, deb aniqlagandan so'ng, protsessor shunchaki holatni orqaga qaytaradi va spekulyativ bajarilishini e'tiborsiz qoldiradi, lekin ko'rsatmalarning bajarilishi izi umumiy keshda qoladi va yon kanallarni qidirish usullaridan foydalangan holda tahlil qilish uchun mavjud.

Spectre-v1 zaifligidan foydalanishda bo'lgani kabi, hujum yadroda spekulyativ bajarilishiga olib keladigan ma'lum ko'rsatmalar (gadjetlar) ketma-ketligining mavjudligini talab qiladi. Bu holatda zaiflikni bloklash koddagi bunday gadjetlarni aniqlash va ularga spekulyativ ijroni bloklaydigan qo'shimcha ko'rsatmalarni qo'shish bilan bog'liq. Spekulyativ bajarish uchun shartlar eBPF virtual mashinasida ishlaydigan imtiyozsiz dasturlar tomonidan ham yaratilishi mumkin. eBPF yordamida gadjetlarni qurish imkoniyatini bloklash uchun tizimda eBPF ga imtiyozsiz kirishni oβ€˜chirib qoβ€˜yish tavsiya etiladi (β€œsysctl -w kernel.unprivileged_bpf_disabled=1”).

Zaiflik Zen1 va Zen2 mikroarxitekturasi asosidagi protsessorlarga, shu jumladan AMD EPYC va AMD Ryzen Threadripper protsessorlarining birinchi va ikkinchi avlodlariga, shuningdek, AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadreadreadreadriga taΚΌsir qiladi. PRO va APU seriyali protsessorlari A. Ko'rsatmalarning spekulyativ bajarilishini blokirovka qilish uchun filial operatsiyalaridan so'ng INT3 yoki LFENCE ko'rsatmalariga qo'ng'iroq qilish tavsiya etiladi (RET, JMP, CALL).

Manba: opennet.ru

a Izoh qo'shish