Vundebleco en Intel-procesoroj kondukante al datumfluado tra triaj kanaloj

Grupo de esploristoj de ĉinaj kaj amerikaj universitatoj identigis novan vundeblecon en Intel-procesoroj, kiu kondukas al triaparta elfluo de informoj pri la rezulto de spekulaj operacioj, kiuj povas esti uzataj, ekzemple, por organizi kaŝitan komunikadkanalon inter procezoj aŭ. identigi likojn dum Meltdown-atakoj.

La esenco de la vundebleco estas, ke ŝanĝo en la registro de procesoro EFLAGS, kiu okazas kiel rezulto de konjekta ekzekuto de instrukcioj, influas la postan ekzekuttempon de JCC-instrukcioj (salto kiam specifitaj kondiĉoj estas plenumitaj). Konjektaj operacioj ne finiĝas kaj la rezulto estas forĵetita, sed la forĵetita EFLAGS-ŝanĝo povas esti determinita analizante la ekzekuttempon de JCC-instrukciaĵo. Komparoperacioj faritaj en spekula reĝimo antaŭ la transiro, se sukcesaj, rezultigas malgrandan prokraston kiu povas esti mezurita kaj utiligita kiel signo por enhavelekto.

Vundebleco en Intel-procesoroj kondukante al datumfluado tra triaj kanaloj

Male al aliaj similaj flanka-kanalaj atakoj, la nova metodo ne analizas ŝanĝojn en alirtempo al kaŝmemoritaj kaj nekaŝigitaj datumoj kaj ne postulas stadion por restarigi la EFLAGS-registron al ĝia komenca stato, kio malfaciligas detekti kaj bloki la atakon. Kiel pruvo, la esploristoj efektivigis varianton de la Meltdown-atako, uzante novan metodon por akiri informojn pri la rezulto de spekula operacio. La funkciado de la metodo por organizi informfluon dum la Meltdown-atako estis sukcese pruvita sur sistemoj kun Intel Core i7-6700 kaj i7-7700 CPU en medio kun Ubuntu 22.04 kaj la Linukso-kerno 5.15. Sur sistemo kun Intel i9-10980XE CPU, la atako estis nur parte farita.

La vundebleco de Meltdown baziĝas sur la fakto, ke dum spekula ekzekuto de instrukcioj, la procesoro povas aliri privatan datuman areon kaj poste forĵeti la rezulton ĉar la fiksitaj privilegioj malpermesas tian aliron de la procezo de la uzanto. En la programo, la konjekte efektivigita bloko estas apartigita de la ĉefa kodo per kondiĉa branĉo, kiu en realaj kondiĉoj ĉiam pafas, sed pro la fakto, ke la kondiĉa deklaro uzas kalkulitan valoron, kiun la procesoro ne konas dum la preventa ekzekuto de la kodo, ĉiuj branĉo opcioj estas efektivigitaj spekulative.

En la klasika versio de Meltdown, ĉar la sama kaŝmemoro estas uzita por konjekte efektivigitaj operacioj kiel por normale efektivigitaj instrukcioj, estas eble dum konjekta ekzekuto meti markilojn en la kaŝmemoro kiuj reflektas la enhavon de individuaj bitoj en fermita memorareo, kaj tiam determini en normale efektivigita kodo ilian signifon per analizo de la alirtempo al kaŝmemoritaj kaj nekaŝigitaj datumoj. La nova varianto uzas ŝanĝon en la registro EFLAGS kiel liksignon. En la kaŝkanala pruvo, unu procezo modulis la datumojn transdonitajn por krei kondiĉojn por ŝanĝi la enhavon de la registro EFLAGS, kaj alia procezo analizis la ŝanĝon en la ekzekuttempo de la instrukcio de JCC por rekrei la datumojn transdonitajn de la unua procezo.

fonto: opennet.ru

Aldoni komenton