Ua ʻike ʻia kahi nāwaliwali o ka papa Meltdown i nā kaʻina hana AMD e pili ana i nā microarchitectures Zen + a me Zen 2.

Ua ʻike ʻia kahi hui o nā mea noiʻi mai ke Kulanui ʻOihana o Dresden i kahi nāwaliwali (CVE-2020-12965) i nā kaʻina hana AMD e pili ana i nā microarchitectures Zen + a me Zen 2, e ʻae ai i kahi hoʻouka papa Meltdown. Ua manaʻo mua ʻia ʻaʻole maʻalahi nā kaʻina hana AMD Zen + a me Zen 2 i ka vulnerability Meltdown, akā ua ʻike nā mea noiʻi i kahi hiʻohiʻona e alakaʻi ana i ke komo ʻana i nā wahi hoʻomanaʻo i pale ʻia i ka wā e hoʻohana ai i nā helu virtual non-canonical.

Hoʻohana ka papa hana AMD64 i nā bits 48 mua wale nō o ka helu virtual a nānā ʻole i ke koena 16 bits. Ua ʻōlelo ʻia ʻo nā bits 48 a i ka 63 pono e kope mau i ka waiwai o ka bit 47 (sign bit extension). Inā hōʻino ʻia kēia kūlana a hoʻāʻo ʻia e komo i kahi helu me nā waiwai kūʻokoʻa o nā bits luna, hana ka mea hana i kahi ʻokoʻa. ʻO ka hoʻopiha pinepine ʻana i nā bits luna e māhele ʻia ai ka wahi kikoʻī i loaʻa i ʻelua poloka - kahi haʻahaʻa (mai 0 a 00007FFFFFFFFFFFFFF), kahi i hoʻonohonoho ʻia ai nā bits o luna i 800000000000, a me kahi luna (mai FFFF1 a FFFFFFFFFFFFFFF), kahi. ua hoʻonohonoho ʻia nā bit luna a pau i ka XNUMX.

ʻO nā ʻōlelo i hāʻule i loko o nā poloka i ʻōlelo ʻia ua kapa ʻia he canonical, a ʻo nā ʻōlelo pololei ʻole me nā mea i hoʻopaʻa ʻole ʻia o nā bits luna i kapa ʻia ʻo non-canonical. Hoʻokaʻawale ʻia ka ʻaoʻao haʻahaʻa o nā ʻōlelo canonical no ka ʻikepili kaʻina hana, a hoʻohana ʻia ka pae kiʻekiʻe no ka ʻikepili kernel (ua ālai ʻia ke komo ʻana i kēia mau ʻōlelo mai ka wahi mea hoʻohana ma ka pae hoʻokaʻawale kuleana).

Hoʻokumu ʻia ka vulnerability Meltdown maʻamau i ka wā o ka hoʻokō speculative o nā ʻōlelo aʻo, hiki i ka mea hana ke komo i kahi wahi ʻikepili pilikino a laila hoʻolei i ka hopena no ka mea ua pāpā nā kuleana i hoʻonohonoho ʻia mai ke kaʻina hana a ka mea hoʻohana. I loko o ka papahana, ua hoʻokaʻawale ʻia ka poloka i hoʻokō ʻia mai ke code nui e kahi lālā kūlana, i ke ʻano maoli ke ahi mau, akā ma muli o ka hoʻohana ʻana o ka ʻōlelo conditional i kahi waiwai helu i ʻike ʻole ʻia e ka mea hana i ka wā o ka preemptive execution o ke code, lawe ʻia nā koho lālā āpau me ka speculatively.

Ma muli o ka hoʻohana ʻana o nā hana speculatively i ka cache like e like me nā ʻōlelo kuhikuhi maʻamau, hiki i ka wā o ka hoʻokō speculative ke hoʻonohonoho i nā māka i loko o ka cache e hōʻike ana i nā ʻike o kēlā me kēia bits i kahi wahi hoʻomanaʻo pilikino, a laila ma ke code maʻamau e hoʻoholo ai i ko lākou waiwai ma o ka manawa. hiki ke kālailai i ka ʻikepili i hūnā ʻia a me ka ʻikepili ʻole.

ʻO kahi hiʻohiʻona o ka nāwaliwali hou e pili ana i nā kaʻina hana AMD Zen + a me Zen 2 ʻo ia ka ʻae ʻana o nā CPU i nā hana speculative heluhelu a kākau i nā hana e komo ai i ka hoʻomanaʻo me ka hoʻohana ʻole ʻana i nā helu canonical kūpono ʻole, me ka nānā ʻole ʻana i nā bits 16 kiʻekiʻe. No laila, i ka wā e hoʻokō ai i nā code speculative, hoʻohana mau ka mea hana i nā 48 bits haʻahaʻa, a nānā kaʻawale ʻia ka pono o ka helu wahi. Inā, i ka unuhi ʻana i kahi helu ʻōlelo virtual non-canonical i kahi helu kino i loko o ka associative translation buffer (TLB), ʻike ʻia kahi pāʻani ma ka ʻaoʻao canonical o ka helu wahi, a laila e hoʻihoʻi ka hana speculative load i ka waiwai me ka nānā ʻole i nā mea i loko. o nā ʻāpana 16 kiʻekiʻe, e hiki ai ke kāpae i ka hoʻomanaʻo ʻana ma waena o nā pae. Ma hope, e manaʻo ʻia ka hana ʻole a hoʻolei ʻia, akā e hoʻopau ʻia ka ʻike hoʻomanaʻo a hoʻopau ʻia ka ʻikepili i ka cache.

I ka wā o ka hoʻokolohua, me ka hoʻohana ʻana i ke ʻano o ka hoʻoholo ʻana i nā mea o ka FLUSH+RELOAD cache, ua hiki i nā mea noiʻi ke hoʻonohonoho i kahi ala no ka hoʻoili ʻikepili huna i ka wikiwiki o 125 bytes i kekona. Ma kahi o nā chips AMD, pili pū ka pilikia i nā kaʻina hana Intel āpau, hiki ke maʻalahi i ka palupalu Meltdown maʻamau. Hiki ke hoʻohana ʻia nā ʻano hana like e pale ai i nā hoʻouka ʻana o Meltdown, e like me ka hoʻohana ʻana i nā ʻōlelo aʻoaʻo LFENCE, e pale aku i kēia ʻano hoʻouka kaua hou. No ka laʻana, inā loaʻa i kahi kaʻina hana Intel ka pale ʻana i nā lako e kūʻē iā Meltdown a i ʻole ka ʻōnaehana i hiki ke pale i ka polokalamu, a laila ʻaʻole hiki ke ʻae ʻia ia mau hoʻonohonoho i ka ʻano hoʻouka kaua hou.

Ma ka manawa like, ʻike nā mea noiʻi, i ka hoʻohālikelike ʻia me nā kaʻina hana Intel, ka hoʻolālā ʻana o nā kaʻina hana AMD e kaupalena i ka hiki ke hoʻokō i nā hoʻouka kaua maoli, akā ʻaʻole ia e kāpae i ka hoʻohana ʻana i kahi ala hou i hui pū ʻia me nā hoʻouka microarchitectural e hoʻonui i ko lākou pono. ʻO ka mea kūikawā, ʻaʻole ʻae ka hoʻouka ʻana i kekahi e hoʻoholo i nā ʻike o nā wahi hoʻomanaʻo o ka kernel a me nā kaʻina hana ʻē aʻe, akā ua kaupalena ʻia i ka hiki ke loaʻa i nā kaula ʻē aʻe o ka papahana like e holo ana ma ka wahi hoʻomanaʻo virtual like.

No ka mea hiki i ka polokalamu me ka ʻole o ka nāwaliwali ke hiki ke komo i kāna mau kaula, mai kahi hiʻohiʻona o ka manaʻo he mea hoihoi ke ʻano no ka haʻalele ʻana i ka hoʻokaʻawale ʻana i ka sandbox a me ka hoʻonohonoho ʻana i ka hoʻopili ʻana i ka hana o nā kaula ʻē aʻe i nā papahana e ʻae ai i ka hoʻokō ʻana i nā ʻaoʻao ʻekolu. code, e like me nā polokalamu kele pūnaewele a me nā ʻenekini JIT. Ua nānā nā mea noiʻi i ka nāwaliwali o ka mīkini SpiderMonkey JavaScript a me ka Linux kernel e hoʻouka ai, akā ʻaʻole i ʻike i nā kaʻina code vulnerable i hiki ke hoʻohana ʻia no ka hoʻouka ʻana. Ma waho aʻe o ka hoʻouka ʻana i nā noi, hiki ke hoʻohana ʻia ke ala e hoʻoikaika i ka kahe ʻana o ka ʻikepili i ʻae ʻole ʻia ma waena o nā mea microarchitectural o ka kaʻina hana i ka wā e hoʻohana ana i nā nāwaliwali microarchitectural ʻē aʻe.

Source: opennet.ru

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