Sårbarheter i eBPF-undersystemet i Linux-kärnan

En sårbarhet (CVE-2021-29154) identifierades i eBPF-undersystemet, som låter dig köra hanterare för spårning, analys av driften av undersystem och hantering av trafik, exekveras inuti Linux-kärnan i en speciell virtuell maskin med JIT, vilket möjliggör en lokal användare för att få exekvering av sin kod på kärnnivå. Problemet dyker upp fram till utgåvan av 5.11.12 (inklusive) och har ännu inte åtgärdats i distributioner (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Fixeringen är tillgänglig som en patch.

Enligt forskarna som identifierade sårbarheten kunde de utveckla en fungerande prototyp av exploateringen för 32- och 64-bitars x86-system, som kan användas av en oprivilegierad användare. Red Hat noterar dock att problemets svårighetsgrad beror på om eBPF-systemanropet är tillgängligt för användaren. Till exempel, på RHEL och de flesta andra Linux-distributioner i standardkonfigurationen, kan sårbarheten utnyttjas om BPF JIT är aktiverat och användaren har CAP_SYS_ADMIN-rättigheter. Som en lösning rekommenderas det att inaktivera BPF JIT med kommandot: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problemet orsakas av ett fel vid beräkning av offset för greninstruktioner under maskinkodgenereringsprocessen för JIT-kompilatorn. I synnerhet, när man genererar greninstruktioner, tar den inte hänsyn till att förskjutningen kan ändras efter att ha passerat genom optimeringssteget. Denna brist kan användas för att generera onormal maskinkod och exekvera den på kärnnivå.

Det är anmärkningsvärt att detta inte är den enda sårbarheten i eBPF-delsystemet nyligen. I slutet av mars identifierades ytterligare två sårbarheter i kärnan (CVE-2020-27170, CVE-2020-27171), vilket gör det möjligt att använda eBPF för att kringgå skydd mot Spectre-klasssårbarheter, vilket gör det möjligt att bestämma innehållet i kärnminnet som ett resultat av att skapa förutsättningar för spekulativt genomförande av vissa operationer. Spectre-attacken kräver närvaron av en viss sekvens av kommandon i privilegierad kod som leder till spekulativ exekvering av instruktioner. I eBPF har man hittat flera sätt att generera sådana instruktioner genom manipulationer med BPF-program som överförs för exekvering.

CVE-2020-27170-sårbarheten orsakas av pekarmanipulation i BPF-verifieraren som orsakar spekulativa operationer för att komma åt ett område utanför buffertgränserna. Sårbarheten CVE-2020-27171 beror på ett heltalsunderflödesfel när man arbetar med pekare, vilket leder till spekulativ åtkomst till data utanför bufferten. Dessa problem har redan åtgärdats i kärnutgåvorna 5.11.8, 5.10.25, 5.4.107, 4.19.182 och 4.14.227 och har även inkluderats i kärnuppdateringar för de flesta Linux-distributioner. Forskare har förberett en prototypexploatering som gör att en oprivilegierad användare kan extrahera data från kärnminnet.

Källa: opennet.ru

Lägg en kommentar