Vundebleco en la konjekta ekzekutmekanismo de AMD-procesoroj

La projekto Grsecurity publikigis detalojn kaj pruvon de la atakmetodo por nova vundebleco (CVE-2021-26341) en AMD-procesoroj rilate al spekula ekzekuto de instrukcioj post senkondiĉaj antaŭaj operacioj. Se la atako estas sukcesa, la vundebleco permesas la enhavon de arbitraj memorareoj esti determinita. Ekzemple, esploristoj preparis ekspluataĵon kiu permesas al ili determini la adresenpaĝigon kaj preteriri la KASLR (kernelmemoro-hazardigo) protektan mekanismon efektivigante senprivilegian kodon en la ePBF-kernsubsistemo. Aliaj atakscenaroj ne povas esti ekskluditaj, kiuj povus konduki al liko de kernmemorenhavo.

La vundebleco permesas krei kondiĉojn, sub kiuj la procesoro, dum preventa ekzekuto, spekulative prilaboras la instrukcion tuj sekvante la saltinstrukcion en memoro (SLS, Straight Line Speculation). Plie, tia optimumigo funkcias ne nur por kondiĉaj saltfunkciigistoj, sed ankaŭ por instrukcioj kiuj implicas rektan senkondiĉan salton, kiel ekzemple JMP, RET kaj CALL. Sekvante senkondiĉajn saltinstrukciojn, arbitraj datenoj kiuj ne estas destinitaj por ekzekuto povas esti metitaj. Post determinado ke branĉo ne implikas ekzekuton de la venonta instrukcio, la procesoro simple ruliĝas reen la ŝtaton kaj ignoras konjektan ekzekuton, sed la spuro de instrukcioekzekuto restas en la komuna deponejo kaj estas havebla por analizo uzante flank-kanalaj rehavigteknikoj.

Same kiel kun la ekspluatado de la vundebleco Spectre-v1, la atako postulas la ĉeeston de certaj sekvencoj de instrukcioj (gadgets) en la kerno, kiuj kondukas al konjekta ekzekuto. Bloki vundeblecon ĉi-kaze signifas identigi tiajn aparatojn en la kodo kaj aldoni al ili pliajn instrukciojn, kiuj blokas spekulan ekzekuton. Kondiĉoj por konjekta ekzekuto ankaŭ povas esti kreitaj per senprivilegiaj programoj kurantaj en la virtuala maŝino eBPF. Por bloki la kapablon konstrui aparatojn uzante eBPF, oni rekomendas malebligi senprivilegian aliron al eBPF en la sistemo ("sysctl -w kernel.unprivileged_bpf_disabled=1").

La vundebleco influas procesorojn bazitajn sur la mikroarkitekturo Zen1 kaj Zen2, inkluzive de la unua kaj dua generacioj de procesoroj AMD EPYC kaj AMD Ryzen Threadripper, same kiel AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. PRO- kaj APU-serioprocesoroj A. Por bloki spekulan ekzekuton de instrukcioj, oni rekomendas voki INT3 aŭ LFENCE-instrukciojn post branĉoperacioj (RET, JMP, CALL).

fonto: opennet.ru

Aldoni komenton