Tha Retbleed na ionnsaigh ùr air an uidheamachd cur an gnìomh tuairmeasach de Intel agus AMD CPUs

Tha buidheann de luchd-rannsachaidh bho ETH Zurich air ionnsaigh ùr a chomharrachadh air an dòigh air coileanadh tuairmeasach de ghluasadan neo-dhìreach anns an CPU, a tha ga dhèanamh comasach fiosrachadh a thoirt a-mach à cuimhne kernel no ionnsaigh a chuir air an t-siostam aoigheachd bho innealan brìgheil. Tha na so-leòntachd air an còdadh Retbleed (CVE-2022-29900, CVE-2022-29901) agus tha iad faisg ann an nàdar air ionnsaighean Specter-v2. Tha an eadar-dhealachadh a’ tighinn sìos gu bhith a’ cur an gnìomh tuairmeasach còd neo-riaghailteach nuair a thathar a’ giullachd an stiùiridh “ret” (tilleadh), a gheibh an seòladh airson leum bhon chruach, an àite leum neo-dhìreach a’ cleachdadh an stiùireadh “jmp”, a’ luchdachadh an t-seòlaidh bho cuimhne no clàr CPU.

Faodaidh neach-ionnsaigh suidheachaidhean a chruthachadh airson ro-innse gluasaid ceàrr agus cuir air dòigh eadar-ghluasad cuimsichte, tuairmeasach gu bloc de chòd nach eil air a sholarachadh le loidsig coileanadh a’ phrògraim. Aig a’ cheann thall, co-dhùinidh am pròiseasar nach robh ro-innse a’ mheur air fhìreanachadh agus bheir e air ais an obair chun an t-suidheachaidh thùsail aige, ach thig an dàta a thèid a ghiullachd aig àm cur gu bàs tuairmeasach gu crìch anns an tasgadan agus bufairean microarchitectural. Ma gheibh bloc a chaidh a chuir gu bàs gu mearachdach cothrom air cuimhne, leanaidh a chuir gu bàs tuairmeasach gu dàta a thèid a leughadh bhon chuimhne a thasgadh anns an tasgadan roinnte.

Gus faighinn a-mach dè an dàta a tha air fhàgail san tasgadan às deidh gnìomhachd tuairmeasach, faodaidh neach-ionnsaigh dòighean taobh-seanail a chleachdadh gus dàta a tha air fhàgail a dhearbhadh, leithid mion-sgrùdadh air atharrachaidhean ann an amannan ruigsinneachd gu dàta taisgte agus neo-thasgadh. Gus fiosrachadh a tharraing a dh’aona ghnothach bho raointean aig ìre sochair eile (mar eisimpleir, bho chuimhne kernel), thathas a’ cleachdadh “innealan” - sreathan de dh’ àitheantan a tha an làthair anns an kernel a tha freagarrach airson dàta a leughadh gu tuairmeasach bhon chuimhne a rèir suidheachaidhean taobh a-muigh a dh’ fhaodadh buaidh a thoirt air. an neach-ionnsaigh.

Gus dìon an aghaidh ionnsaighean clas Specter clasaigeach a bhios a’ cleachdadh stiùireadh leum cumhach agus neo-dhìreach, bidh a’ mhòr-chuid de shiostaman obrachaidh a’ cleachdadh an dòigh “retpoline”, a tha stèidhichte air a bhith a’ cur an àite gnìomhachd leum neo-dhìreach leis an stiùireadh “ret”, far am bi luchd-giullachd a’ cleachdadh aonad ro-innse stàite stac air leth. . gun a bhith a’ cleachdadh bloc ro-innse meur. Nuair a chaidh retpoline a thoirt a-steach ann an 2018, bhathas a’ creidsinn nach robh làimhseachadh seòlaidhean coltach ri Specter practaigeach airson branndadh tuairmeasach a’ cleachdadh an stiùireadh “ret”.

Sheall an luchd-rannsachaidh a leasaich an dòigh ionnsaigh Retbleed gu robh e comasach suidheachaidhean microarchitectural a chruthachadh airson gluasad tuairmeasach a thòiseachadh a’ cleachdadh an stiùireadh “ret” agus dh’ fhoillsich iad innealan deiseil airson a bhith a’ comharrachadh sreathan de stiùiridhean (innealan) a tha freagarrach airson brath a ghabhail air so-leòntachd ann an kernel Linux, anns am bheil a leithid sin de shuidheachaidhean 'gan nochdadh fèin.

Rè an rannsachaidh, chaidh brath obrach ullachadh a leigeas, air siostaman le Intel CPUs, dàta neo-riaghailteach a thoirt a-mach à cuimhne kernel bho phròiseas neo-leasaichte ann an àite luchd-cleachdaidh aig astar 219 bytes gach diog agus cruinneas 98%. Air pròiseasairean AMD, tha èifeachdas an t-seallaidh mòran nas àirde - is e an ìre aodion 3.9 KB gach diog. Mar eisimpleir pragtaigeach, bidh sinn a’ sealltainn mar a chleachdas sinn a’ bhuannachd a thathar a’ moladh gus susbaint an fhaidhle /etc/shadow a dhearbhadh. Air siostaman le Intel CPUs, chaidh an ionnsaigh gus hash facal-faire neach-cleachdaidh freumh a dhearbhadh a dhèanamh ann an 28 mionaidean, agus air siostaman le AMD CPUs - ann an 6 mionaidean.

Chaidh an ionnsaigh a dhearbhadh airson ginealaichean 6-8 de phròiseasan Intel a chaidh a leigeil ma sgaoil ro Q3 2019 (a ’toirt a-steach Skylake), agus pròiseasairean AMD stèidhichte air microarchitectures Zen 1, Zen 1+, agus Zen 2 a chaidh a leigeil ma sgaoil ro Q2021 3. Ann am modalan pròiseasar nas ùire leithid AMD ZenXNUMX agus Intel Alder Lake, a bharrachd air ann am pròiseasairean ARM, tha an duilgheadas air a bhacadh leis na dòighean dìon a th ’ann. Mar eisimpleir, le bhith a’ cleachdadh stiùireadh IBRS (Meur Indirect Restricted Speculation) a’ cuideachadh le dìon an aghaidh ionnsaighean.

Chaidh seata de dh’ atharrachaidhean ullachadh airson an kernel Linux agus an Xen hypervisor, a chuireas casg air an duilgheadas ann am bathar-bog air seann CPUs. Bidh am paiste a thathar a’ moladh airson an kernel Linux ag atharrachadh faidhlichean 68, a’ cur loidhnichean 1783 ris, agus a’ cuir às do loidhnichean 387. Gu mì-fhortanach, tha an dìon a 'leantainn gu cosgaisean mòra mòra - anns na teacsaichean a chaidh a dhèanamh air pròiseasairean AMD agus Intel, thathar a' meas gu bheil an lùghdachadh coileanaidh bho 14% gu 39%. Tha e nas fheàrr dìon a chleachdadh stèidhichte air stiùireadh IBRS, a tha ri fhaighinn ann an ginealaichean ùra de Intel CPUs agus le taic a’ tòiseachadh leis an Linux kernel 4.19.

Air pròiseasairean Intel, bithear a’ cur an àite seòladh airson leum neo-dhìreach tuairmeasach mar thoradh air feart a nochdas nuair a bhios tar-shruth a’ tachairt tron ​​​​chrìoch as ìsle (fo-shruth) anns an Return Stack Buffer. Nuair a thachras an leithid de shuidheachaidhean, bidh an stiùireadh “ret” a’ tòiseachadh a’ cleachdadh loidsig taghadh seòlaidhean coltach ris an fhear a thathas a’ cleachdadh airson geansaidhean neo-dhìreach àbhaisteach. Chaidh còrr air mìle àite a lorg anns an kernel Linux a chruthaicheas suidheachaidhean airson a leithid de chùl-sruth a thòiseachadh agus a tha ruigsinneach tro ghairmean siostaim.

Air pròiseasairean AMD, bithear a’ dèanamh tuairmeasach air an stiùireadh “ret” gun iomradh a thoirt air bufair a tha sònraichte do chruach (Return Address Stack) agus tha aonad ro-innse a’ mheur a’ beachdachadh air an stiùireadh “ret” chan ann mar thilleadh smachd, ach mar mheur neo-dhìreach. , agus, a rèir sin, a’ cleachdadh an dàta airson ro-innse nuair a thathar a’ ro-innse eadar-ghluasadan neo-dhìreach. Fo na cumhaichean seo, faodar brath a ghabhail air cha mhòr gnìomhachd “ret” sam bith a ruigear tro ghairm siostam.

A bharrachd air an sin, chaidh cùis eile a chomharrachadh cuideachd ann an AMD CPUs (CVE-2022-23825, Meur Type Confusion) co-cheangailte ri buileachadh mheuran meallta - faodaidh suidheachaidhean airson ro-innse meur tachairt eadhon às aonais an stiùireadh meur riatanach, a leigeas le buaidh a thoirt air bufair ro-innse meur às aonais an stiùireadh "ret". Tha am feart seo gu mòr a’ dèanamh iom-fhillte air buileachadh dìon agus tha feum air glanadh nas gnìomhaiche air bufair ro-innse a’ mheur. Le bhith a’ cur làn dhìon ris an kernel thathar an dùil gun àrdaich e an còrr 209%.

Source: fosgailtenet.ru

Cuir beachd ann