Google brauzerda JavaScript-ni bajarish orqali Spectre zaifliklaridan foydalanishni namoyish etdi

Google ilgari qo‘shilgan himoya usullarini chetlab o‘tib, brauzerda JavaScript kodini bajarishda Spectre sinfining zaifliklaridan foydalanish imkoniyatini ko‘rsatuvchi bir nechta ekspluatatsiya prototiplarini nashr etdi. Joriy yorliqda veb-kontentni qayta ishlash jarayoni xotirasiga kirish uchun ekspluatatsiyalardan foydalanish mumkin. Ekspluitning ishlashini sinab ko'rish uchun leaky.page veb-sayti ishga tushirildi va ish mantig'ini tavsiflovchi kod GitHub'da joylashtirildi.

Taklif etilayotgan prototip Linux va Chrome 7 o'rnatilgan muhitda Intel Core i6500-88U protsessorli tizimlarga hujum qilish uchun mo'ljallangan. Boshqa muhitlar uchun ekspluatatsiyadan foydalanish uchun o'zgartirishlar kiritish talab etiladi. Ekspluatatsiya usuli Intel protsessorlari uchun xos emas - tegishli moslashuvdan so'ng, ekspluatatsiya boshqa ishlab chiqaruvchilarning protsessorlari, jumladan, ARM arxitekturasi asosidagi Apple M1 tizimlarida ishlashi tasdiqlandi. Kichik o'zgarishlardan so'ng, ekspluatatsiya boshqa operatsion tizimlarda va Chromium dvigateliga asoslangan boshqa brauzerlarda ham ishlaydi.

Standart Chrome 88 va Intel Skylake protsessorlariga asoslangan muhitda joriy Chrome yorlig'ida (renderer jarayoni) veb-kontentni qayta ishlash uchun mas'ul bo'lgan jarayondan ma'lumotlarni soniyasiga 1 kilobayt tezlikda sizib chiqish mumkin edi. Bundan tashqari, muqobil prototiplar ishlab chiqilgan, masalan, 8 mikrosoniya (5 millisekund) aniqlikdagi performance.now() taymeridan foydalanganda barqarorlikni pasaytirish hisobiga sizib chiqish tezligini 0.005kB/s gacha oshirish imkonini beruvchi ekspluatatsiya. ). Taymerning bir millisekundlik aniqligi bilan ishlaydigan versiya ham tayyorlandi, u boshqa jarayonning xotirasiga soniyasiga taxminan 60 bayt tezlikda kirishni tashkil qilish uchun ishlatilishi mumkin.

Nashr etilgan demo-kod uch qismdan iborat. Birinchi qism protsessor ko'rsatmalarining spekulyativ bajarilishi natijasida protsessor keshida qolgan ma'lumotlarni qayta tiklash uchun zarur bo'lgan operatsiyalarni bajarish vaqtini hisoblash uchun taymerni kalibrlaydi. Ikkinchi qism JavaScript massivini taqsimlashda foydalaniladigan xotira tartibini belgilaydi.

Uchinchi qism muayyan operatsiyalarni spekulyativ bajarish uchun sharoit yaratish natijasida joriy jarayonning xotira tarkibini aniqlash uchun Spectre zaifligidan to'g'ridan-to'g'ri foydalanadi, natijasi muvaffaqiyatsiz prognozni aniqlagandan so'ng protsessor tomonidan o'chiriladi, ammo uning izlari. bajarilishi umumiy keshga saqlanadi va keshlangan va keshlanmagan ma'lumotlarga kirish vaqtidagi o'zgarishlarni tahlil qiluvchi uchinchi tomon kanallari tomonidan kesh tarkibini aniqlash usullari yordamida tiklanishi mumkin.

Taklif etilayotgan ekspluatatsiya texnikasi performans.now() API orqali mavjud bo'lgan yuqori aniqlikdagi taymerlarsiz va umumiy xotirada massivlar yaratish imkonini beruvchi SharedArrayBuffer turini qo'llab-quvvatlamasdan bajarishga imkon beradi. Ekspluatatsiyaga kodning boshqariladigan spekulyativ bajarilishini ta'minlovchi Spectre gadjeti va spekulyativ bajarish paytida olingan keshlangan ma'lumotlarni aniqlaydigan yon kanal oqish analizatori kiradi.

Gadjet JavaScript massivi yordamida amalga oshiriladi, unda kompilyator (protsessor, protsessor) tomonidan qo'shilgan bufer o'lchamini tekshirish mavjudligi sababli filialni bashorat qilish blokining holatiga ta'sir qiluvchi bufer chegarasidan tashqaridagi hududga kirishga harakat qilinadi. oldinga qarab, spekulyativ ravishda kirishni amalga oshiradi, lekin tekshiruvdan so'ng holatni orqaga qaytaradi). Taymerning aniqligi etarli bo'lmagan sharoitda kesh tarkibini tahlil qilish uchun protsessorlarda qo'llaniladigan Tree-PLRU keshini olib tashlash strategiyasini aldash usuli taklif qilindi va tsikllar sonini ko'paytirish orqali qaytib kelganda vaqt farqini sezilarli darajada oshirishga imkon beradi. keshdan qiymat va keshda qiymat yo'q bo'lganda.

Qayd etilishicha, Google Spectre sinfidagi zaifliklardan foydalangan holda hujumlar amalga oshirish imkoniyatini ko‘rsatish va veb-ishlab chiquvchilarni bunday hujumlar xavfini kamaytiradigan usullardan foydalanishga undash maqsadida ekspluatatsiya prototipini nashr etgan. Shu bilan birga, Google taklif etilayotgan prototipni jiddiy qayta ishlamasdan turib, nafaqat namoyish qilish, balki keng foydalanish uchun ham tayyor universal ekspluatatsiyalarni yaratish mumkin emas, deb hisoblaydi.

Xavfni kamaytirish uchun sayt egalariga yaqinda joriy qilingan Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame- sarlavhalaridan foydalanish tavsiya etiladi. Options, X -Content-Type-Options va SameSite Cookie. Ushbu mexanizmlar hujumlardan to'g'ridan-to'g'ri himoya qilmaydi, lekin ular sayt ma'lumotlarini tajovuzkorning JavaScript kodi bajarilishi mumkin bo'lgan jarayonlarga oqib chiqishdan ajratishga imkon beradi (oqish joriy jarayon xotirasidan sodir bo'ladi, bu esa tajovuzkor kodiga qo'shimcha ravishda , o'sha tabda ochilgan boshqa sayt ma'lumotlarini ham qayta ishlashi mumkin). Asosiy g'oya - turli jarayonlarda sayt kodining bajarilishini ishonchsiz manbalardan olingan uchinchi tomon kodlaridan ajratish, masalan, iframe orqali kiritilgan.



Manba: opennet.ru

a Izoh qo'shish