Sårbarheder i eBPF-subsystemet, der muliggør omgåelse af beskyttelse mod Spectre-angreb

I Linux-kernen er der identificeret en sårbarhed (CVE-2021-33624), der gør det muligt at udnytte eBPF-subsystemet til at omgå beskyttelse mod sårbarheder af Spectre-typen, hvilket giver mulighed for at bestemme indholdet af hukommelsen som følge af skabelsen af betingelser for spekulativ udførelse af bestemte operationer. For at udføre en Spectre-angreb kræves det, at der findes en bestemt sekvens af instruktioner i privilegeret kode, som fører til spekulativ udførelse af instruktioner. Gennem manipulation med de BPF-programmer, der skal udføres, kan man generere lignende instruktioner i eBPF og opnå lækage af hukommelsesindhold fra kernen og vilkårlige områder af fysisk hukommelse via sideløbende kanaler.

Sårbarheden skyldes mangler i verifieringssystemet, der anvendes til at opdage fejl og uacceptabel aktivitet i BPF-programmer. Verifieren gennemgår de mulige udførelsesveje af koden, men springer over grene, der er uacceptable ud fra arkitekturen for instruktionssættet. Når en BPF-program udføres, kan sådanne grene, der ikke blev taget i betragtning af verifieren, blive fejlagtigt forudsagt af processoren og udført i spekulativ tilstand. For eksempel, ved analysen af operationen "load" antager verifieren, at der i instruktionen anvendes et register med en adresse, hvis værdi altid ligger inden for bestemte grænser, men en angriber kan skabe betingelser, hvor processoren forsøger spekulativt at udføre operationen med en adresse, der ikke opfylder kontrolbetingelserne.

Problemet opstår fra versionen af kernen 4.15 og er blevet løst i form af patches (1, 2, 3, 4). I distributionerne forbliver sårbarheden stadig udbedret (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Derudover kan det bemærkes, at der er indflydelse på ydeevnen fra værktøjer til beskyttelse mod sårbarheder af Spectre-typen. Notatet opsummerer resultaterne fra optimeringen af debuggeren rr (Record and Replay), som engang blev udviklet af Mozilla til debugging af komplekse fejl i Firefox. Caching af systemopkald, der bruges til at kontrollere eksistensen af kataloger, har gjort det muligt at reducere udførelsen af operationen "rr sources" for et testprojekt fra 3 minutter 19 sekunder til 36 sekunder.

Forfatteren af optimeringen besluttede at teste, hvor meget ydeevnen ville ændre sig efter at have deaktiveret beskyttelsen mod Spectre. Efter at have startet systemet med parameteren «mitigations=off» tog det 2 minutter og 5 sekunder at køre «rr sources» uden optimering (1,6 gange hurtigere), mens det med optimering tog 33 sekunder (9% hurtigere). Det er interessant, at deaktivering af beskyttelsen mod Spectre ikke kun reducerede udførelsestiden for koden på kernel-niveau med 1,4 gange (fra 2m9s til 1m32s), men også halverede udførelsestiden i brugerspace (fra 1m9s til 0m33s), sandsynligvis på grund af reduceret effektivitet i CPU-cachen og TLB-flash ved aktiveret beskyttelse mod Spectre.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster