V modulu ksmbd, který zahrnuje vestavěnou implementaci souborového serveru na bázi protokolu SMB v jádře Linuxu, byla zjištěna kritická zranitelnost, která umožňuje vzdálené provedení vlastního kódu s právy jádra. Útok může být proveden bez autentizace, stačí, aby byl na systému aktivován modul ksmbd. Problém se projevuje od jádra 5.15, vydaného v listopadu 2021, a byl bez zbytečné publicity opraven v aktualizacích 5.15.61, 5.18.18 a 5.19.2, které byly vytvořeny v srpnu 2022. Jelikož CVE identifikátor problému zatím nebyl přiřazen, přesné informace o jeho odstranění v distribucích zatím neexistují.
Detaily o zneužití zranitelnosti zatím nebyly zveřejněny, víme však, že zranitelnost je způsobena dotazem na již uvolněnou oblast paměti (Use-After-Free) kvůli absenci kontroly existence objektu před provedením operací s ním. Problém souvisí s tím, že v funkci smb2_tree_disconnect() byla uvolněna paměť vyhrazená pro strukturu ksmbd_tree_connect, ale poté ještě zůstal ukazatel používaný při zpracovávání určitých externích požadavků obsahujících příkazy SMB2_TREE_DISCONNECT.
Kromě zmíněné zranitelnosti byly v ksmbd opraveny také 4 méně závažné problémy:
- ZDI-22-1688 — vzdálené provedení kódu s právy jádra kvůli absenci zpracování atributů souborů v kódu ověřujícího skutečnou velikost externích dat před jejich zkopírováním do vyhrazeného bufferu. Nebezpečí zranitelnosti zmírňuje to, že útok může být proveden pouze autentizovaným uživatelem.
- ZDI-22-1691 — vzdálený únik informací z paměti jádra kvůli nesprávné kontrole vstupních parametrů v handleru příkazu SMB2_WRITE (útok může být proveden pouze autentizovaným uživatelem).
- ZDI-22-1687 — vzdálený vyvolání odmítnutí služby prostřednictvím vyčerpání dostupné paměti v systému kvůli nesprávnému uvolnění zdrojů v handleru příkazu SMB2_NEGOTIATE (útok může být proveden bez autentizace).
- ZDI-22-1689 — vzdálené vyvolání pádu jádra kvůli absenci řádné kontroly parametrů příkazu SMB2_TREE_CONNECT, což vede ke čtení z oblasti mimo buffer (útok může být proveden pouze autentizovaným uživatelem).
Podpora provozu SMB serveru pomocí modulu ksmbd je obsažena v balíčku Samba od verze 4.16.0. Na rozdíl od SMB serveru fungujícího v prostorově uživatelském režimu, je ksmbd výkonnější z hlediska výkonu, spotřeby paměti a integrace s pokročilými funkcemi jádra. Ksmbd je představen jako vysoce výkonné a připravené k použití rozšíření pro Samba na vestavěných zařízeních, s možností integrace s nástroji a knihovnami Samba. Autory kódu ksmbd jsou Namjae Jeon z firmy Samsung a Hyunchul Lee z LG, zatímco údržbu jádra zajišťuje Steve French z firmy Microsoft, udržovatel subsystému CIFS/SMB2/SMB3 v jádře Linux a dlouholetý člen vývojového týmu Samba, který významně přispěl k implementaci podpory protokolů SMB/CIFS v Samba a Linuxu.
Zdroj: opennet.ru
