Grupo de esploristoj de la Vrije Universiteit Amsterdam publikigis la ilaron Kasper, desegnitan por detekti kernojn. Linux Kodfragmentoj uzeblaj por ekspluati vundeblecojn de la klaso Spectre kaŭzitajn de spekulativa kodplenumo sur la procesoro. La fontkodo por la ilaro estas distribuita sub la permesilo Apache 2.0.
Ni rememoru, ke por efektivigi atakojn kiel Spectre v1, kiuj ebligas determini la enhavon de memoro, necesas la ĉeesto en la privilegiita kodo de certa sinsekvo de komandoj (gadgets), kondukante al konjekta plenumo de instrukcioj. . Por optimumigo, la procesoro komencas ekzekuti tiajn noviletojn en konjekta reĝimo, tiam determinas ke la branĉa prognozo ne estis pravigita kaj retroiras la operaciojn al sia origina stato, sed la datumoj prilaboritaj dum konjekta ekzekuto finiĝas en la kaŝmemoro kaj mikroarkitekturaj bufroj kaj estas havebla por rehavigo de ili uzante diversajn metodojn determini restajn datumojn per triapartaj kanaloj.
Antaŭe disponeblaj iloj por skanado de aparatoj por la vundebleco Spectre, bazita sur serĉado de tipaj ŝablonoj, montris tre altan nivelon de falsaj pozitivoj, dum mankis multaj realaj iloj (eksperimentoj montris ke 99% de iloj identigitaj per tiaj iloj ne povus esti uzataj por atakoj. , kaj 33% de laboraj aparatoj kiuj povus kaŭzi atakon ne estis rimarkitaj).
Por plibonigi la kvaliton de identigado de problemaj aparatoj, Kasper modeligas vundeblecojn kiujn atakanto povas ekspluati ĉe ĉiu paŝo de farado de Spectre-klasaj atakoj - problemoj kiuj permesas datumkontrolon estas modeligitaj (ekzemple, anstataŭigado de atakantdatenoj en mikroarkitekturajn strukturojn por influi postan konjektan ekzekuton uzante). LVI-klasatakoj), akiri aliron al konfidencaj informoj (ekzemple, kiam irante preter bufrolimoj aŭ uzante memoron post kiam ĝi estas liberigita) kaj likas konfidencajn informojn (ekzemple, analizante la staton de la procesorkaŝmemoro aŭ uzante la MDS-metodon).

Dum testado, la kerno komunikas kun la rultempaj bibliotekoj de Kasper kaj LLVM-bazitaj kontroloj. La kontrolo imitas spekulativan kodplenumon uzante kontrolpunktan restarigan mekanismon, kiu intence plenumas misantaŭviditan kodbranĉon kaj poste restarigas la originalan staton antaŭ ol la branĉo okazis. Kasper ankaŭ provas simuli diversajn programarajn kaj aparatarajn vundeblecojn, analizas la efikon de arkitekturaj kaj mikroarkitekturaj efikoj, kaj plenumas malprecizajn testojn pri eblaj atakantaj agoj. La kerna pordo DataFlowSanitizer estas uzata por analizo de la fluo de la plenumfluo. Linux, kaj por testado de malklaraj funkcioj modifitan version de la pakaĵo syzkaller.

Dum kerna skanado Linux Uzante Kasper, oni identigis 1 379 antaŭe nekonatajn noviletojn, kiuj eble kaŭzas datenlikojn dum spekulativa instrukcia plenumo. Rimarkinde estas, ke nur subaro de ĉi tiuj povus prezenti realajn problemojn, sed por montri, ke ekzistas reala, ne nur teoria, minaco, oni evoluigis funkcian prototipan ekspluaton por unu el la problemaj kodfragmentoj, kaŭzante informlikon el la kerna memoro.
fonto: opennet.ru
