V Netfilteru, subsystému jádra Linux používaného k filtrování a modifikaci síťových paketů, byla objevena zranitelnost (CVE-2024-1086), která umožňuje místnímu uživateli vykonat kód na úrovni jádra a zvýšit své privilegium v systému. Problém je způsoben dvojitým uvolněním paměti (double-free) v modulu nf_tables, který zajišťuje práci paketového filtru nftables. Výzkumník v oblasti bezpečnosti, který zranitelnost objevil, vyvinul a publikoval funkční prototyp exploit.
Funkčnost exploit byla demonstrována v aktuálních verzích Debianu a Ubuntu s jádry Linux 5.14 – 6.6, stejně jako v prostředí s jádrem KernelCTF (Capture the Flag), které zahrnuje dodatečné záplaty pro blokování typických metod využití exploitů a je používáno společností Google v programu odměn za nalezení zranitelností. Úspěšnost fungování exploit se odhaduje na 99,4 %. V doprovodném článku je podrobně rozebrán proces vytváření komplexního vícestupňového exploit a obcházení mechanismů ochrany a odporu proti exploitům přítomných v jádře.

Problém souvisí s chybou ve funkci nft_verdict_init(), která povoluje použití kladných hodnot jako kódu chyby pro odmítnutí paketů (DROP) v hook-ách, což může být použito pro vyvolání ve funkci nf_hook_slow() opakovaného uvolnění paměti pro buffer, pro který již byla vyvolána funkce free(). Problém nastává, když je operace NF_DROP formována chybou a jádro nejprve interpretuje NF_DROP, ale poté uvolňuje buffer a vrací status NF_ACCEPT. Tato situace vede k tomu, že navzdory uvolnění souvisejícího bufferu s paketem, jeho zpracování nekončí, ale je předáno jinému zpracovatel, který znovu vyvolává funkci uvolnění paměti.
Zranitelnost se projevuje od verze jádra Linux 3.15, ale exploit funguje s jádry od verze 5.14. Oprava zranitelnosti byla navržena ve vydání jádra Linux 6.8-rc1 a na konci února byla přenesena do stabilních větví 5.15.149, 6.1.76 a 6.6.15. V distribucích je možné sledovat opravu zranitelnosti na stránkách: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Dále je třeba zmínit sérii zranitelností v modulu ksmbd, který poskytuje integrovanou implementaci souborového systému v jádře Linux na základě protokolu SMB. serveru Zranitelnost CVE-2024-26592 umožňuje vzdálené provedení vlastního kódu s právy jádra na systémech s aktivním modulem ksmbd bez nutnosti autentizace. Problém je způsoben závodem ve kódu zpracování TCP spojení, který vzniká nedostatkem vhodných zámků při práci s objektem.
Zranitelnost CVE-2023-52440 také umožňuje vzdálené provedení vlastního kódu s právy jádra, avšak je způsobena přetečením bufferu při zpracování neplatných session key, v důsledku nedostatečné kontroly velikosti dat získaných od uživatele před jejich zkopírováním do bufferu pevné velikosti.
Zranitelnosti (1, 2, 3) CVE-2024-26594, CVE-2023-52442 a CVE-2023-52441 v ksmbd umožňují vzdáleně určit obsah jádrové paměti bez nutnosti autentizace. Zranitelnost CVE-2024-26594 je způsobena nesprávnou kontrolou dat při zpracování přijatých tokenů SMB2 Mech, což může vést k vracení dat z oblasti za hranicemi bufferu. Zranitelnost CVE-2023-52442 je způsobena nedostatkem vhodné kontroly vstupních dat při zpracování souvisejících řetězcových (chained) požadavků. Zranitelnost CVE-2023-52441 je způsobena nedostatečnou kontrolou vstupních dat při zpracování požadavků na navázání spojení SMB2.
Zranitelnosti CVE-2024-26594 a CVE-2024-26592 byly opraveny v jádře 6.8 a v opravných aktualizacích minulých stabilních větví 6.1.75, 6.6.14, 6.7.2. Ostatní zranitelnosti byly odstraněny v jádře 6.5 a aktualizacích 5.15.145, 6.1.53, 6.4.16.
Na závěr lze zmínit aktivaci nové týmu vývojářů jádra Linux, který byl vytvořen pro analýzu zranitelností a hodnocení vztahu mezi opravami jádra a problémy s bezpečností. V únoru vývojáři jádra založili vlastní službu CNA (CVE Numbering Authority), která získala pravomoci k samostatnému přiřazování CVE identifikátorů zranitelnostem. Předtím byla odpovědnost za přiřazení CVE a analýzu vztahu oprav s možnými zranitelnostmi na vývojářích distribucí, přičemž potenciální zranitelnosti v jádře nebyly vyčleněny a figurovaly na rovnoprávných s běžnými opravami. Výsledky práce nové služby překonaly veškerá očekávání – denně je v jádře označeno až několik desítek nových zranitelností, které dosud nebyly označeny jako bezpečnostní problémy. Například 26. března byly nové CVE identifikátory přiřazeny 14 zranitelnostem, které nebyly dříve uvažovány jako bezpečnostní problémy, a 25. března – 41 zranitelností.
Zdroj: opennet.ru
