SWAPGS - athari mpya katika utaratibu wa utekelezaji wa kubahatisha wa CPU

Watafiti kutoka Bitdefender imefichuliwa udhaifu mpya (CVE-2019-1125) katika utaratibu wa utekelezaji wa maagizo ya kubahatisha wa CPU za kisasa, ambao unaitwa SWAPGS, ambayo inalingana na jina la maagizo ya kichakataji kinachosababisha shida. Udhaifu inaruhusu ruhusu mshambulizi asiyebahatika kubainisha yaliyomo kwenye maeneo ya kumbukumbu ya kernel au kuendesha mashine pepe. Tatizo imethibitishwa katika wasindikaji wa Intel (x86_64) na kwa sehemu huathiri Wasindikaji wa AMD ambao vector kuu ya mashambulizi haionekani. Mbinu zilizotekelezwa hapo awali za kukabiliana na udhaifu wa Specter na Meltdown hazilinde dhidi ya mashambulizi ya SWAPGS unapotumia vichakataji vya Intel, lakini marekebisho tayari yamependekezwa kwa Linux, ChromeOS, Android na Windows.

Athari hii ni ya darasa la Specter v1 na inategemea wazo la kurejesha data kutoka kwa akiba ya kichakataji iliyobaki baada ya utekelezaji wa kubahatisha wa maagizo. Ili kuboresha utendakazi, vitengo vya utabiri vya tawi vya CPU za kisasa hutumia utekelezaji wa mapema wa baadhi ya maagizo ambayo yana uwezekano mkubwa wa kutekelezwa, lakini bila kungoja hesabu ya mambo yote ambayo huamua utekelezaji wao (kwa mfano, wakati hali za tawi au vigezo vya ufikiaji hazijafanywa. bado imehesabiwa). Ikiwa utabiri haujathibitishwa, processor hutupa matokeo ya utekelezaji wa kubahatisha, lakini data iliyochakatwa wakati huo inabaki kwenye kashe ya kichakataji na inaweza kurejeshwa kwa kutumia njia za kuamua yaliyomo kwenye kashe kupitia njia za kando, kuchambua mabadiliko katika ufikiaji. wakati wa kuweka akiba na data ambayo haijahifadhiwa.

Upekee wa shambulio jipya ni utumiaji wa uvujaji unaotokea wakati wa utekelezaji wa kubahatisha wa maagizo ya SWAPGS, ambayo hutumiwa katika mifumo ya uendeshaji kuchukua nafasi ya thamani ya rejista ya GS wakati udhibiti unapita kutoka kwa nafasi ya mtumiaji hadi kwa kernel ya OS (GS). thamani inayotumika katika nafasi ya mtumiaji inabadilishwa na thamani inayotumika wakati wa shughuli kwenye kernel ). Katika kinu cha Linux, GS huhifadhi kiashiria cha per_cpu kinachotumiwa kufikia data ya kernel, na vielelezo vya hifadhi ya nafasi ya mtumiaji kwa TLS (Uhifadhi wa Ndani wa Thread).

Ili kuzuia kuita maagizo ya SWAPGS mara mbili wakati wa kufikia kernel tena kutoka kwa nafasi ya kernel au wakati wa kutekeleza msimbo ambao hauhitaji mabadiliko ya rejista ya GS, ukaguzi na tawi la masharti hufanywa kabla ya maagizo. Injini ya utekelezaji ya kubahatisha inaendelea kutekeleza msimbo kwa maagizo kwa SWAPGS bila kungoja matokeo ya hundi, na ikiwa tawi lililochaguliwa halijathibitishwa, hutupilia mbali matokeo. Kwa hivyo, hali inaweza kutokea wakati tawi ambalo halihusishi utekelezaji wa SWAPGS limechaguliwa kwa kubahatisha, lakini wakati wa utekelezaji wa kubahatisha thamani ya rejista ya GS itabadilishwa na maagizo ya SWAPGS na kutumika katika shughuli za kumbukumbu tegemezi ambazo huishia kwenye kashe ya CPU.

