Bezpečnostný výskumník Asim Manizada odhalil zraniteľnosť CIFSwitch - lokálna eskalácia privilégií v balíku jadra Linux a balíček na mieru cifs-utilsProblém ovplyvňuje proces spracovania CIFS/SMB Kerberos/SPNEGO upcall, teda mechanizmus, prostredníctvom ktorého klient CIFS jadra vyžaduje od pomocníka používateľa údaje o autentifikácii Kerberos pri pripájaní zdieľaných úložisk SMB. Popis bol publikovaný po uplynutí embarga linux-distros; v čase publikovania ešte nebol priradený identifikátor CVE.
Podstata zraniteľnosti spočíva v tom, žeNeprivilegovaný používateľ by mohol zavolať request_key("cifs.spnego", …) a odovzdať falošný popis kľúča. Normálne by takýto reťazec mal vygenerovať samotný klient CIFS jadra: obsahuje informácie o serveri, UID, UID poverení, PID, cieli upcall a ďalších parametroch. Jadro však neoverilo, či popis skutočne pochádza zo subsystému CIFS a cifs.upcall, spustený ako root prostredníctvom štandardného pravidla request-key, dôveroval týmto poliam ako údajom generovaným jadrom.
Zraniteľnosť nie je univerzálna "diera v každom" Linux „Okamžite po vybalení z krabice.“ Pre zneužitie musí byť splnených niekoľko podmienok: prítomnosť zraniteľného jadra, nainštalovaný balík cifs-utils s pravidlom cifs.spnego, možnosť neprivilegovaných používateľov vytvárať menné priestory používateľov/pripojení a absencia blokovania zo strany SE.Linux, AppArmor alebo iná politika LSM. Správa o oss-security konkrétne uvádza, že na zraniteľných systémoch to umožňuje neprivilegovanému lokálnemu používateľovi spúšťať kód ako root.
technicky reťaz je postavená okolo tohoJe známe, že cifs.upcall dokáže prechádzať mennými priestormi uvedenými v sfalšovanom popise a vykonať požiadavku NSS pred úplným resetovaním privilégií. V dôsledku toho môže prostredie ovládané útočníkom ovplyvniť načítanie modulu NSS koreňovým procesom. Verejné popisy zdôrazňujú, že ide o logickú chybu na hranici jadra a používateľského priestoru, nie o klasickú zraniteľnosť spôsobujúcu poškodenie pamäte.
Oprava jadra sa ukázala byť malá: bola pridaná kontrola pre typ kľúča cifs.spnego, ktorá odmieta popisy, ktoré nevytvoril samotný klient CIFS so svojím súkromným spnego_cred. Tento prístup uzatvára túto triedu útokov bez nutnosti synchrónnych zmien v cifs-utils, hoci autor poznamenáva, že dodatočné posilnenie používateľského priestoru je stále žiaduce.
AlmaLinux hlásenéže základná logika je prítomná vo všetkých podporovaných vydaniach AlmaLinuxA AlmaLinux Verzie 8, 9, 10 a Kitten 10 sa považujú za ovplyvnené, ak je nainštalovaný balík cifs-utils. V testovacích repozitároch boli pripravené opravené jadrá: AlmaLinux 9 určuje 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é riešenia, kým sa nenainštaluje opravené jadro, odporúčame odstrániť cifs-utils, ak sa v systéme nepoužíva klient SMB/CIFS, vypnúť modul cifs, prepísať pravidlo cifs.spnego v request-key alebo vypnúť menné priestory neprivilegovaných používateľov. Tieto riešenia môžu narušiť overovanie Kerberos pre pripojenia CIFS, preto by sa mali používať s opatrnosťou na serveroch, ktoré skutočne používajú zdieľania SMB overené Kerberos.
CIFSwitch je zaujímavý aj kvôli kontextu detekcie: autor ho opisuje ako výsledok vyhľadávania viackrokových reťazcov pomocou LLM a grafového znázornenia vzťahov medzi bezpečnostnými objektmi. Praktické dôsledky pre administrátorov sú však dosť všedné: kontrola prítomnosti cifs-utils, stavu menných priestorov používateľov a aktualizácií jadra, najmä na systémoch s lokálnymi používateľmi alebo kontajnerovými skriptami s pokročilými možnosťami menných priestorov.
Zdroj: linux.org.ru
