TvÄ sÄrbarheter har identifierats i Linux-kÀrnan som gör att eBPF-undersystemet kan kringgÄ attackskyddet Spectre v4 (SSB, Speculative Store Bypass). Med hjÀlp av ett oprivilegierat BPF-program kan en angripare skapa förutsÀttningar för spekulativ exekvering av vissa operationer och bestÀmma innehÄllet i godtyckliga omrÄden i kÀrnminnet. Escort eBPF-delsystem i kÀrnan fick tillgÄng till en prototypexploat som demonstrerar möjligheten att begÄ attacker i praktiken. Problemen har ÄtgÀrdats i form av patchar (1, 2) som kommer att ingÄ i nÀsta Linux-kÀrnauppdatering. Uppdateringar i distributioner har Ànnu inte skapats (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).
Spectre 4-attackmetoden Àr baserad pÄ att ÄterstÀlla data som har lagt sig i processorcachen efter att ha förkastat resultatet av spekulativt exekvering av operationer vid bearbetning av alternerande skriv- och lÀsoperationer med indirekt adressering. NÀr en lÀsoperation följer en skrivoperation (till exempel mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), kan lÀsadressförskjutningen redan vara kÀnd pÄ grund av att liknande operationer utförs (lÀsoperationer utförs mycket oftare och en lÀsning kan utföras frÄn cachen) och processorn kan spekulativt utföra en lÀsning före en skrivning utan att vÀnta pÄ att skrivinriktningsförskjutningen ska berÀknas.
Om, efter berÀkning av offset, en skÀrning av minnesomrÄden för skrivning och lÀsning detekteras, kommer processorn helt enkelt att förkasta det redan spekulativt erhÄllna lÀsresultatet och upprepa denna operation. Denna funktion tillÄter lÀsinstruktionen att komma Ät det gamla vÀrdet pÄ nÄgon adress medan lagringsoperationen Ànnu inte har slutförts. Efter att ha kasserat en misslyckad spekulativ operation, finns spÄr av dess exekvering kvar i cachen, varefter en av metoderna för att bestÀmma innehÄllet i cachen baserat pÄ analys av Àndringar i Ätkomsttiden till cachad och inte cachad data kan anvÀndas för att hÀmta Det.
Den första sÄrbarheten (CVE-2021-35477) orsakas av ett fel i BPF-programverifieringsmekanismen. För att skydda mot Spectre 4-attacken lÀgger verifieraren till en ytterligare instruktion efter potentiellt problematiska lagringsoperationer till minnet, och lagrar vÀrdet pÄ noll för att ta bort spÄr frÄn föregÄende operation. Nollskrivningsoperationen var tÀnkt att vara mycket snabb och blockera spekulativ exekvering, eftersom den bara beror pÄ pekaren till BPF-stackramen. Men i sjÀlva verket visade det sig vara möjligt att skapa förutsÀttningar under vilka instruktionen som leder till spekulativ utförande hinner verkstÀllas före den förebyggande butiksdriften.
Den andra sÄrbarheten (CVE-2021-3455) Àr relaterad till det faktum att nÀr potentiellt farliga minneslagringsoperationer upptÀcks av BPF-verifieraren, tas inte hÀnsyn till oinitierade omrÄden i BPF-stacken, varvid den första skrivoperationen inte Àr skyddad . Denna funktion leder till möjligheten att utföra en spekulativ lÀsoperation, beroende pÄ ett oinitierat minnesomrÄde, innan en lagringsinstruktion exekveras. Nytt minne för BPF-stacken tilldelas utan att kontrollera innehÄllet som redan finns i det allokerade minnet, och det finns ett sÀtt att hantera innehÄllet i minnesomrÄdet som sedan kommer att allokeras till BPF-stacken innan BPF-programmet startar.
KĂ€lla: opennet.ru