Watafiti wamependekeza hali mbili za shambulio ambazo prototypes za unyonyaji zimetayarishwa. Hali ya kwanza inatokana na hali ambapo maagizo ya SWAPGS hayatekelezwi kwa kubahatisha, ingawa kwa kweli yanatumika katika utekelezaji, na ya pili ni kinyume chake, wakati maagizo ya SWAPGS yanatekelezwa kwa kubahatisha, ingawa hayapaswi kutekelezwa. Kwa kila hali, kuna chaguo mbili za unyonyaji: mshambulizi anaweza kuamua thamani katika anwani maalum katika eneo la kernel, na mshambuliaji anaweza kutafuta thamani maalum katika anwani za nasibu kwenye kernel. Kufanya shambulizi huchukua muda mrefu na unyonyaji unaweza kuhitaji saa kadhaa kukamilisha uvujaji.

Kuna tatizo kwenye kinu cha Linux kuondolewa kwa kubadilisha mantiki ya kuita maagizo ya SWAPGS (kuzuia utekelezaji wa kubahatisha), sawa na urekebishaji wa udhaifu mwingine wa darasa la Specter v1. Ulinzi ulioongezwa unatarajiwa kuwa na athari ndogo kwenye utendakazi wa mizigo ya kawaida. Ucheleweshaji hutokea wakati wa awamu ya kubadili kati ya nafasi ya mtumiaji na kernel, ambayo inaweza kusababisha utendakazi duni wakati, kwa mfano, kuna simu nzito ya mfumo kutoka kwa programu au kuzalisha mara kwa mara NMI na kukatizwa.

Urekebishaji unahitaji kusakinisha sasisho la kernel kwenye mfumo wa mwenyeji na mazingira ya wageni, ikifuatiwa na kuwasha upya mfumo. Ili kuzima ulinzi kwenye Linux, chaguo la "nospectre_v1" linaweza kutumika, ambalo pia huzima hatua za kuzuia uwezekano wa SWAPGS. Marekebisho yanapatikana kama kiraka kwa Linux kernel, ambayo tayari imejumuishwa kwenye matoleo 4.19.65, 5.2.7, 4.14.137, 4.9.188 na 4.4.188. Sasisho za usambazaji wa Linux bado hazijatolewa (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu) Kwenye Windows, shida ilirekebishwa kimya kimya Sasisho la Julai. Kampuni ya Google tayari kurekebisha kwa kernel 4.19 kusafirishwa kwa ChromeOS na Android.

Kulingana na watafiti kutoka Bitdefender, Intel ilifahamishwa kuhusu tatizo hilo mnamo Agosti mwaka jana. Iliamuliwa kurekebisha tatizo kwa utaratibu, ambalo watengenezaji kutoka Microsoft, Google na Linux kernel walihusika katika maendeleo ya uratibu wa kurekebisha. Wasindikaji wa zamani wa Intel, Daraja la kabla ya Ivy, ni ngumu zaidi kushambulia kwa sababu ya kukosekana kwa msaada kwa maagizo ya WRGSBASE yaliyotumiwa katika unyonyaji. Mifumo ya ARM, POWER, SPARC, MIPS, na RISC-V haiathiriwi na tatizo kwa sababu haitumii maagizo ya SWAPGS.

Tatizo linaathiri zaidi wamiliki wa wasindikaji wa Intel -
Kwenye mifumo ya AMD, ni hali ya pili tu ya shambulio lililoweza kutolewa tena, ambayo ni mdogo kwa usindikaji wa kubahatisha wa thamani ya msingi ya rejista ya GS, ambayo inaweza kutumika kutafuta maadili maalum katika maeneo ya kumbukumbu ya nasibu. Ili kuzuia chaguo hili la kushambulia inatosha mbinu zilizopo za ulinzi dhidi ya Specter v1.

Chanzo: opennet.ru

Kuongeza maoni