Sårbarhet i den spekulativa exekveringsmekanismen för AMD-processorer

Grsecurity-projektet har publicerat detaljer och en demonstration av en angreppsmetod för en ny sårbarhet (CVE-2021-26341) i AMD-processorer relaterad till spekulativ exekvering av instruktioner efter ovillkorliga framåthoppsoperationer. Om attacken lyckas möjliggör sårbarheten bestämning av innehållet i godtyckliga minnesområden. Till exempel har forskare förberett en exploit som gör det möjligt att bestämma adresslayouten och kringgå KASLR-skyddsmekanismen (kernel memory randomization) genom att exekvera oprivilegierad kod i ePBF-kärnundersystemet. Andra attackscenarier som kan leda till läckage av kärnminnesinnehåll utesluts inte.

Sårbarheten möjliggör skapande av förhållanden där processorn, under förväntad exekvering, spekulativt bearbetar en instruktion efter hoppinstruktionen i minnet omedelbart efter hoppinstruktionen (SLS, Straight Line Speculation). Dessutom fungerar sådan optimering inte bara för villkorliga hoppoperatorer, utan även för instruktioner som innebär ett direkt villkorslöst hopp, såsom JMP, RET och CALL. Efter villkorslösa hoppinstruktioner kan godtyckliga data som inte är avsedda för exekvering placeras. Efter att ha fastställt att hoppet inte innebär exekvering av nästa instruktion, återställer processorn helt enkelt tillståndet och tar inte hänsyn till spekulativ exekvering, men spåret av instruktionsexekveringen finns kvar i den allmänna cachen och är tillgängligt för analys med hjälp av sidokanalextraktionsmetoder.

Precis som med Spectre-v1-sårbarheten kräver attacken att vissa instruktionssekvenser (prylar) finns i kärnan som leder till spekulativ exekvering. Att blockera sårbarheten innebär dock att identifiera sådana prylar i koden och lägga till ytterligare instruktioner till dem som blockerar spekulativ exekvering. Spekulativa exekveringsvillkor kan också skapas med hjälp av oprivilegierade program som körs i virtuell maskin eBPF. För att förhindra att gadgets skapas med hjälp av eBPF rekommenderas det att inaktivera obehörig åtkomst till eBPF i systemet ("sysctl -w kernel.unprivileged_bpf_disabled=1").

Sårbarheten påverkar processorer baserade på mikroarkitekturerna Zen1 och Zen2, inklusive första och andra generationens AMD EPYC- och AMD Ryzen Threadripper-processorer, samt AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO och A-seriens APU:er. För att blockera spekulativ exekvering av instruktioner rekommenderas att anropa INT3- eller LFENCE-instruktioner efter förgreningsoperationer (RET, JMP, CALL).

Källa: opennet.ru