Bolestná LPE zraniteľnosť CIFSwitch v Linux CIFS/cifs-utils

Bezpečnostný výskumník Asim Manizada odhalil zraniteľnosť CIFSwitch — lokálne zvýšenie práv na spojení jadra Linux a používateľského balíka cifs-utils. Problém sa dotýka cesty spracovania CIFS/SMB Kerberos/SPNEGO upcall, teda mechanizmu, cez ktorý CIFS klient jadra žiada používateľského pomocníka o údaje pre Kerberos autentifikáciu pri montovaní SMB zdrojov. Opis bol zverejnený po uplynutí embarga linux-distros; identifikátor CVE nebol pri zverejnení ešte priradený.

Podstata zraniteľnosti spočíva v tom, že neoprávnený používateľ mohol vyvolať request_key("cifs.spnego", …) a poslať falšovaný popis kľúča. V normálnom scenári by takýto reťazec mal vytvoriť sám CIFS klient jadra: obsahuje informácie o serveri, UID, credential UID, PID, cieľ upcall a ďalšie parametre. Avšak jadro nekontrolovalo, či popis skutočne pochádza z CIFS subsystému, a cifs.upcall, spúšťaný ako root cez štandardné pravidlo request-key, dôveroval týmto poliam ako údajom vytvoreným jadrom.

Zraniteľnosť nie je univerzálna "diery v akomkoľvek Linuxe z krabice". Na exekúciu musia súhlasiť viaceré podmienky: existencia zraniteľného jadra, nainštalovaný cifs-utils s pravidlom cifs.spnego, schopnosť neoprávnených používateľov vytvárať user/mount namespaces, ako aj absencia blokovania zo strany SELinux, AppArmor alebo inej politiky LSM. V správe na oss-security je osobitne uvedené, že na zraniteľných systémoch to poskytuje cestu od neoprávneného miestneho používateľa k vykonaniu kódu ako root.


Technicky reťazec je postavený na tom, že cifs.upcall môže prejsť do priestorov názvov uvedených vo falšovanom popise a vykonať NSS dopyt pred konečným zrušením práv. V dôsledku toho môže prostredie ovládané útočníkom ovplyvniť načítanie NSS modulu root procesom. Vo verejných opisoch sa zdôrazňuje, že ide presne o logickú chybu na hranici jadra a používateľského priestoru, a nie klasickú zraniteľnosť spôsobenú korupciou pamäte.

Oprava v jadre bola menšia: pre typ kľúčov cifs.spnego bola pridaná kontrola, ktorá odmieta popisy vytvorené nie samotným CIFS klientom s jeho súkromnými spnego_cred. Tento prístup uzatvára triedu útokov bez nutnosti synchronizovaných zmien v cifs-utils, aj keď autor upozorňuje, že je stále žiaduce dodatočné posilnenie užívateľského priestoru.

AlmaLinux oznámil, že základná logika je prítomná vo všetkých podporovaných vydaniach AlmaLinuxu a AlmaLinux 8, 9, 10 a Kitten 10 sú považované za postihnuté pri nainštalovanom cifs-utils. Opravené jadrá boli pripravené v testing-repozitároch: pre AlmaLinux 9 je uvedený balík kernel-5.14.0-687.5.4.el9_8 alebo novší, pre AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 alebo novší.

Ako dočasné opatrenia pred inštaláciou opraveného jadra sa odporúča odstrániť cifs-utils, ak sa na systéme nepoužíva SMB/CIFS klient, zakázať načítanie modulu cifs, predefinovať pravidlo cifs.spnego v request-key alebo zakázať nepriviligované užívateľské namespace. Tieto obchádzajúce opatrenia môžu narušiť Kerberos autentifikáciu pre CIFS montáže, takže na serveroch, kde sa reálne používajú Kerberos autentifikované SMB zdieľania, je potrebné ich aplikovať opatrne.

CIFSwitch je zaujímavý aj kontextom objavenia: autor ho opisuje ako výsledok vyhľadávania viacstupňových reťazcov s využitím LLM a grafového zobrazenia vzťahov medzi bezpečnostnými objektmi. Ale praktický záver pre administrátorov je celkom zrozumiteľný: skontrolovať prítomnosť cifs-utils, stav užívateľských namespaces a aktualizácie jadra, najmä na systémoch, kde sú lokálni používatelia alebo kontajnerové skripty s rozšírenými možnosťami namespaces.

Zdroj: linux.org.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