SWAPGS - CPU spekulyativ ijro mexanizmidagi yangi zaiflik

Bitdefender tadqiqotchilari oshkor bo'ldi yangi zaiflik (CVE-2019-1125) SWAPGS deb nomlangan zamonaviy protsessorlarning spekulyativ ko'rsatmalarini bajarish mexanizmida, bu muammoni keltirib chiqaradigan protsessor buyrug'ining nomiga mos keladi. Zaiflik Bu beradi imtiyozsiz tajovuzkorga yadro xotirasi joylari yoki ishlaydigan virtual mashinalar tarkibini aniqlashga ruxsat bering. Muammo tasdiqlangan Intel protsessorlarida (x86_64) va qisman ta'sir qiladi Asosiy hujum vektori ko'rinmaydigan AMD protsessorlari. Spectre va Meltdown zaifliklariga qarshi kurashish uchun ilgari joriy qilingan usullar Intel protsessorlaridan foydalanganda SWAPGS hujumidan himoya qilmaydi, ammo tuzatishlar allaqachon Linux, ChromeOS, Android va Windows uchun taklif qilingan.

Zaiflik Spectre v1 sinfiga tegishli bo'lib, ko'rsatmalarning spekulyativ bajarilishidan keyin qolgan protsessor keshidagi ma'lumotlarni qayta tiklash g'oyasiga asoslanadi. Ishlashni yaxshilash uchun zamonaviy protsessorlarning tarmoqni bashorat qilish bo'linmalari bajarilishi mumkin bo'lgan ba'zi ko'rsatmalarning oldindan bajarilishini qo'llaydi, lekin ularning bajarilishini belgilovchi barcha omillarni hisoblashni kutmasdan (masalan, filial shartlari yoki kirish parametrlari bo'lmaganda). hali hisoblangan). Agar bashorat tasdiqlanmasa, protsessor spekulyativ bajarish natijasini bekor qiladi, lekin u davomida qayta ishlangan ma'lumotlar protsessor keshida qoladi va yon kanallar orqali kesh tarkibini aniqlash, kirish o'zgarishini tahlil qilish usullari yordamida tiklanishi mumkin. keshlangan va keshlanmagan ma'lumotlarga vaqt.

Yangi hujumning o'ziga xos xususiyati SWAPGS yo'riqnomasining spekulyativ bajarilishi paytida yuzaga keladigan oqishdan foydalanish bo'lib, u operatsion tizimlarda boshqaruv foydalanuvchi maydonidan OT yadrosiga (GS) o'tganda GS registrining qiymatini almashtirish uchun ishlatiladi. foydalanuvchi maydonida ishlatiladigan qiymat yadrodagi operatsiyalar paytida ishlatiladigan qiymat bilan almashtiriladi). Linux yadrosida GS yadro ma'lumotlariga kirish uchun ishlatiladigan per_cpu ko'rsatkichini saqlaydi va foydalanuvchi maydoni ko'rsatkichlarni TLS (Thread Local Storage) ga saqlaydi.

Yadro bo'shlig'idan yadroga qayta kirishda yoki GS registrini o'zgartirishni talab qilmaydigan kodni bajarishda SWAPGS yo'riqnomasini ikki marta chaqirmaslik uchun ko'rsatma oldidan tekshirish va shartli filial amalga oshiriladi. Spekulyativ ijro mexanizmi tekshirish natijasini kutmasdan SWAPGS buyrug'i bilan kodni faol ravishda bajarishga kirishadi va agar tanlangan filial tasdiqlanmasa, natijani bekor qiladi. Shunday qilib, SWAPGS bajarilishini o'z ichiga olmaydigan filial spekulyativ tanlanganda vaziyat yuzaga kelishi mumkin, ammo spekulyativ bajarish paytida GS registrining qiymati SWAPGS ko'rsatmasi bilan o'zgartiriladi va CPU keshida tugaydigan bog'liq xotira operatsiyalarida ishlatiladi.

Tadqiqotchilar ekspluatatsiya prototiplari tayyorlangan ikkita hujum stsenariysini taklif qilishdi. Birinchi stsenariy SWAPGS ko'rsatmasi spekulyativ tarzda bajarilmagan, garchi u amalda bajarishda qo'llanilsa ham, ikkinchisi esa aksincha, SWAPGS yo'riqnomasi spekulyativ tarzda bajarilganda, lekin aslida bajarilmasligi kerak bo'lgan vaziyatga asoslanadi. Har bir stsenariy uchun ekspluatatsiya qilishning ikkita varianti mavjud: tajovuzkor yadro sohasidagi ma'lum bir manzildagi qiymatni aniqlashi mumkin va tajovuzkor yadrodagi tasodifiy manzillarda ma'lum bir qiymatni qidirishi mumkin. Hujumni amalga oshirish uzoq vaqt talab etadi va ekspluatatsiya oqishni yakunlash uchun bir necha soat talab qilishi mumkin.

Linux yadrosida muammo bor bartaraf etildi Spectre v1 sinfidagi boshqa zaifliklarni tuzatishga o'xshash SWAPGS yo'riqnomasini chaqirish mantiqini o'zgartirish (spekulyativ bajarilishini bloklash). Qo'shimcha himoya odatdagi ish yuklarining ishlashiga minimal ta'sir ko'rsatishi kutilmoqda. Kechikish foydalanuvchi va yadro maydoni o'rtasida o'tish bosqichida yuzaga keladi, bu, masalan, dasturdan og'ir tizim chaqiruvi yoki tez-tez NMI va uzilishlar paydo bo'lganda yomon ishlashga olib kelishi mumkin.

Tuzatish uchun xost tizimida ham, mehmon muhitida ham yadro yangilanishini oʻrnatish, soʻngra tizimni qayta ishga tushirish talab etiladi. Linuxda himoyani o'chirish uchun "nospectre_v1" opsiyasidan foydalanish mumkin, u ham SWAPGS zaifligini blokirovka qilish choralarini o'chiradi. Tuzatish sifatida mavjud yamoq relizlarga allaqachon kiritilgan Linux yadrosi uchun 4.19.65, 5.2.7, 4.14.137, 4.9.188 va 4.4.188. Linux distributivlari uchun yangilanishlar hali chiqarilmagan (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). Windows-da muammo jimgina hal qilindi Iyul yangilanishi. Google kompaniyasi tayyorlangan ChromeOS bilan birga kelgan yadro 4.19 uchun tuzatish va Android.

Bitdefender tadqiqotchilarining fikriga ko'ra, Intel bu muammo haqida o'tgan yilning avgust oyida xabardor qilingan. Muammoni dasturiy jihatdan tuzatishga qaror qilindi, buning uchun Microsoft, Google va Linux yadrosi ishlab chiquvchilari tuzatishni muvofiqlashtirilgan ishlab chiqishda ishtirok etishdi. Eski Intel protsessorlari, Ivy Bridge-dan oldingi, ekspluatatsiyada ishlatiladigan WRGSBASE yo'riqnomasini qo'llab-quvvatlamaslik tufayli hujum qilish ancha qiyin. ARM, POWER, SPARC, MIPS va RISC-V tizimlariga muammo ta'sir qilmaydi, chunki ular SWAPGS ko'rsatmalarini qo'llab-quvvatlamaydi.

Muammo asosan Intel protsessorlari egalariga ta'sir qiladi -
AMD tizimlarida faqat ikkinchi hujum stsenariysi takrorlanishi mumkin edi, bu tasodifiy xotira maydonlarida aniq qiymatlarni izlash uchun ishlatilishi mumkin bo'lgan GS registrining asosiy qiymatini spekulyativ qayta ishlash bilan cheklangan. Ushbu hujum variantini bloklash uchun etarli Spectre v1 dan himoya qilishning mavjud usullari.

Manba: opennet.ru

a Izoh qo'shish