BHI is een nieuwe Spectre-klasse kwetsbaarheid in Intel- en ARM-processors

Een groep onderzoekers van de Vrije Universiteit Amsterdam heeft een nieuwe kwetsbaarheid geïdentificeerd in de microarchitecturale structuren van Intel- en ARM-processors, een uitgebreide versie van de Spectre-v2-kwetsbaarheid, waarmee men de eIBRS- en CSV2-beschermingsmechanismen die aan processors zijn toegevoegd, kan omzeilen. . De kwetsbaarheid heeft verschillende namen gekregen: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) en Spectre-BHB (CVE-2022-23960), die verschillende manifestaties van hetzelfde probleem (BHI - een aanval die verschillende privilegeniveaus beïnvloedt, bijvoorbeeld het gebruikersproces en de kernel, BHB - een aanval op hetzelfde privilegeniveau, bijvoorbeeld eBPF JIT en de kernel).

Onderzoekers hebben een werkende exploit gedemonstreerd waarmee willekeurige gegevens uit het kernelgeheugen uit de gebruikersruimte kunnen worden gehaald. Er wordt bijvoorbeeld getoond hoe het, met behulp van een voorbereide exploit, mogelijk is om uit de kernelbuffers een string te extraheren met een hash van het rootgebruikerswachtwoord geladen uit het /etc/shadow-bestand. De exploit demonstreert de mogelijkheid om een ​​kwetsbaarheid binnen één privilegeniveau (kernel-tot-kernelaanval) te misbruiken met behulp van een door de gebruiker geladen eBPF-programma. Het is ook mogelijk om in plaats van eBPF bestaande Spectre-gadgets in de kernelcode reeksen opdrachten te gebruiken die leiden tot speculatieve uitvoering van instructies.

De kwetsbaarheid komt voor in de meeste huidige Intel-processors, met uitzondering van processors uit de Atom-familie. Van de ARM-processors hebben Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 en mogelijk enkele Cortex-R-chips last van het probleem. Volgens onderzoek komt de kwetsbaarheid niet voor bij AMD-processors. Om het probleem op te lossen, zijn er verschillende softwaremethoden voorgesteld om de kwetsbaarheid te blokkeren, die kunnen worden gebruikt voordat hardwarebescherming in toekomstige CPU-modellen verschijnt.

Om aanvallen via het eBPF-subsysteem te blokkeren, wordt aanbevolen om standaard de mogelijkheid uit te schakelen voor niet-bevoorrechte gebruikers om eBPF-programma's te downloaden door 1 naar het bestand “/proc/sys/kernel/unprivileged_bpf_disabled” te schrijven of door de opdracht “sysctl -w kernel. onbevoorrechte_bpf_disabled=1”. Om gadgetaanvallen te blokkeren, wordt aanbevolen om de LFENCE-instructie te gebruiken in codegebieden die mogelijk tot speculatieve uitvoering leiden. Het is opmerkelijk dat de standaardconfiguratie van de meeste Linux-distributies al de nodige beschermingsmaatregelen bevat die voldoende zijn om de door de onderzoekers gedemonstreerde eBPF-aanval te blokkeren. Intel's aanbevelingen voor het uitschakelen van onbevoegde toegang tot eBPF zijn ook de standaard sinds Linux-kernel 5.16 en zullen worden teruggezet naar eerdere branches.

Conceptueel gezien is BHI een uitgebreide versie van de Spectre-v2-aanval, waarbij, om extra bescherming (Intel eIBRS en Arm CSV2) te omzeilen en datalekken te organiseren, waardevervanging wordt gebruikt in de Branch History Buffer, die in de CPU wordt gebruikt om de voorspelling te verbeteren. nauwkeurigheid vertakking door rekening te houden met de geschiedenis van eerdere transities. Tijdens de aanval worden door manipulaties met de geschiedenis van transities voorwaarden gecreëerd voor het onjuist voorspellen van de transitie en het speculatief uitvoeren van de noodzakelijke instructies, waarvan het resultaat in de cache terechtkomt.

Behalve het gebruik van een Branch History Buffer in plaats van een Branch Target Buffer, is de nieuwe aanval identiek aan Spectre-v2. De taak van de aanvaller is om zodanige omstandigheden te creëren dat het adres bij het uitvoeren van een speculatieve operatie uit het gebied van de gedefinieerde gegevens wordt gehaald. Na het uitvoeren van een speculatieve indirecte sprong blijft het uit het geheugen gelezen sprongadres in de cache, waarna een van de methoden voor het bepalen van de inhoud van de cache kan worden gebruikt om deze op te halen op basis van een analyse van veranderingen in de toegangstijd naar gecachte en niet-gecachte bestanden. gegevens.

Bron: opennet.ru

Voeg een reactie