Retbleed ni shambulio jipya kwenye utaratibu wa utekelezaji wa kubahatisha wa Intel na AMD CPU

Kundi la watafiti kutoka ETH Zurich limegundua shambulio jipya juu ya utaratibu wa utekelezaji wa kubahatisha wa mabadiliko ya moja kwa moja katika CPU, ambayo inafanya uwezekano wa kutoa habari kutoka kwa kumbukumbu ya kernel au kuandaa shambulio la mfumo wa mwenyeji kutoka kwa mashine za kawaida. Athari zinazoweza kuathiriwa zina jina la msimbo Retbleed (CVE-2022-29900, CVE-2022-29901) na ziko karibu kimaumbile na mashambulizi ya Specter-v2. Tofauti inakuja chini ya shirika la utekelezaji wa kubahatisha wa nambari ya kiholela wakati wa kusindika maagizo ya "ret" (kurudi), ambayo huchukua anwani kuruka kutoka kwa safu, badala ya kuruka kwa njia isiyo ya moja kwa moja kwa kutumia maagizo ya "jmp", kupakia anwani kutoka. kumbukumbu au rejista ya CPU.

Mshambulizi anaweza kuunda hali za utabiri usio sahihi wa mpito na kupanga mpito unaolengwa, wa kubahatisha hadi kizuizi cha msimbo ambao haujatolewa na mantiki ya utekelezaji wa programu. Hatimaye, kichakataji kitabainisha kuwa utabiri wa tawi haukuwa sahihi na utarejesha utendakazi hadi katika hali yake ya asili, lakini data iliyochakatwa wakati wa utekelezaji wa kubahatisha itaishia kwenye akiba na vibafa vya usanifu mdogo. Ikiwa kizuizi kilichotekelezwa kimakosa kitafikia kumbukumbu, basi utekelezaji wake wa kubahatisha utasababisha data iliyosomwa kutoka kwenye kumbukumbu kuwekwa kwenye akiba iliyoshirikiwa.

Ili kubaini data iliyosalia kwenye akiba baada ya shughuli za kubahatisha, mshambulizi anaweza kutumia mbinu za idhaa ya kando kubaini data iliyosalia, kama vile kuchanganua mabadiliko katika nyakati za ufikiaji kwa data iliyoakibishwa na ambayo haijaakibishwa. Ili kutoa habari kwa makusudi kutoka kwa maeneo katika kiwango kingine cha upendeleo (kwa mfano, kutoka kwa kumbukumbu ya kernel), "vidude" hutumiwa - mlolongo wa amri zilizopo kwenye kernel ambazo zinafaa kwa usomaji wa data kutoka kwa kumbukumbu kulingana na hali ya nje ambayo inaweza kuathiriwa na. mshambuliaji.

Ili kulinda dhidi ya mashambulizi ya kawaida ya darasa la Specter ambayo hutumia maagizo ya kuruka yenye masharti na yasiyo ya moja kwa moja, mifumo mingi ya uendeshaji hutumia mbinu ya "retpoline", ambayo inategemea kuchukua nafasi ya shughuli za kuruka zisizo za moja kwa moja na maagizo ya "ret", ambayo wasindikaji hutumia kitengo tofauti cha utabiri wa hali ya rundo. bila kutumia kizuizi cha utabiri cha tawi. Wakati retpoline ilianzishwa mnamo 2018, iliaminika kuwa upotoshaji wa anwani kama Specter haukuwa mzuri kwa matawi ya kubahatisha kwa kutumia maagizo ya "ret".

Watafiti ambao walitengeneza njia ya kushambulia ya Retbleed walionyesha uwezekano wa kuunda hali ndogo za usanifu wa kuanzisha mpito wa kubahatisha kwa kutumia maagizo ya "ret" na kuchapishwa kwa zana zilizotengenezwa tayari za kutambua mlolongo wa maagizo (vidude) vinavyofaa kwa kutumia hatari katika kernel ya Linux, ambamo hali kama hizi hujidhihirisha.

Wakati wa utafiti, unyonyaji wa kufanya kazi ulitayarishwa ambao unaruhusu, kwenye mifumo iliyo na Intel CPU, kutoa data kiholela kutoka kwa kumbukumbu ya kernel kutoka kwa mchakato usio na bahati katika nafasi ya mtumiaji kwa kasi ya ka 219 kwa sekunde na usahihi wa 98%. Kwenye vichakataji vya AMD, ufanisi wa unyonyaji ni wa juu zaidiβ€”kiwango cha uvujaji ni 3.9 KB kwa sekunde. Kama mfano wa vitendo, tunaonyesha jinsi ya kutumia unyonyaji uliopendekezwa kuamua yaliyomo kwenye /etc/shadow file. Kwenye mifumo iliyo na Intel CPUs, shambulio la kuamua hashi ya nenosiri la mtumiaji wa mizizi lilifanywa kwa dakika 28, na kwenye mifumo iliyo na AMD CPU - katika dakika 6.

Shambulio hilo limethibitishwa kwa vizazi 6-8 vya vichakataji vya Intel ambavyo vilitolewa kabla ya Q3 2019 (ikiwa ni pamoja na Skylake), na vichakataji vya AMD kulingana na miundo midogo ya Zen 1, Zen 1+ na Zen 2 ambayo ilitolewa kabla ya Q2021 3. Katika miundo mpya ya vichakataji kama vile AMD ZenXNUMX na Intel Alder Lake, na vile vile katika vichakataji vya ARM, tatizo limezuiwa na mbinu zilizopo za ulinzi. Kwa mfano, kutumia maagizo ya IBRS (Indirect Branch Restricted Speculation) husaidia kulinda dhidi ya mashambulizi.

Seti ya mabadiliko imetayarishwa kwa kernel ya Linux na hypervisor ya Xen, ambayo itazuia tatizo katika programu kwenye CPU za zamani. Kiraka kilichopendekezwa cha kinu cha Linux kinabadilisha faili 68, huongeza mistari 1783, na kufuta mistari 387. Kwa bahati mbaya, ulinzi husababisha gharama kubwa za juu - katika maandiko yaliyofanywa kwa wasindikaji wa AMD na Intel, kupungua kwa utendaji inakadiriwa kutoka 14% hadi 39%. Inapendeza zaidi kutumia ulinzi kulingana na maagizo ya IBRS, yanayopatikana katika vizazi vipya vya Intel CPU na kutumika kuanzia Linux kernel 4.19.

Kwenye vichakataji vya Intel, ubadilishanaji wa anwani kwa mruko usio wa moja kwa moja wa kubahatisha unafanywa kutokana na kipengele kinachoonekana wakati mafuriko yanapotokea kupitia kikomo cha chini (chini ya maji) kwenye Bufa ya Kurudisha Stack. Hali kama hizi zinapotokea, maagizo ya "ret" huanza kutumia mantiki ya uteuzi wa anwani sawa na ile inayotumiwa kwa kuruka kwa kawaida kwa njia isiyo ya moja kwa moja. Zaidi ya maeneo elfu moja yamepatikana kwenye kinu cha Linux ambayo huunda masharti ya kuanzisha mtiririko kama huo na yanaweza kufikiwa kupitia simu za mfumo.

Kwenye vichakataji vya AMD, utekelezaji wa kubahatisha wa maagizo ya "ret" unafanywa bila kurejelea bafa maalum ya rundo (Rundo la Anwani ya Kurejesha) na kitengo cha utabiri cha tawi kinazingatia maagizo ya "ret" sio kama kurudi kwa udhibiti, lakini kama tawi lisilo la moja kwa moja. , na, ipasavyo, hutumia data kwa utabiri wa mabadiliko yasiyo ya moja kwa moja. Chini ya masharti haya, operesheni yoyote ya "ret" inayoweza kufikiwa kupitia simu ya mfumo inaweza kutumika vibaya.

Kwa kuongezea, suala lingine pia limetambuliwa katika CPU za AMD (CVE-2022-23825, Mchanganyiko wa Aina ya Tawi) inayohusiana na utekelezaji wa matawi ya uwongo - masharti ya utabiri wa tawi yanaweza kutokea hata bila maagizo muhimu ya tawi, ambayo inaruhusu kushawishi bafa ya utabiri wa tawi. bila maagizo "ret". Kipengele hiki hutatiza kwa kiasi kikubwa utekelezaji wa ulinzi na kinahitaji usafishaji amilifu zaidi wa bafa ya utabiri wa tawi. Kuongeza ulinzi kamili kwa kernel kunatarajiwa kuongeza overhead kwa 209%.

Chanzo: opennet.ru

Kuongeza maoni