Sebezhetőségek a Linux kernel eBPF alrendszerében

Az eBPF alrendszerben egy sérülékenységet (CVE-2021-29154) azonosítottak, amely lehetővé teszi az alrendszerek működésének nyomon követésére, elemzésére és forgalomkezelésre szolgáló kezelők futtatását a Linux kernelen belül, egy speciális virtuális gépen, JIT-vel, amely lehetővé teszi a helyi felhasználót, hogy elérjék a kódjuk végrehajtását a kernel szintjén. A probléma az 5.11.12-es kiadásig (beleértve) jelentkezik, és még nem javították ki a disztribúciókban (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). A javítás patchként érhető el.

A sérülékenységet azonosító kutatók szerint sikerült 32 és 64 bites x86-os rendszerekre kifejleszteni az exploit működő prototípusát, amelyet egy kiváltságtalan felhasználó is használhat. A Red Hat azonban megjegyzi, hogy a probléma súlyossága attól függ, hogy az eBPF rendszerhívás elérhető-e a felhasználó számára. Például az RHEL-en és a legtöbb más Linux-disztribúción az alapértelmezett konfigurációban a biztonsági rést akkor lehet kihasználni, ha a BPF JIT engedélyezve van, és a felhasználó rendelkezik CAP_SYS_ADMIN jogokkal. Kerülő megoldásként javasolt a BPF JIT letiltása a következő paranccsal: echo 0 > /proc/sys/net/core/bpf_jit_enable

A problémát az okozza, hogy a JIT fordító gépi kódgenerálása során az elágazási utasítások eltolásának kiszámítása során hiba történt. Különösen az elágazási utasítások generálásakor nem veszi figyelembe, hogy az eltolás megváltozhat az optimalizálási szakaszon való áthaladás után. Ez a hiba rendellenes gépi kód generálására és kernelszinten történő végrehajtására használható.

Figyelemre méltó, hogy a közelmúltban nem ez az egyetlen sérülékenység az eBPF alrendszerben. Március végén további két sebezhetőséget azonosítottak a kernelben (CVE-2020-27170, CVE-2020-27171), amelyek lehetővé teszik az eBPF használatával a Spectre osztályú sebezhetőségek elleni védelem megkerülését, amelyek lehetővé teszik a kernelmemória tartalmának meghatározását. bizonyos műveletek spekulatív végrehajtásának feltételeinek megteremtése eredményeként . A Spectre támadás megköveteli egy bizonyos parancssorozat jelenlétét a privilegizált kódban, amely az utasítások spekulatív végrehajtásához vezet. Az eBPF-ben számos módot találtak ilyen utasítások generálására a végrehajtásra továbbított BPF-programokkal végzett manipulációk révén.

A CVE-2020-27170 biztonsági rést a BPF-ellenőrzőben végzett mutatómanipuláció okozza, amely spekulatív műveleteket eredményez a pufferhatárokon kívül eső terület elérésére. A CVE-2020-27171 számú biztonsági rést egy egész szám alulcsordulási hiba okozza, amikor mutatókkal dolgozik, és ez a pufferen kívüli adatokhoz való spekulatív hozzáféréshez vezet. Ezeket a problémákat már javították az 5.11.8-as, 5.10.25-ös, 5.4.107-es, 4.19.182-es és 4.14.227-es kernelkiadásokban, és a legtöbb Linux-disztribúció kernelfrissítésébe is bekerültek. A kutatók elkészítettek egy prototípus exploitot, amely lehetővé teszi a privilegizálatlan felhasználók számára, hogy adatokat nyerjenek ki a kernel memóriájából.

Forrás: opennet.ru

Hozzászólás