Sårbarheder i eBPF, der kan omgå Spectre 4-angrebsbeskyttelse

To sårbarheder er blevet identificeret i Linux-kernen, der gør det muligt for eBPF-undersystemet at omgå Spectre v4 (SSB, Speculative Store Bypass) angrebsbeskyttelse. Ved at bruge et uprivilegeret BPF-program kan en angriber skabe betingelser for spekulativ udførelse af visse operationer og bestemme indholdet af vilkårlige områder af kernehukommelsen. Escort eBPF-undersystemer i kernen fik adgang til en prototypeudnyttelse, der demonstrerer muligheden for at begå angreb i praksis. Problemerne er blevet rettet i form af patches (1, 2), som vil være en del af den næste Linux-kerneopdatering. Opdateringer i distributioner er endnu ikke blevet dannet (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Spectre 4-angrebsmetoden er baseret på gendannelse af data, der har sat sig i processorcachen efter at have kasseret resultatet af spekulativ udførelse af operationer ved behandling af skiftende skrive- og læseoperationer ved hjælp af indirekte adressering. Når en læseoperation følger efter en skriveoperation (for eksempel mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), kan læseadresseforskydningen allerede være kendt på grund af lignende operationer, der udføres (læseoperationer udføres meget hyppigere, og en læsning kan udføres fra cachen), og processoren kan spekulativt udføre en læsning før en skrivning uden at vente på, at skriveindirektionsforskydningen bliver beregnet.

Hvis der efter beregning af forskydningen detekteres en skæring af hukommelsesområder til skrivning og læsning, vil processoren simpelthen kassere det allerede spekulativt opnåede læseresultat og gentage denne operation. Denne funktion tillader læseinstruktionen at få adgang til den gamle værdi på en eller anden adresse, mens butikshandlingen endnu ikke er afsluttet. Efter at have kasseret en mislykket spekulativ operation forbliver spor af dens udførelse i cachen, hvorefter en af ​​metoderne til at bestemme indholdet af cachen baseret på analysen af ​​ændringer i adgangstiden til cachelagrede og ikke cachelagrede data kan bruges til at hente det.

Den første sårbarhed (CVE-2021-35477) er forårsaget af en fejl i BPF-programverifikationsmekanismen. For at beskytte mod Spectre 4-angrebet tilføjer verifikatoren en ekstra instruktion efter potentielt problematiske lagringsoperationer til hukommelsen, og lagrer værdien af ​​nul for at fjerne spor fra den tidligere operation. Nulskrivningsoperationen skulle være meget hurtig og blokere spekulativ udførelse, da den kun afhænger af pointeren til BPF-stackrammen. Men faktisk viste det sig at være muligt at skabe betingelser, hvorunder instruktionen, der fører til spekulativ eksekvering, når at blive eksekveret før den præventive butiksdrift.

Den anden sårbarhed (CVE-2021-3455) er relateret til det faktum, at når potentielt farlige hukommelseslagringsoperationer detekteres af BPF-verifikatoren, tages der ikke hensyn til uinitialiserede områder af BPF-stakken, hvortil den første skriveoperation ikke er beskyttet . Denne funktion fører til muligheden for at udføre en spekulativ læseoperation, afhængig af et ikke-initialiseret hukommelsesområde, før en lagerinstruktion udføres. Ny hukommelse til BPF-stakken tildeles uden at kontrollere indholdet, der allerede er i den allokerede hukommelse, og der er en måde at administrere indholdet af hukommelsesområdet på, som så vil blive allokeret til BPF-stakken, før BPF-programmet starter.

Kilde: opennet.ru

Tilføj en kommentar