En grupp forskare frÄn Vrije Universiteit Amsterdam har identifierat en ny attackmetod kallad "Native BHI" (CVE-2024-2201), som gör det möjligt att pÄ system med Intel-processorer bestÀmma innehÄllet i Linux-kÀrnans minne medan en exploit körs i anvÀndarutrymmet. Vid tillÀmpning av attacken pÄ virtualiseringssystem kan angriparen frÄn gÀstsystemet bestÀmma innehÄllet i vÀrdmiljöns minne eller andra gÀstsystem.
Native BHI-metoden erbjuder en annan teknik för att utnyttja BHI-sÄrbarheten (Branch History Injection, CVE-2022-0001), som kringgÄr tidigare implementerade skydd. Den attackmetod för BHI som föreslogs 2022 innebar utnyttjande av sÄrbarheten pÄ en enda privilegienivÄ, dÀr exploiten baserades pÄ att en eBPF-program kördes av anvÀndaren i kÀrnan. För att blockera sÄrbarheten var det tillrÀckligt att begrÀnsa Ätkomsten till att köra eBPF-kod för vanliga anvÀndare.
Den nya Native BHI-metoden krĂ€ver inte Ă„tkomst till eBPF och tillĂ„ter en attack av en icke-privilegierad anvĂ€ndare frĂ„n anvĂ€ndarutrymmet. Metoden bygger pĂ„ att köra befintliga gadgets i kĂ€rnkoden â sekvenser av instruktioner som leder till spekulativ körning av instruktioner. För att hitta lĂ€mpliga gadgets i kĂ€rnan har ett speciellt verktyg utvecklats, InSpectre Gadget, som vid analys av kĂ€rna 6.6-rc4 identifierade 1511 Spectre-gadgets och 2105 hjĂ€lpgadgets för schemalĂ€ggning.

Baserat pÄ de hittade gadgets har forskarna förberett en exploit som ger möjlighet att extrahera en strÀng med hash-vÀrdet av root-anvÀndarens lösenord, hÀmtat frÄn filen /etc/shadow, frÄn kÀrnans buffertar. Datautvinningshastigheten frÄn kÀrnans minne Àr ungefÀr 3,5 kB per sekund.

BHI-metoden Àr en utökad version av Spectre-v2-attacken, dÀr för att kringgÄ den tillagda skyddet (Intel eIBRS och Arm CSV2) och organisera datalÀckage anvÀnds substituering av vÀrden i en buffer för global historik av övergÄngar (Branch History Buffer), som anvÀnds i CPU:n för att öka noggrannheten vid grenprediktion genom att ta hÀnsyn till historien av tidigare övergÄngar. Under attacken skapas förhÄllanden för felaktig övergÄngsprognos och spekulativ körning av nödvÀndiga instruktioner genom manipulation av övergÄngshistorien, vars resultat lagras i cachen.
Skillnaderna frÄn Spectre-v2 angÄr anvÀndningen av en historikbuffert (Branch History Buffer) istÀllet för en grenadressbuffert (Branch Target Buffer). För att utvinna data frÄn minnet mÄste angriparen skapa förhÄllanden dÀr en spekulativ operation kommer att hÀmta adressen frÄn det omrÄde som behöver identifieras. Efter att den spekulativa indirekta övergÄngen har utförts, kvarstÄr den lÀsta adressen i minnet i cache, varefter en av metoderna för att bestÀmma cacheinnehÄllet kan tillÀmpas baserat pÄ analys av förÀndringar i Ätkomsttiderna till cachade och icke-cachade data.
Angrepp av Native BHI skyddas inte av anvÀndningen av Intel IBT-instruktioner (Indirect Branch Tracking) samt den hybridmekanism för skydd av kommandoströmmen FineIBT, som implementeras i Linux-kÀrnan och kombinerar anvÀndningen av hÄrdvaruinstruktioner IBT och mjukvaruskyddet kCFI (kernel Control Flow Integrity) för att blockera störningar i det normala utförandet (control flow). FineIBT tillÄter endast utförande av indirekta övergÄngar om övergÄngen leder till instruktionen ENDBR, som placeras i början av funktionen. Dessutom (liknande kCFI-mekanismen) utförs en hashkontroll för att garantera oförÀndrad pekare.
För att skydda mot den nya varianten av angreppet har en förÀndring lagts till Linux-kÀrnan som implementerar ett extra skyddslÀge, som anvÀnder de skyddsmekanismer som erbjuds av Intel (BHI_DIS_S) eller ett alternativt mjukvaruskydd som implementerats för att skydda hypervisorn. KVM. Utvecklarna av hypervisorn Xen har ocksÄ slÀppt en patch baserad pÄ anvÀndningen av BHI_DIS_S-lÀget, vilket begrÀnsar förutsÀgelser baserade pÄ övergÄngshistorik. Stödet för BHI_DIS_S Àr tillgÀngligt i processorer frÄn Intel Alder Lake och Àven i server-CPU:er frÄn Intel Sapphire Rapids. Det finns ocksÄ ett mjukvaruskyddslÀge som bygger pÄ anvÀndningen av sekvenser för att rensa övergÄngshistorikbufferten, men det leder till en mer pÄtaglig prestandaförlust.
KĂ€lla: opennet.ru
