Googles LVI-skyddsprogram visade en 14x prestandaträff

Zola Bridges från Google han erbjöd för LLVM-kompilatoruppsättningen, en patch med implementering av SESES-skydd (Speculative Execution Side Effect Suppression), som hjälper till att blockera attacker på den spekulativa exekveringsmekanismen i Intel-processorer, som t.ex. HVAC. Skyddsmetoden implementeras på kompilatornivån och är baserad på kompilatorns tillägg vid generering av maskinkod med instruktioner LFENSE, som ersätts före varje instruktion att läsa från minnet eller skriva till minnet, och även före den första greninstruktionen i den grupp av instruktioner som avslutar blocket.

LFENCE-instruktionen väntar på att alla tidigare minnesläsningar ska begås och förhindrar förebyggande exekvering av efterföljande instruktioner efter LFENCE innan bekräftelsen är klar. Användningen av LFENCE leder till en betydande minskning av prestanda, så skydd föreslås användas i extrema fall för särskilt kritisk kod. Förutom fullt skydd erbjuder patchen tre flaggor som låter dig selektivt inaktivera vissa skyddsnivåer för att minska den negativa påverkan på prestanda.

I de tester som utförts ledde användningen av SESES-skydd för BoringSSL-paketet till en minskning av antalet operationer som utförs av biblioteket per sekund med 14 gånger - prestandan för biblioteksversionen kompilerad med skydd visade sig vara endast 7.1% på genomsnitt från indikatorerna för den oskyddade versionen (intervallet beroende på testet är från 4% till 23%).

Som jämförelse föreslagen tidigare för GNU Assembler visade mekanismen som utför LFENCE-substitution efter varje minnesladdningsoperation och före vissa greninstruktioner en prestandaminskning på cirka 5 gånger (22 % av koden utan skydd). skyddsmetoden också föreslagen и genomförs av Intels ingenjörer, men prestandatestresultat för det har ännu inte publicerats. Inledningsvis förutspådde forskarna som identifierade LVI-attacken en 2- till 19-faldig minskning av prestanda vid tillämpning av fullt skydd.

Källa: opennet.ru

Lägg en kommentar