Retbleed êrîşek nû ye li ser mekanîzmaya darvekirina spekulatîf a CPUyên Intel û AMD

Komek lêkolînerên ji ETH Zurich êrîşek nû li ser mekanîzmaya darvekirina spekulatîf ya veguheztinên nerasterast di CPU de nas kir, ku dihêle hûn agahdariya ji bîra kernel derxînin an êrîşek li ser pergala mêvandar ji makîneyên virtual organîze bikin. Qelsiyên bi kodnavê Retbleed (CVE-2022-29900, CVE-2022-29901) ne û di xwezayê de nêzî êrîşên Specter-v2 ne. Cûdahî di organîzasyona înfaza spekulatîf a koda keyfî de ye dema ku talîmata "ret" (vegerê) hildiberîne, ku navnîşana ku ji stikê bavêje, li şûna bazdanek nerasterast bi karanîna fermana "jmp" digire, navnîşan ji bar dike. bîra an qeydek CPU.

Êrîşkarek dikare şert û mercên ji bo pêşbîniya veguherîna çewt biafirîne û veguheztinek armanckirî, spekulatîf a bloka kodê ya ku ji hêla mantiqa darvekirina bernameyê ve nehatiye peyda kirin organîze bike. Di dawiyê de, pêvajo dê diyar bike ku pêşbîniya şaxê ne rastdar bû û dê operasyonê vegerîne rewşa xweya orjînal, lê daneyên ku di dema darvekirina spekulatîf de têne hilberandin dê di kaş û tamponên mîkromîmarî de biqede. Ger bloka ku bi xeletî hatî darve kirin bigihîje bîranînê, wê hingê înfazkirina wê ya spekulatîf dê bibe sedema ku daneya ji bîrê were xwendin di cacheya hevpar de were razandin.

Ji bo destnîşankirina daneyên ku piştî operasyonên spekulatîf di cache de mayî, êrîşkar dikare teknîkên kanala alîgir bikar bîne da ku daneyên mayî diyar bike, wek mînak analîzkirina guhertinên di demên gihîştina daneyên cache û neçaxkirî de. Ji bo ku bi mebesta agahdariya ji deverên di astek din a îmtiyazê de (mînakî, ji bîranîna kernelê) were derxistin, "gadgets" têne bikar anîn - rêzikên fermanên ku di kernelê de hene ku ji bo xwendina spekulatîf daneyên ji bîranînê li gorî şert û mercên derveyî yên ku dikarin ji hêla bandor ve werin bandor kirin. êrîşkar.

Ji bo parastina li dijî êrîşên çîna Specter ên klasîk ên ku rêwerzên bazdanê yên bi şert û neyekser bikar tînin, pir pergalên xebitandinê teknîka "retpoline" bikar tînin, ku li ser veguheztina operasyonên neyekser bi talîmata "ret" ve girêdayî ye, ji bo ku pêvajoker yekîneyek pêşbîniya rewşa stackê ya cihê bikar tînin. bloka pêşbîniya şaxê nayê bikar anîn. Dema ku retpoline di sala 2018-an de hate destnîşan kirin, dihat bawer kirin ku manîpulasyonên navnîşana mîna Specter ji bo şaxkirina spekulatîf bi karanîna rêwerzên "ret" ne pratîkî ne.

Lekolînwanên ku rêbaza êrîşa Retbleed pêş xistin, îhtîmala afirandina şert û mercên mîkroarchitectural ji bo destpêkirina veguheztinek spekulatîf bi karanîna rêwerzên "ret" destnîşan kirin û amûrên amade yên ji bo destnîşankirina rêzikên rêwerzan (gadgets) yên ku ji bo îstismarkirina qelsiya di kernel Linux de maqûl in, weşandin. ku şert û mercên wiha xwe tê de diyar dikin.

Di dema lêkolînê de, îstîsmarek xebitandinê hate amadekirin ku dihêle, li ser pergalên bi CPU-yên Intel, daneyên keyfî ji bîra kernelê ji pêvajoyek bêdestûr di cîhê bikarhêner de bi leza 219 byte di çirkeyek û 98% rastbûnê de derxînin. Li ser pêvajoyên AMD-ê, karbidestiya îstîsmarê pir zêde ye - rêjeya lehê 3.9 KB di çirkeyê de ye. Wekî mînakek pratîkî, em destnîşan dikin ka meriv çawa karanîna pêşnûmeyê bikar tîne da ku naveroka pelê /etc/shadow diyar bike. Li ser pergalên bi CPU-yên Intel, êrîşa ji bo destnîşankirina şîfreya şîfreya bikarhênerê root di 28 hûrdeman de, û li ser pergalên bi CPU-yên AMD - di 6 hûrdem de hate kirin.

Êrîş ji bo nifşên 6-8-ê yên pêvajoyên Intel-ê yên ku beriya Q3 2019-an hatine berdan (tevî Skylake), û pêvajoyên AMD-ê yên li ser bingeha mîkro-architecturên Zen 1, Zen 1+, û Zen 2-ê ku beriya Q2021 3-an hatine berdan, hatine pejirandin. Di modelên pêvajoyên nû yên wekî AMD ZenXNUMX û Intel Alder Lake, û her weha di pêvajoyên ARM de, pirsgirêk ji hêla mekanîzmayên parastinê yên heyî ve têne asteng kirin. Mînakî, karanîna rêwerzên IBRS (Spekulasyona Sînorkirî ya Şaxa Nerasterast) ji êrîşan re dibe alîkar.

Ji bo kernel Linux û Xen hypervisor komek guhertin hatine amadekirin, ku dê pirsgirêkê di nermalava li ser CPU-yên kevn de asteng bike. Patcha pêşniyarkirî ji bo kernel Linux 68 pelan diguherîne, 1783 rêzan lê zêde dike û 387 rêzan jê dike. Mixabin, parastin dibe sedema lêçûnên giran - di metnên ku li ser pêvajoyên AMD û Intel hatine kirin de, kêmbûna performansê ji% 14 heya 39% tê texmîn kirin. Zêdetir e ku meriv parastinê li ser bingeha rêwerzên IBRS-ê bikar bîne, ku di nifşên nû yên CPU-yên Intel de peyda dibe û bi kernel Linux 4.19-ê dest pê dike.

Li ser pêvajoyên Intel-ê, veguheztina navnîşan ji bo bazdanek nerasterast a spekulatîf bi xêra taybetmendiyekê tête kirin ku dema ku zêdebûnek di nav sînorê jêrîn (binherikîn) de di Tampona Return Stack de çêdibe. Dema ku şert û mercên weha çêdibin, talîmata "ret" dest bi sepandina mantiqa hilbijartina navnîşan dike, mîna ya ku ji bo bazdanên nerasterast normal tê bikar anîn. Zêdetirî hezar cih di kernel Linux de hatine dîtin ku şert û mercên destpêkirina paşveçûnek wusa diafirînin û bi bangên pergalê ve têne gihîştin.

Li ser pêvajoyên AMD-ê, pêkanîna spekulatîf a fermana "ret" bêyî referansa tamponek taybetî ya stackê (Staka Navnîşana Vegerê) tê meşandin û yekîneya pêşbînkirina şaxê fermana "ret" ne wekî vegerek kontrolê, lê wekî şaxek neyekser dihesibîne. , û, li gorî vê yekê, daneyan ji bo pêşbînkirina veguherînên nerasterast bikar tîne. Di bin van şert û mercan de, hema hema her operasyona "ret" ya ku bi banga pergalê ve tê gihîştin dikare were bikar anîn.

Digel vê yekê, di CPU-yên AMD (CVE-2022-23825, Tevliheviya Tîpa Şaxê) de pirsgirêkek din jî hatiye nas kirin ku bi pêkanîna şaxên xeyalî ve girêdayî ye - şert û mercên pêşbîniya şaxê dikare bêyî rêwerzên şaxê jî çêbibin, ku destûrê dide bandorkirina tampona pêşbîniya şaxê. bêyî talîmata "ret". Ev taybetmendî bi girîngî pêkanîna parastinê tevlihev dike û paqijkirina çalaktir a tampona pêşbîniya şaxê hewce dike. Zêdekirina parastina bêkêmasî li kernelê tê çaverê kirin ku sermayê ji sedî 209 zêde bike.

Source: opennet.ru

Add a comment