Zranitelnosti v podsystemu eBPF, které umožňují vykonat kód na úrovni jádra Linuxu.

Byly objeveny dvě nové zranitelnosti v podsystemu eBPF, který umožňuje spouštění zpracovatelů uvnitř jádra Linux ve speciální virtuální stroji s JIT. Obě zranitelnosti umožňují provádět vlastní kód s právy jádra, mimo izolovanou virtuální stroj eBPF. Informace o problémech publikoval tým Zero Day Initiative, který pořádá soutěž Pwn2Own, během níž byly v tomto roce předvedeny tři útoky na Ubuntu Linux, při nichž byly využity dosud neznámé zranitelnosti (nebylo oznámeno, zda jsou zranitelnosti v eBPF spojeny s těmito útoky).

  • CVE-2021-3490 — zranitelnost je způsobena nedostatkem kontroly přetečení 32bitových hodnot při provádění bitových operací AND, OR a XOR v eBPF ALU32. Útočník může využít této chyby k čtení a zápisu dat mimo hranice přiděleného bufferu. Problém s operací XOR se projevuje od verze jádra 5.7-rc1, a AND a OR — od vydání 5.10-rc1.
  • CVE-2021-3489 — zranitelnost je způsobena chybou v implementaci kruhového bufferu a souvisí s tím, že funkce bpf_ringbuf_reserve neprověřovala možnost, že velikost přidělené paměťové oblasti může být menší než skutečná velikost kruhového bufferu ringbuf. Problém se projevuje od vydání 5.8-rc1.

Status opravy zranitelností v distribucích lze sledovat na těchto stránkách: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Opravy jsou také k dispozici ve formě patchů (CVE-2021-3489, CVE-2021-3490). Možnost využití problému závisí na dostupnosti systémového volání eBPF pro uživatele. Například v základní konfiguraci v RHEL pro zneužití zranitelnosti jsou vyžadována práva CAP_SYS_ADMIN.

Samostatně lze zmínit ještě jednu zranitelnost v jádru Linux — CVE-2021-32606, která umožňuje lokálnímu uživateli zvýšit své privilegium na úroveň root. Problém se projevuje od jádra Linux 5.11 a je způsoben stavem závodu v implementaci protokolu CAN ISOTP, což umožňuje změnit parametry vazby na soket kvůli nedostatku správných zámků ve funkci isotp_setsockopt() při zpracování příznaku CAN_ISOTP_SF_BROADCAST.

Po uzavření soketu ISOTP zůstává aktivní vazba na soket příjemce, který může nadále používat s soketem spojené struktury po uvolnění s nimi spojené paměti (use-after-free v důsledku volání isotp_rcv() na již uvolněné struktuře isotp_sock). Manipulací s daty lze dosáhnout přepsání ukazatele na funkci sk_error_report() a spustit svůj kód na úrovni jádra.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster