Kwetsbaarheden in het eBPF-subsysteem van de Linux-kernel

Er is een kwetsbaarheid (CVE-2021-29154) geïdentificeerd in het eBPF-subsysteem, waarmee u handlers kunt uitvoeren voor het traceren, analyseren van de werking van subsystemen en het beheren van verkeer, uitgevoerd binnen de Linux-kernel in een speciale virtuele machine met JIT, waardoor een lokale gebruiker om uitvoering van zijn code op kernelniveau te bewerkstelligen. Het probleem doet zich voor tot de release van 5.11.12 (inclusief) en is nog niet opgelost in distributies (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). De oplossing is beschikbaar als patch.

Volgens de onderzoekers die de kwetsbaarheid hebben geïdentificeerd, zijn ze erin geslaagd een werkend prototype van de exploit te ontwikkelen voor 32- en 64-bit x86-systemen, dat kan worden gebruikt door een onbevoegde gebruiker. Red Hat merkt echter op dat de ernst van het probleem afhangt van de vraag of de eBPF-systeemoproep toegankelijk is voor de gebruiker. Op RHEL en de meeste andere Linux-distributies in de standaardconfiguratie kan het beveiligingslek bijvoorbeeld worden misbruikt als BPF JIT is ingeschakeld en de gebruiker CAP_SYS_ADMIN-rechten heeft. Als tijdelijke oplossing wordt aanbevolen om BPF JIT uit te schakelen met behulp van de opdracht: echo 0 > /proc/sys/net/core/bpf_jit_enable

Het probleem wordt veroorzaakt door een fout bij het berekenen van de offset voor vertakkingsinstructies tijdens het genereren van machinecode door de JIT-compiler. In het bijzonder wordt er bij het genereren van vertakkingsinstructies geen rekening mee gehouden dat de offset kan veranderen na het doorlopen van de optimalisatiefase. Deze fout kan worden gebruikt om afwijkende machinecode te genereren en deze op kernelniveau uit te voeren.

Het is opmerkelijk dat dit niet de enige recente kwetsbaarheid in het eBPF-subsysteem is. Eind maart werden nog twee kwetsbaarheden in de kernel geïdentificeerd (CVE-2020-27170, CVE-2020-27171), waardoor het mogelijk werd om eBPF te gebruiken om de bescherming tegen kwetsbaarheden van de Spectre-klasse te omzeilen, waardoor de inhoud van het kernelgeheugen kan worden bepaald als resultaat van het scheppen van voorwaarden voor de speculatieve uitvoering van bepaalde operaties. De Spectre-aanval vereist de aanwezigheid van een bepaalde reeks opdrachten in bevoorrechte code die leidt tot speculatieve uitvoering van instructies. In eBPF zijn verschillende manieren gevonden om dergelijke instructies te genereren door middel van manipulaties met BPF-programma's die ter uitvoering worden verzonden.

De kwetsbaarheid CVE-2020-27170 wordt veroorzaakt door pointermanipulatie in de BPF-verifier, waardoor speculatieve bewerkingen toegang krijgen tot een gebied buiten de buffergrenzen. De kwetsbaarheid CVE-2020-27171 is te wijten aan een integer underflow-fout bij het werken met pointers, wat leidt tot speculatieve toegang tot gegevens buiten de buffer. Deze problemen zijn al opgelost in kernelreleases 5.11.8, 5.10.25, 5.4.107, 4.19.182 en 4.14.227, en zijn ook opgenomen in kernelupdates voor de meeste Linux-distributies. Onderzoekers hebben een prototype-exploit voorbereid waarmee een onbevoegde gebruiker gegevens uit het kernelgeheugen kan extraheren.

Bron: opennet.ru

Voeg een reactie