Athari katika eBPF ambayo inaruhusu ulinzi wa shambulio la Specter 4 kuepukwa

Athari mbili za kiusalama zimetambuliwa kwenye kinu cha Linux, ambacho huruhusu mfumo mdogo wa eBPF utumike kukwepa ulinzi dhidi ya shambulio la Specter v4 (SSB, Bypass ya Kukisia ya Duka). Kwa kutumia programu ya BPF isiyo na upendeleo, mshambulizi anaweza kuunda hali ya utekelezaji wa kubahatisha wa shughuli fulani na kuamua yaliyomo katika maeneo ya kiholela ya kumbukumbu ya kernel. Watunzaji wa mifumo midogo ya eBPF kwenye kernel walipokea ufikiaji wa unyonyaji wa mfano ambao unaonyesha uwezo wa kutekeleza mashambulizi kwa vitendo. Matatizo yamewekwa kwa namna ya viraka (1, 2), ambayo itajumuishwa katika sasisho la pili la Linux kernel. Sasisho katika vifaa vya usambazaji bado hazijaundwa (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Mbinu ya mashambulizi ya Specter 4 inategemea kurejesha data iliyohifadhiwa katika akiba ya kichakataji baada ya kutupa matokeo ya utekelezaji wa kubahatisha wa shughuli wakati wa kuchakata shughuli za kuandika na kusoma kwa kutumia anwani zisizo za moja kwa moja. Operesheni ya kusoma inapofuata operesheni ya kuandika (k.m., mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), kukabiliana na anwani iliyosomwa kunaweza kuwa tayari kujulikana kutokana na shughuli zinazofanana zinazofanywa (shughuli za kusoma inafanywa mara nyingi zaidi na usomaji unaweza kufanywa kutoka kwa kache) na kichakataji kinaweza kufanya usomaji kwa kubahatisha kabla ya kuandika bila kungoja urekebishaji wa uandishi uhesabiwe.

Ikiwa, baada ya kuhesabu kukabiliana, makutano ya maeneo ya kumbukumbu ya kuandika na kusoma yanagunduliwa, processor itafuta tu matokeo ya kusoma yaliyopatikana tayari na kurudia operesheni hii. Kipengele hiki huruhusu maagizo ya kusoma kufikia thamani ya zamani kwenye anwani fulani wakati utendakazi wa duka bado haujakamilika. Baada ya kutupa operesheni ya kubahatisha isiyofanikiwa, athari za utekelezaji wake hubaki kwenye kashe, baada ya hapo moja ya njia za kuamua yaliyomo kwenye kache inaweza kutumika kuipata kulingana na uchambuzi wa mabadiliko katika wakati wa ufikiaji wa data iliyohifadhiwa na isiyohifadhiwa.

Athari ya kwanza (CVE-2021-35477) inasababishwa na hitilafu katika utaratibu wa uthibitishaji wa programu ya BPF. Ili kulinda dhidi ya shambulio la Specter 4, kithibitishaji huongeza maagizo ya ziada baada ya hifadhi zinazoweza kuwa na matatizo kwenye kumbukumbu ambayo huhifadhi thamani batili ili kuondoa vifuatilizi vya operesheni ya awali. Operesheni ya kuandika batili ilitarajiwa kuwa ya haraka sana na kuzuia utekelezaji wa kubahatisha kwa sababu inategemea tu kielekezi cha fremu ya rafu ya BPF. Lakini kwa kweli, iliwezekana kuunda hali ambayo maagizo yanayoongoza kwa utekelezaji wa kubahatisha itaweza kutekelezwa kabla ya operesheni ya mapema ya duka.

Udhaifu wa pili (CVE-2021-3455) ni kutokana na ukweli kwamba wakati kithibitishaji cha BPF kinapotambua shughuli za kuokoa kumbukumbu zinazoweza kuwa hatari, haizingatii maeneo ambayo hayajaanzishwa ya stack ya BPF, operesheni ya kwanza ya kuandika ambayo haijalindwa. Kipengele hiki kinasababisha uwezekano wa kufanya operesheni ya kusoma ya kubahatisha, kulingana na eneo la kumbukumbu ambalo halijaanzishwa, kabla ya kutekeleza maagizo ya duka. Kumbukumbu mpya ya mrundikano wa BPF imetengwa bila kuangalia yaliyomo tayari kwenye kumbukumbu iliyotengwa, na kuna njia kabla ya programu ya BPF kuendesha ili kudhibiti yaliyomo kwenye eneo la kumbukumbu ambalo litatengwa kwa rafu ya BPF.

Chanzo: opennet.ru

Kuongeza maoni