ʻO Retbleed kahi hoʻouka hou ʻana i ka mīkini hoʻokō speculative o Intel a me AMD CPUs

Ua ʻike kekahi pūʻulu o nā mea noiʻi mai ETH Zurich i kahi hoʻouka hou ʻana i ke ʻano o ka hoʻokō speculative o nā hoʻololi indirect i loko o ka CPU, kahi e hiki ai ke unuhi i ka ʻike mai ka hoʻomanaʻo kernel a i ʻole hoʻonohonoho i kahi hoʻouka kaua ma ka ʻōnaehana host mai nā mīkini virtual. Hoʻopili ʻia nā mea palupalu i ka inoa ʻo Retbleed (CVE-2022-29900, CVE-2022-29901) a kokoke i ke ʻano i ka hoʻouka ʻana o Specter-v2. ʻO ka ʻokoʻa i lalo i ka hoʻonohonoho ʻana o ka hoʻokō speculative o ka code arbitrary i ka wā e hoʻoponopono ai i ka ʻōlelo aʻoaʻo "ret" (hoʻihoʻi), e kiʻi i ka helu e lele mai ka waihona, ma kahi o kahi lele lele ʻole me ka hoʻohana ʻana i ke aʻo "jmp", e hoʻouka ana i ka helu wahi mai. hoʻomanaʻo a i ʻole kahi papa inoa CPU.

Hiki i ka mea hoʻouka ke hana i nā kūlana no ka wānana hoʻololi hewa ʻole a hoʻonohonoho i kahi hoʻololi i manaʻo ʻia i kahi poloka code i hāʻawi ʻole ʻia e ka loiloi hoʻokō papahana. ʻO ka hope loa, e hoʻoholo ka kaʻina hana ʻaʻole i ʻāpono ʻia ka wānana lālā a e hoʻihoʻi i ka hana i kona kūlana mua, akā ʻo ka ʻikepili i hana ʻia i ka wā o ka speculative executive e pau i ka cache a me ka microarchitectural buffers. Inā komo ka poloka i hana hewa ʻia i ka hoʻomanaʻo, a laila e alakaʻi ana kāna hoʻokō noʻonoʻo i ka ʻikepili heluhelu mai ka hoʻomanaʻo ʻana i waiho ʻia i loko o ka huna huna.

No ka hoʻoholo ʻana i ka ʻikepili i koe i loko o ka hūnā ma hope o nā hana noʻonoʻo, hiki i ka mea hoʻouka ke hoʻohana i nā ʻenehana ʻaoʻao-channel e hoʻoholo ai i ke koena ʻikepili, e like me ka nānā ʻana i nā loli i nā manawa komo i ka ʻikepili huna a me ka ʻike ʻole. No ka hoʻokaʻawale ʻana i ka ʻike mai nā wahi ma kahi pae pono ʻē aʻe (no ka laʻana, mai ka hoʻomanaʻo kernel), hoʻohana ʻia nā "mea hana" - nā ʻōkuhi o nā kauoha i loaʻa i loko o ka kernel i kūpono no ka heluhelu ʻana i ka ʻikepili mai ka hoʻomanaʻo e pili ana i nā kūlana o waho e hiki ke hoʻohuli ʻia e. ka mea hoouka.

No ka pale ʻana i nā hoʻouka kaua Spectre maʻamau e hoʻohana ana i nā ʻōlelo aʻoaʻo a me ka lele ʻole, ʻo ka hapa nui o nā ʻōnaehana hana e hoʻohana i ka ʻenehana "retpoline", i hoʻokumu ʻia ma ka hoʻololi ʻana i nā hana lele ʻole me ka ʻōlelo aʻoaʻo "ret", kahi e hoʻohana ai nā mea hana i kahi ʻāpana wānana mokuʻāina ʻokoʻa. ʻaʻole hoʻohana i kahi poloka wānana lālā. I ka wā i hoʻokomo ʻia ai ka retpoline i ka makahiki 2018, ua manaʻo ʻia ʻaʻole kūpono nā manipulations e like me Specter no ka hoʻopili ʻana i ka manaʻo e hoʻohana ana i ke aʻo "ret".

Ua hōʻike nā mea noiʻi nāna i hoʻomohala i ke ʻano hoʻouka kaua Retbleed i ka hiki ke hana i nā kūlana microarchitectural no ka hoʻomaka ʻana i kahi hoʻololi speculative me ka hoʻohana ʻana i ke aʻo "ret" a paʻi i nā mea hana i mākaukau no ka ʻike ʻana i nā ʻōkuhi o nā ʻōkuhi (nā hāmeʻa) kūpono no ka hoʻohana ʻana i ka nāwaliwali o ka kernel Linux, i hoikeia mai ai ia mau kulana.

