En gruppe forskere fra Vrije Universiteit Amsterdam har opdaget en ny angrebsmetode kaldet "Native BHI" (CVE-2024-2201), der gør det muligt at bestemme indholdet af Linux-kernels hukommelse på systemer med Intel-processorer, når der udføres et exploit i brugerrummet. I tilfælde af anvendelse af angrebet på virtualiseringssystemer kan en angriber fra et gæstesystem få adgang til indholdet af hukommelsen i værtssystemet eller andre gæstesystemer.
Native BHI-metoden tilbyder en alternativ teknik til udnyttelse af BHI-sårbarheden (Branch History Injection, CVE-2022-0001), som omgår tidligere implementerede beskyttelsesmetoder. Den angrebsmåde, der blev foreslået i 2022, indebar udnyttelse af sårbarheden inden for et enkelt privilegieniveau, hvor exploit’en var baseret på udførelse af en eBPF-program, der blev indlæst af brugeren i kernen. For at blokere sårbarheden var det tilstrækkeligt at begrænse adgangen til udførelse af eBPF-kode for almindelige brugere.
Den nye Native BHI-metode kræver ikke adgang til eBPF og muliggør angreb af en ukvalificeret bruger fra brugerrummet. Metoden er baseret på udførelse af eksisterende gadgets i kernelkoden — sekvenser af instruktioner, der fører til spekulativ udførelse af instruktioner. Der er udviklet et særligt værktøj kaldet InSpectre Gadget til at finde passende gadgets i kernen, som i analysen af kernel 6.6-rc4 identificerede 1511 Spectre-gadgets og 2105 hjælpemidler til dispatch.

På baggrund af de fundne gadgets har forskerne forberedt et exploit, der giver mulighed for at udtrække en streng med hash af root-brugerens adgangskode, der er indlæst fra filen /etc/shadow. Hastigheden for dataudtræk fra kernen hukommelse er cirka 3,5 Kb i sekunder.

BHI-metoden er en udvidet version af Spectre-v2 angrebet, hvor der anvendes substitution af værdier i bufferen med global historik for overgange (Branch History Buffer) til at omgå den ekstra beskyttelse (Intel eIBRS og Arm CSV2) og organisere datalækage. Under angrebet skabes betingelserne for en forkert forudsigelse af overgang og den spekulative udførelse af nødvendige instruktioner gennem manipulation af overgangshistorikken, hvis resultat lagres i cachen.
Forskellene fra Spectre-v2 angår brugen af en buffer med historik over grene (Branch History Buffer) i stedet for en buffer til forudsigelse af grene (Branch Target Buffer). For at udtrække data fra hukommelsen skal angriberen skabe betingelser, hvor den spekulative operation tager adressen fra det område, som skal bestemmes. Efter udførelsen af det spekulative indirekte spring forbliver den læste adresse i hukommelsen i cachen, hvorefter en af metoderne til at bestemme indholdet af cachen kan anvendes baseret på analysen af ændringer i adgangstiden til cachede og ikke-cachede data.
Native BHI-angrebet beskyttes ikke af brugen af Intel IBT (Indirect Branch Tracking) instruktioner og den hybridmekanisme til beskyttelse af kontrolflytning FineIBT i Linux-kernen, som kombinerer brugen af hardwareinstruktioner IBT og softwarebeskyttelse kCFI (kernel Control Flow Integrity) for at blokere forstyrrelser i den normale rækkefølge af udførelse (control flow). FineIBT tillader kun udførelse via indirekte spring, hvis springet går til instruktionen ENDBR, som placeres i begyndelsen af funktionen. Derudover (analogt med kCFI-mekanismen) følges der op med en kontrol af hashes, der sikrer uændrethed af pegerne.
For at beskytte mod den nye type angreb er der tilføjet en ændring i Linux-kernen, der implementerer en ekstra beskyttelsesmetode ved hjælp af de hardwarebeskyttelsesmidler (BHI_DIS_S), som Intel har foreslået, eller alternativ softwarebeskyttelse implementeret til beskyttelse af hypervisoren. KVM. Udviklerne af Xen-hypervisoren har også udgivet en patch baseret på brugen af BHI_DIS_S-modus, som begrænser forudsigelser baseret på historik over grene. Støtte til BHI_DIS_S er tilgængelig i processorer fra Intel Alder Lake samt server-CPU'er fra Intel Sapphire Rapids. Der er også en softwarebeskyttelsestilstand baseret på brugen af sekvenser til at rydde branchhistorikbufferen, men denne fører til en mere mærkbar reduktion i ydeevnen.
Kilde: opennet.ru
