Sårbarheder i eBPF-undersystemet i Linux-kernen

En sårbarhed (CVE-2021-29154) blev identificeret i eBPF-undersystemet, som giver dig mulighed for at køre handlere til sporing, analyse af driften af ​​undersystemer og styring af trafik, udført inde i Linux-kernen i en speciel virtuel maskine med JIT, som tillader en lokal bruger for at opnå eksekvering af deres kode på kerneniveau. Problemet dukker op til udgivelsen af ​​5.11.12 (inklusive) og er endnu ikke blevet rettet i distributioner (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Rettelsen er tilgængelig som en patch.

Ifølge forskerne, der identificerede sårbarheden, var de i stand til at udvikle en fungerende prototype af udnyttelsen til 32- og 64-bit x86-systemer, som kan bruges af en uprivilegeret bruger. Red Hat bemærker dog, at problemets alvor afhænger af, om eBPF-systemopkaldet er tilgængeligt for brugeren. For eksempel, på RHEL og de fleste andre Linux-distributioner i standardkonfigurationen, kan sårbarheden udnyttes, hvis BPF JIT er aktiveret, og brugeren har CAP_SYS_ADMIN-rettigheder. Som en løsning anbefales det at deaktivere BPF JIT ved hjælp af kommandoen: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problemet er forårsaget af en fejl i beregningen af ​​offset for greninstruktioner under maskinkodegenereringsprocessen for JIT-kompileren. Især, når der genereres greninstruktioner, tager det ikke højde for, at forskydningen kan ændre sig efter at have passeret gennem optimeringsstadiet. Denne fejl kan bruges til at generere unormal maskinkode og udføre den på kerneniveau.

Det er bemærkelsesværdigt, at dette ikke er den eneste sårbarhed i eBPF-undersystemet for nylig. I slutningen af ​​marts blev yderligere to sårbarheder identificeret i kernen (CVE-2020-27170, CVE-2020-27171), hvilket gør det muligt at bruge eBPF til at omgå beskyttelse mod Spectre-klassens sårbarheder, som gør det muligt at bestemme indholdet af kernehukommelsen som et resultat af at skabe betingelser for spekulativ udførelse af visse operationer. Spectre-angrebet kræver tilstedeværelsen af ​​en bestemt række af kommandoer i privilegeret kode, der fører til spekulativ udførelse af instruktioner. I eBPF er der fundet flere måder at generere sådanne instruktioner gennem manipulationer med BPF-programmer, der er transmitteret til udførelse.

CVE-2020-27170-sårbarheden er forårsaget af pointermanipulation i BPF-verifikatoren, der forårsager spekulative operationer for at få adgang til et område uden for buffergrænserne. Sårbarheden CVE-2020-27171 skyldes en heltalsunderløbsfejl ved arbejde med pointere, hvilket fører til spekulativ adgang til data uden for bufferen. Disse problemer er allerede blevet rettet i kerneudgivelser 5.11.8, 5.10.25, 5.4.107, 4.19.182 og 4.14.227 og er også inkluderet i kerneopdateringer til de fleste Linux-distributioner. Forskere har udarbejdet en prototypeudnyttelse, der gør det muligt for en uprivilegeret bruger at udtrække data fra kernehukommelsen.

Kilde: opennet.ru

Tilføj en kommentar