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

Grsecurity-projektet har publicerat detaljer och en demonstration av attackmetoden för en ny sårbarhet (CVE-2021-26341) i AMD-processorer relaterad till spekulativ exekvering av instruktioner efter ovillkorliga vidarebefordran. Om attacken lyckas gör sårbarheten att innehållet i godtyckliga minnesområden kan fastställas. Forskare har till exempel förberett en exploatering som låter dem bestämma adresslayouten och kringgå KASLR-skyddsmekanismen (kernel memory randomization) genom att exekvera oprivilegierad kod i ePBF-kärnundersystemet. Andra attackscenarier kan inte uteslutas som kan leda till ett läckage av kärnminnesinnehåll.

Sårbarheten låter dig skapa förhållanden under vilka processorn, under förebyggande exekvering, spekulativt bearbetar instruktionen omedelbart efter hoppinstruktionen i minnet (SLS, Straight Line Speculation). Dessutom fungerar sådan optimering inte bara för villkorliga hoppoperatörer, utan också för instruktioner som innebär direkta ovillkorliga hopp, såsom JMP, RET och CALL. Efter ovillkorliga hoppinstruktioner kan godtyckliga data som inte är avsedda för exekvering placeras. Efter att ha fastställt att en gren inte involverar exekvering av nästa instruktion, rullar processorn helt enkelt tillbaka tillståndet och ignorerar spekulativ exekvering, men spåret av instruktionsexekvering finns kvar i den delade cachen och är tillgänglig för analys med hjälp av sidokanalsåtervinningstekniker.

Precis som med exploateringen av Spectre-v1-sårbarheten, kräver attacken närvaron av vissa sekvenser av instruktioner (prylar) i kärnan som leder till spekulativ exekvering. Att blockera en sårbarhet i det här fallet handlar om att identifiera sådana gadgets i koden och lägga till ytterligare instruktioner till dem som blockerar spekulativ exekvering. Villkor för spekulativ exekvering kan också skapas av oprivilegierade program som körs i den virtuella eBPF-maskinen. För att blockera möjligheten att konstruera prylar med eBPF, rekommenderas det att inaktivera oprivilegierad åtkomst till eBPF i systemet ("sysctl -w kernel.unprivileged_bpf_disabled=1").

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

Källa: opennet.ru

Lägg en kommentar