I ka wā o ka noiʻi ʻana, ua hoʻomākaukau ʻia kahi hana hana e hiki ai, ma nā ʻōnaehana me Intel CPUs, e unuhi i ka ʻikepili kūʻokoʻa mai ka hoʻomanaʻo ʻana o ka kernel mai kahi kaʻina hana pono ʻole i ka wahi hoʻohana ma ka wikiwiki o 219 bytes i kekona a me 98% pololei. Ma nā kaʻina hana AMD, ʻoi aku ka kiʻekiʻe o ka hoʻohana ʻana - ʻo ka leak rate he 3.9 KB i kekona. Ma keʻano he laʻana kūpono, hōʻike mākou pehea e hoʻohana ai i ka hoʻohana i manaʻo ʻia e hoʻoholo i nā mea o ka faila /etc/shadow. Ma nā ʻōnaehana me Intel CPUs, ua hoʻokō ʻia ka hoʻouka ʻana e hoʻoholo i ka hash password mea hoʻohana i loko o 28 mau minuke, a ma nā ʻōnaehana me nā CPU AMD - i 6 mau minuke.

Ua hōʻoia ʻia ka hoʻouka ʻana no nā hanauna 6-8 o nā kaʻina hana Intel i hoʻokuʻu ʻia ma mua o Q3 2019 (me Skylake), a me nā kaʻina hana AMD e pili ana i ka Zen 1, Zen 1+ a me Zen 2 microarchitectures i hoʻokuʻu ʻia ma mua o Q2021 3. Ma nā ʻano hoʻohālike hou aʻe e like me AMD ZenXNUMX a me Intel Alder Lake, a me nā kaʻina hana ARM, ua kāohi ʻia ka pilikia e nā mīkini pale e kū nei. No ka laʻana, ʻo ka hoʻohana ʻana i nā ʻōlelo aʻoaʻo IBRS (Indirect Branch Restricted Speculation) e kōkua i ka pale ʻana i nā hoʻouka kaua.

Ua hoʻomākaukau ʻia kahi hoʻololi no ka Linux kernel a me ka Xen hypervisor, ka mea e ālai i ka pilikia i ka polokalamu ma nā CPU kahiko. Hoʻololi ka papa kuhikuhi no ka Linux kernel i nā faila 68, hoʻohui i nā laina 1783, a kāpae i nā laina 387. ʻO ka mea pōʻino, ke alakaʻi nei ka pale i nā kumukūʻai koʻikoʻi nui - ma nā kikokikona i hana ʻia ma nā kaʻina hana AMD a me Intel, ua manaʻo ʻia ka emi ʻana o ka hana mai 14% a 39%. ʻOi aku ka maikaʻi o ka hoʻohana ʻana i ka pale e pili ana i nā ʻōlelo aʻoaʻo IBRS, loaʻa i nā hanauna hou o Intel CPUs a kākoʻo ʻia e hoʻomaka me ka Linux kernel 4.19.

Ma nā kaʻina hana Intel, hoʻokō ʻia ka hoʻololi ʻana i ka hoʻololi ʻana no ka lele kuhi hewa ʻole i kahi hiʻohiʻona i ʻike ʻia i ka wā e kahe ana ma ka palena haʻahaʻa (underflow) i ka Return Stack Buffer. Ke loaʻa ia mau kūlana, hoʻomaka ka ʻōlelo "ret" e hoʻopili i ka loiloi koho ʻōlelo e like me ka mea i hoʻohana ʻia no nā lele maʻamau. ʻOi aku ma mua o hoʻokahi kaukani mau wahi i loaʻa i ka Linux kernel e hana i nā kūlana no ka hoʻomaka ʻana i kēlā backflow a hiki ke loaʻa ma o nā kelepona ʻōnaehana.

Ma nā kaʻina hana AMD, hoʻokō ʻia ka hoʻokō ʻana i ka ʻōlelo aʻo "ret" me ka ʻole o ka kuhikuhi ʻana i kahi buffer kikoʻī kikoʻī (Return Address Stack) a noʻonoʻo ka ʻāpana wanana i ke aʻo "ret" ʻaʻole ma ke ʻano he mana hoʻihoʻi, akā ma ke ʻano he lālā ʻole. , a, no laila, hoʻohana i ka ʻikepili no ka wānana i nā hoʻololi pololei ʻole. Ma lalo o kēia mau kūlana, hiki ke hoʻohana ʻia nā hana "ret" i hiki ke loaʻa ma ke kelepona ʻōnaehana.

Eia kekahi, ua ʻike ʻia kekahi pilikia ma AMD CPUs (CVE-2022-23825, Branch Type Confusion) e pili ana i ka hoʻokō ʻana i nā lālā fictitious - hiki ke loaʻa nā kūlana no ka wanana lālā me ka ʻole o nā ʻōlelo aʻoaʻo lālā e pono ai, e ʻae ai i ka hoʻoulu ʻana i ka wana wānana lālā. me ke aʻo ʻole "ret". Kēia hiʻona nui complicates ka hoʻokō 'ana i ka pale a koi 'oi aku ka hoʻomaʻemaʻe ikaika o ka lālā wanana pale. ʻO ka hoʻohui ʻana i ka pale piha i ka kernel e manaʻo ʻia e hoʻonui i ka overhead e 209%.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka