Kwetsbaarheden in eBPF die de Spectre 4-aanvalsbescherming kunnen omzeilen

Er zijn twee kwetsbaarheden in de Linux-kernel geïdentificeerd waardoor het eBPF-subsysteem kan worden gebruikt om de bescherming tegen de Spectre v4-aanval te omzeilen (SSB, Speculative Store Bypass). Met behulp van een BPF-programma zonder privileges kan een aanvaller voorwaarden creëren voor de speculatieve uitvoering van bepaalde bewerkingen en de inhoud van willekeurige gebieden van het kernelgeheugen bepalen. De beheerders van de eBPF-subsystemen in de kernel kregen toegang tot een prototype-exploit die de mogelijkheid aantoont om in de praktijk aanvallen uit te voeren. De problemen zijn opgelost in de vorm van patches (1, 2), die zullen worden opgenomen in de volgende Linux-kernelupdate. Updates in distributiekits zijn nog niet gemaakt (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

De Spectre 4-aanvalsmethode is gebaseerd op het herstellen van gegevens die zijn opgeslagen in de processorcache na het negeren van het resultaat van speculatieve uitvoering van bewerkingen bij het verwerken van afwisselende schrijf- en leesbewerkingen met behulp van indirecte adressering. Wanneer een leesbewerking volgt op een schrijfbewerking (bijvoorbeeld mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), is de offset van het leesadres mogelijk al bekend omdat soortgelijke bewerkingen worden uitgevoerd (leesbewerkingen zijn wordt veel vaker uitgevoerd en er kunnen leesbewerkingen worden uitgevoerd vanuit de cache) en de processor kan speculatief leesbewerkingen uitvoeren voordat wordt geschreven, zonder te wachten tot de indirectie-offset van het schrijfproces is berekend.

Indien na het berekenen van de offset een snijpunt van geheugengebieden voor schrijven en lezen wordt gedetecteerd, zal de processor eenvoudigweg het reeds speculatief verkregen leesresultaat negeren en deze bewerking herhalen. Met deze functie kan een leesinstructie toegang krijgen tot een oude waarde op een bepaald adres terwijl de opslagbewerking nog niet is voltooid. Na het weggooien van een mislukte speculatieve bewerking blijven sporen van de uitvoering ervan in de cache achter, 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 tot in de cache opgeslagen en niet in de cache opgeslagen gegevens.

De eerste kwetsbaarheid (CVE-2021-35477) wordt veroorzaakt door een fout in het BPF-programmaverificatiemechanisme. Ter bescherming tegen een Spectre 4-aanval voegt de verifier na potentieel problematische opslag een extra instructie toe aan het geheugen, waarin een nulwaarde wordt opgeslagen om sporen van de vorige bewerking te vervangen. Er werd verwacht dat de null-schrijfbewerking erg snel zou zijn en speculatieve uitvoering zou blokkeren, omdat deze alleen afhankelijk is van een verwijzing naar het BPF-stapelframe. Maar in feite bleek het mogelijk om omstandigheden te creëren waaronder een instructie die leidt tot speculatieve uitvoering erin slaagt om uitgevoerd te worden vóór de preventieve opslagoperatie.

De tweede kwetsbaarheid (CVE-2021-3455) is te wijten aan het feit dat wanneer de BPF-verifier potentieel gevaarlijke geheugenopslagbewerkingen identificeert, deze geen rekening houdt met niet-geïnitialiseerde gebieden van de BPF-stack, waarvan de eerste schrijfbewerking niet is beveiligd. Dit kenmerk leidt tot de mogelijkheid om een ​​speculatieve leesoperatie uit te voeren, afhankelijk van een niet-geïnitialiseerd geheugengebied, voordat de opslaginstructie wordt uitgevoerd. Nieuw geheugen voor de BPF-stapel wordt toegewezen zonder de inhoud die zich al in het toegewezen geheugen bevindt te controleren, en er is een manier voordat het BPF-programma wordt uitgevoerd om de inhoud van het geheugengebied te manipuleren dat vervolgens wordt toegewezen aan de BPF-stapel.

Bron: opennet.ru

Voeg een reactie