Zen+ va Zen 2 mikroarxitekturalari asosidagi AMD protsessorlarida Meltdown sinfidagi zaiflik aniqlandi.

Drezden texnik universiteti tadqiqotchilari guruhi Zen+ va Zen 2020 mikroarxitekturalari asosidagi AMD protsessorlarida Meltdown sinfidagi hujumga imkon beruvchi zaiflikni (CVE-12965-2) aniqladi. Dastlab AMD Zen+ va Zen 2 protsessorlari Meltdown zaifligiga sezgir emas deb taxmin qilingan edi, biroq tadqiqotchilar kanonik bo‘lmagan virtual manzillardan foydalanganda himoyalangan xotira sohalariga spekulyativ kirishga olib keladigan xususiyatni aniqladilar.

AMD64 arxitekturasi virtual manzilning faqat birinchi 48 bitidan foydalanadi va qolgan 16 bitni e'tiborsiz qoldiradi. 48 dan 63 gacha bitlar har doim 47 bitning qiymatini nusxalashi kerakligi ko'rsatilgan (belgi bit kengaytmasi). Agar ushbu shart buzilgan bo'lsa va yuqori bitlarning ixtiyoriy qiymatlari bo'lgan manzilga kirishga harakat qilinsa, protsessor istisno yaratadi. Yuqori bitlarni qayta-qayta to'ldirish mavjud manzil maydonini ikkita blokga bo'linishiga olib keladi - pastki blok (0 dan 00007FFFFFFFFFFFFF gacha), bunda yuqori bitlar 800000000000 ga o'rnatiladi va yuqori (FFFF1 dan FFFFFFFFFFFFFFFF gacha) barcha yuqori bitlar XNUMX ga o'rnatiladi.

Belgilangan bloklarga to'g'ri keladigan manzillar kanonik deb ataladi va yuqori bitlarning ixtiyoriy tarkibiga ega noto'g'ri manzillar kanonik bo'lmagan deb ataladi. Kanonik manzillarning quyi diapazoni odatda jarayon ma'lumotlari uchun ajratiladi va yuqori diapazon yadro ma'lumotlari uchun ishlatiladi (foydalanuvchi maydonidan ushbu manzillarga kirish imtiyozlarni ajratish darajasida bloklanadi).

Klassik Meltdown zaifligi ko'rsatmalarning spekulyativ bajarilishi paytida protsessor shaxsiy ma'lumotlar maydoniga kirishi va natijani bekor qilishi mumkinligiga asoslanadi, chunki belgilangan imtiyozlar foydalanuvchi jarayoniga bunday kirishni taqiqlaydi. Dasturda spekulyativ ravishda bajarilgan blok asosiy koddan shartli shoxcha bilan ajratiladi, u real sharoitlarda doimo yonib turadi, lekin shartli bayonotda protsessorning preemptive bajarilishi paytida bilmagan hisoblangan qiymatdan foydalanishi sababli. kod, barcha filial variantlari spekulyativ tarzda amalga oshiriladi.

Spekulyativ bajarilgan operatsiyalar odatdagidek bajariladigan ko'rsatmalar bilan bir xil keshdan foydalanganligi sababli, spekulyativ bajarish paytida shaxsiy xotira maydonidagi alohida bitlar tarkibini aks ettiruvchi keshda markerlarni o'rnatish mumkin, keyin esa odatdagi bajarilgan kodda ularning qiymatini vaqtni belgilash orqali aniqlash mumkin. tahlil keshlangan va keshlanmagan ma'lumotlarga kirish.

AMD Zen+ va Zen 2 protsessorlariga ta'sir qiladigan yangi zaiflikning o'ziga xos xususiyati shundaki, protsessorlar yuqori 16 bitni e'tiborsiz qoldirib, noto'g'ri kanonik bo'lmagan manzillar yordamida xotiraga kiradigan spekulyativ o'qish va yozish operatsiyalariga imkon beradi. Shunday qilib, spekulyativ kodni bajarish jarayonida protsessor har doim faqat pastki 48 bitdan foydalanadi va manzilning haqiqiyligi alohida tekshiriladi. Agar kanonik bo'lmagan virtual manzilni assotsiativ tarjima buferidagi (TLB) jismoniy manzilga tarjima qilishda manzilning kanonik qismida moslik aniqlansa, u holda spekulyativ yuklash operatsiyasi tarkibni hisobga olmagan holda qiymatni qaytaradi. yuqori 16 bitdan iborat bo'lib, bu iplar orasidagi xotira almashinuvini chetlab o'tishga imkon beradi. Keyinchalik, operatsiya haqiqiy emas deb hisoblanadi va o'chiriladi, lekin xotiraga kirish tugallanadi va ma'lumotlar keshda tugaydi.

Tajriba davomida FLUSH+RELOAD kesh tarkibini aniqlash texnikasidan foydalangan holda tadqiqotchilar sekundiga 125 bayt tezlikda yashirin ma’lumotlarni uzatish kanalini tashkil etishga muvaffaq bo‘lishdi. AMD chiplaridan tashqari, muammo klassik Meltdown zaifligiga sezgir bo'lgan barcha Intel protsessorlariga ham ta'sir qiladi. LFENCE ko'rsatmalaridan foydalanish kabi Meltdown hujumlarini blokirovka qilishga yordam beradigan bir xil usullar ushbu yangi turdagi hujumdan himoya qilish uchun ishlatilishi mumkin. Misol uchun, agar Intel protsessorida Meltdowndan apparat himoyasi mavjud bo'lsa yoki tizimda dasturiy ta'minot himoyasi yoqilgan bo'lsa, bunday konfiguratsiyalar yangi hujum variantiga sezgir emas.

Shu bilan birga, tadqiqotchilar Intel protsessorlari bilan solishtirganda, AMD protsessorlari arxitekturasi haqiqiy hujumlarni amalga oshirish imkoniyatini cheklashini, biroq ularning samaradorligini oshirish uchun boshqa mikroarxitektura hujumlari bilan birgalikda yangi usuldan foydalanishni istisno etmasligini qayd etishdi. Xususan, taklif qilinayotgan hujum yadro va boshqa jarayonlarning xotira sohalari tarkibini aniqlashga imkon bermaydi, balki bir xil virtual xotira maydonida ishlaydigan bir xil dasturning boshqa mavzulariga kirish imkoniyati bilan cheklanadi.

Zaifligi bo'lmagan dastur o'z mavzulariga kirish imkoniyatiga ega bo'lganligi sababli, amaliy nuqtai nazardan, usul qum qutisi izolyatsiyasini chetlab o'tish va uchinchi tomon dasturlarini bajarishga imkon beruvchi dasturlarda boshqa oqimlarning ishiga aralashuvni tashkil qilish uchun qiziqish uyg'otadi. veb-brauzerlar va JIT dvigatellari kabi kodlar. Tadqiqotchilar SpiderMonkey JavaScript dvigateli va Linux yadrosining hujumga zaifligini o‘rganib chiqdilar, biroq hujumni amalga oshirish uchun ishlatilishi mumkin bo‘lgan zaif kod ketma-ketligini topmadilar. Hujum qiluvchi ilovalarga qo'shimcha ravishda, usul boshqa mikroarxitektura zaifliklaridan foydalanish jarayonida protsessorning mikroarxitektura elementlari o'rtasida qabul qilinishi mumkin bo'lmagan ma'lumotlar oqimini majburlash uchun ham ishlatilishi mumkin.

Manba: opennet.ru

a Izoh qo'shish