AMD har bekräftat den potentiella sårbarheten hos AMD Zen 3-processorer för Spectre-STL-attacken

AMD har publicerat en rapport som analyserar säkerheten för PSF (Predictive Store Forwarding) optimeringsteknik implementerad i Zen 3-seriens processorer. Studien bekräftade teoretiskt tillämpligheten av Spectre-STL (Spectre-v4) attackmetoden, som identifierades i maj 2018, för att PSF-teknik, men i praktiken har inga kodmallar som kan leda till en attack ännu hittats och den totala faran bedöms som obetydlig.

Låt oss komma ihåg att Spectre-v4 (Speculative Store Bypass)-attacken är baserad på att återställa data som har lagt sig i processorns cache efter att ha förkastat resultatet av spekulativ exekvering av operationer vid bearbetning av alternerande skriv- och läsoperationer med indirekt adressering. När en läsoperation följer en skrivoperation (t.ex. mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), kan förskjutningen av läsadressen redan vara känd på grund av att liknande operationer utförs (läsoperationer är utförs mycket oftare och läsningar kan utföras från cachen) och processorn kan spekulativt utföra läsningar före skrivningar utan att vänta på att skrivningens indirekta offset ska beräknas.

Denna funktion tillåter en läsinstruktion för att komma åt ett gammalt värde på någon adress medan lagringsoperationen ännu inte är klar. Om det finns ett prediktionsfel kommer den misslyckade spekulativa operationen att kasseras, men spåren av dess exekvering kommer att finnas kvar i processorcachen och kan hämtas med en av metoderna för att bestämma innehållet i cachen baserat på en analys av ändringar i åtkomst tid till cachad och uncachad data.

Tillagd till AMD Zen 3-processorer, optimerar PSF STLF (Store-To-Load-Forwarding), som utför läsoperationer spekulativt genom att förutsäga förhållandet mellan läs- och skrivoperationer. När du använder klassisk STLF utför processorn en "load"-operation på data som skickas direkt från det föregående "store"-kommandot, utan att vänta på att resultatet faktiskt ska skrivas till minnet, men se till att adresserna som används i "load" och "store"-kommandon matchar. PSF-optimeringen gör adresskontroll spekulativ och utför en "laddningsoperation" innan adressinformationen har beräknats om ett lagra/laddningspar som manipulerar en enda adress tidigare har exekverats. Om förutsägelsen misslyckas rullas tillståndet tillbaka, men data finns kvar i cachen.

En attack på PSF är endast möjlig inom ramen för en nivå av privilegier, täcker endast det aktuella processkontexten och blockeras av metoder för adressutrymmesisolering eller hårdvaru-sandlådemekanismer. I det här fallet kan sandlådor för programvara i processer potentiellt påverkas av problemet. Attacken utgör ett hot mot system som webbläsare, virtuella maskiner för kodexekvering och JIT:er som exekverar tredjepartskod inom en enda process (attacken kan tillåta otillförlitlig sandlådekod att få tillgång till annan processdata).

AMD har tillhandahållit ett antal metoder för att helt eller selektivt inaktivera PSF, men med tanke på den försumbara risken för de flesta applikationer, har rekommenderat att denna optimering inte inaktiveras som standard. För att selektivt skydda processer som isolerar de som exekverar opålitlig kod, föreslås det att inaktivera PSF genom att ställa in "SSBD" och "PSFD" MSR-bitar, inklusive för enskilda trådar. Patchar har förberetts för Linux-kärnan med implementeringen av kommandoradsalternativen "psfd" och "nopsfd" som styr hur PSF slås på och av.

Källa: opennet.ru

Lägg en kommentar