Google LVI aizsardzības programmatūra uzrādīja 14x veiktspēju

Zola tilti no Google ierosināja LLVM kompilatoru komplektam ielāps ar SESES (Speculative Execution Side Effect Suppression) aizsardzības ieviešanu, kas palīdz bloķēt uzbrukumus spekulatīvajam izpildes mehānismam Intel CPU, piemēram, LVI. Aizsardzības metode tiek ieviesta kompilatora līmenī, un tās pamatā ir kompilatora norādījumu pievienošana, ģenerējot mašīnas kodu. ŽOGU, kas tiek ievietoti pirms katras atmiņas lasīšanas vai rakstīšanas instrukcijas, kā arī pirms pirmās zaru instrukcijas instrukciju grupā, kas beidz bloku.

LFENCE instrukcija gaida visus iepriekšējos atmiņas nolasījumus, lai veiktu izpildi, un atspējo turpmāko instrukciju priekšapņemšanos pēc LFENCE, līdz apstiprināšana ir pabeigta. LFENCE izmantošana izraisa ievērojamu veiktspējas samazināšanos, tāpēc īpaši kritiskam kodam tiek ierosināts izmantot aizsardzību ārkārtējos gadījumos. Papildus pilnīgai aizsardzībai ielāps piedāvā trīs karogus, kas ļauj selektīvi atspējot noteiktus aizsardzības līmeņus, lai samazinātu negatīvo ietekmi uz veiktspēju.

Veiktajos testos SESES aizsardzības izmantošana BoringSSL pakotnei ļāva samazināt bibliotēkas veikto operāciju skaitu sekundē 14 reizes - bibliotēkas aizsargātās versijas veiktspēja vidēji bija tikai 7.1% no neaizsargāta versija (variācijas atkarībā no testa no 4% līdz 23%).

Salīdzinājumam: ierosināts Iepriekš GNU Assembler mehānisms, kas veic LFENCE aizstāšanu pēc katras atmiņas ielādes darbības un pirms dažām atzaru instrukcijām, uzrādīja veiktspējas samazināšanos aptuveni 5 reizes (22% no koda bez aizsardzības). Aizsardzības metode ir arī ierosināts и īstenota Intel inženieri, taču tā veiktspējas testēšanas rezultāti vēl nav publicēti. Sākotnēji pētnieki, kuri identificēja LVI uzbrukumu, paredzēja veiktspējas samazināšanos 2 līdz 19 reizes, piemērojot pilnu aizsardzību.

Avots: opennet.ru

Pievieno komentāru