Bezpečnostní výzkumník Asim Manizada odhalil zranitelnost CIFSwitch — lokální zvýšení oprávnění v jádře Linux a uživatelském balíčku cifs-utils. Problém se týká cesty zpracování CIFS/SMB Kerberos/SPNEGO upcall, tedy mechanismu, kterým CIFS klient jádra požaduje od uživatelského helpera data pro Kerberos autentifikaci při připojování SMB prostředků. Popis byl zveřejněn po uplynutí embarga linux-distros; identifikátor CVE v době publikace ještě nebyl přidělen.
Podstata zranitelnosti spočívá v tom, že neprivilegovaný uživatel mohl vyvolat request_key("cifs.spnego", …) a předat falešný popis klíče. V normálním scénáři by takový řetězec měl vytvářet sám CIFS klient jádra: obsahuje informace o serveru, UID, credential UID, PID, cíli upcall a další parametry. Nicméně jádro neověřovalo, zda popis skutečně přišel z CIFS subsystému, a cifs.upcall, spuštěný jako root prostřednictvím standardního pravidla request-key, důvěřoval těmto polím jako datům vytvořeným jádrem.
Zranitelnost není univerzální „dírou v jakémkoli Linuxu z krabice“. Pro její zneužití musí splnit několik podmínek: přítomnost zranitelného jádra, nainstalovaný cifs-utils s pravidlem cifs.spnego, možnost pro neprivilegované uživatele vytvářet user/mount namespaces, a také absenci blokace od SELinux, AppArmor nebo jiných politik LSM. V oznámení na oss-security se zvlášť uvádí, že na zranitelných systémech to poskytuje cestu od neprivilegovaného lokálního uživatele k vykonání kódu jako root.
Technicky řetězec se staví kolem toho, že cifs.upcall může přejít do jmenných prostorů určených v falešném popisu a provést NSS dotaz až do konečného snížení oprávnění. V důsledku toho může prostředí ovládané útočníkem ovlivnit načítání NSS modulu procesem root. Ve veřejných popisech je zdůrazněno, že se jedná o logickou chybu na hranici jádra a uživatelského prostoru, ne o klasickou zranitelnost paměťové korupce.
Oprava v jádře se ukázala jako malá: pro typy klíčů cifs.spnego byla přidána kontrola, která odmítá popisy, které nebyly vytvořeny samotným CIFS klientem s jeho soukromými spnego_cred. Tento přístup zakrývá třídu útoků bez povinných synchronních změn v cifs-utils, i když autor poznamenává, že dodatečné posílení uživatelského prostoru je stále žádoucí.
AlmaLinux oznámil, že základní logika je přítomna ve všech podporovaných verzích AlmaLinux, a AlmaLinux 8, 9, 10 a Kitten 10 jsou považovány za ohrožené v případě, že je nainstalováno cifs-utils. Opravená jádra byla připravena v testing-repozitářích: pro AlmaLinux 9 je uveden balíček kernel-5.14.0-687.5.4.el9_8 nebo novější, pro AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 nebo novější.
Jako dočasná opatření před instalací opraveného jádra se doporučuje odstranit cifs-utils, pokud není na systému používán SMB/CIFS klient, zakázat načítání modulu cifs, přepsat pravidlo cifs.spnego v request-key nebo deaktivovat nepriviligované uživatelské namespaces. Tato obcházející opatření mohou narušit Kerberos autentizaci pro CIFS montáže, proto je třeba je aplikovat opatrně na serverech, kde se skutečně využívají Kerberos-authentizované SMB sdílené složky.
CIFSwitch je zajímavý také v kontextu objevování: autor ji popisuje jako výsledek pátrání po vícestupňových řetězcích pomocí LLM a grafového zobrazení vztahů mezi objekty bezpečnosti. Ale praktický závěr pro administrátory je docela prostý: zkontrolovat přítomnost cifs-utils, stav uživatelských namespaces a aktualizace jádra, zejména na systémech, kde jsou místní uživatelé nebo kontejnerové skripty s rozšířenými možnostmi namespaces.
Zdroj: linux.org.ru
