Zraniteľnosti v subsystéme eBPF jadra Linux

V subsystéme eBPF, ktorý umožňuje spúšťať obsluhy na sledovanie, analýzu činnosti subsystémov a správu prenosu, vykonávané v rámci jadra Linuxu v špeciálnom virtuálnom stroji s JIT, bola zistená zraniteľnosť (CVE-2021-29154), ktorá umožňuje lokálnemu používateľovi vykonať svoj kód na úrovni jadra. Problém sa prejavuje až do verzie 5.11.12 (vrátane) a ešte nebol opravený v distribúciách (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Oprava je dostupná vo forme patchu.

Podľa vyhlásenia výskumníkov, ktorí odhalili zraniteľnosť, sa im podarilo vyvinúť funkčný prototyp exploit pre 32- a 64-bitové systémy x86, ktorý môže byť použitý nepovoleným používateľom. Pri tom spoločnosť Red Hat uvádza, že nebezpečenstvo problému závisí od dostupnosti systémového volania eBPF používateľovi. Napríklad v RHEL a väčšine iných distribúcií Linuxu v predvolenej konfigurácii môže byť zraniteľnosť zneužitá pri zapnutí BPF JIT a prítomnosti práv CAP_SYS_ADMIN u používateľa. Ako obchádzajúce opatrenie sa odporúča vypnúť BPF JIT pomocou príkazu: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problém je spôsobený chybou v presnosti výpočtu posunutia pre príkazy vetvenia počas generovania strojového kódu JIT-kompilátorom. Konkrétne sa pri generovaní inštrukcií vetvenia nezohľadňuje, že posunutie sa môže zmeniť po fáze optimalizácie. Uvedená nedostatok môže byť použitá na vytvorenie abnormálneho strojového kódu a jeho vykonanie na úrovni jadra.

Zaujímavé je, že nie je to jediná zraniteľnosť v subsystéme eBPF v poslednej dobe. Na konci marca boli v jadre objavené ďalšie dve zraniteľnosti (CVE-2020-27170, CVE-2020-27171), ktoré poskytujú možnosť využiť eBPF na obídenie ochrany pred zraniteľnosťami triedy Spectre, ktoré umožňujú získať obsah pamäte jadra na základe vytvorenia podmienok pre špekulatívne vykonávanie určitých operácií. Na útok Spectre je potrebné, aby v privilegovanom kóde bola určitá sekvencia príkazov, ktorá vedie k špekulatívnemu vykonávaniu inštrukcií. V eBPF sa našlo niekoľko spôsobov generovania podobných inštrukcií prostredníctvom manipulácie s predávanými BPF-programami.

Zraniteľnosť CVE-2020-27170 je spôsobená prítomnosťou manipulácií s ukazovateľmi vo verificátore BPF, ktoré spôsobujú spekulatívne operácie prístupu do oblasti mimo hraníc buffera. Zraniteľnosť CVE-2020-27171 sa týka chyby celočíselnej aritmetiky (integer underflow) pri práci s ukazovateľmi, ktorá vedie k spekulatívnemu prístupu k údajom mimo buffera. Uvedené problémy boli už odstránené vo verziách jadra 5.11.8, 5.10.25, 5.4.107, 4.19.182 a 4.14.227, a taktiež sú súčasťou aktualizácií jadra väčšiny distribúcií Linux. Výskumníci pripravili prototyp exploit, ktorý umožňuje neprivilegovanému používateľovi extrahovať údaje z pamäte jadra.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster