Säkerhetsforskare Asim Manizada avslöjade bristen CIFSwitch — lokal höjning av privilegier i kärnan Linux och användarpaketet cifs-utils. Problemet berör hanteringsvägen CIFS/SMB Kerberos/SPNEGO upcall, det vill säga mekanismen genom vilken CIFS-kärnklienten begär data för Kerberos-autentisering från användarens helper vid montering av SMB-resurser. Beskrivningen publicerades efter att embargoet för linux-distros hade löpt ut; CVE-id:n hade ännu inte tilldelats vid publicering.
Essensen av bristen är att, en icke-privilegierad användare kan anropa request_key("cifs.spnego", …) och skicka en förfalskad nyckelbeskrivning. I ett normalt scenario bör en sådan sträng skapas av CIFS-kärnklienten själv: den innehåller information om servern, UID, credential UID, PID, målet för upcall och andra parametrar. Dock kontrollerade inte kärnan att beskrivningen faktiskt kom från CIFS-subsystemet, och cifs.upcall, som körs av root genom en standard request-key-regel, litade på dessa fält som om de var skapade av kärnan.
Bristen är inte universell en "hål i vilken Linux som helst från grunden". För att det ska kunna utnyttjas måste flera villkor uppfyllas: en sårbar kärna, installerad cifs-utils med regeln cifs.spnego, möjlighet för icke-privilegierade användare att skapa user/mount namespaces, samt att det inte får finnas några blockerande åtgärder från SELinux, AppArmor eller annan LSM-politik. I ett meddelande på oss-security påpekas särskilt att på sårbara system ger detta en väg från en icke-privilegierad lokal användare till att köra kod som root.
Tekniskt bygger kedjan kring att, cifs.upcall kan gå in i de namnrymder som anges i den förfalskade beskrivningen och genomföra en NSS-förfrågan fram till den slutliga nedräkningen av privilegier. Som ett resultat kan en attackerad kontrollerad miljö påverka laddningen av NSS-modulen av root-processen. I offentliga beskrivningar betonas att detta är en logisk felaktighet vid gränsen mellan kärnan och användarutrymmet, snarare än en klassisk minneskorruptions-sårbarhet.
Kärnfixen visade sig vara liten: för cifs.spnego-taknyckeln har en kontroll lagts till som avvisar beskrivningar som inte skapats av CIFS-klienten med dess privata spnego_cred. Denna metod stänger av en klass av attacker utan obligatoriska synkrona ändringar i cifs-utils, även om författaren påpekar att ytterligare förstärkning av användarrum fortfarande är önskvärt.
AlmaLinux meddelade, att den grundläggande logiken finns i alla stödda versioner av AlmaLinux, och AlmaLinux 8, 9, 10 och Kitten 10 anses vara drabbade i närvaro av installerat cifs-utils. Patchade kärnor har förberetts i testarkiven: för AlmaLinux 9 anges paketet kernel-5.14.0-687.5.4.el9_8 eller nyare, för AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 eller nyare.
Som tillfälliga åtgärder fram till installationen av den korrigerade kärnan föreslås det att ta bort cifs-utils, om SMB/CIFS-klienten inte används på systemet, förbjuda laddning av cifs-modulen, överskrida regeln cifs.spnego i request-key eller stänga av oprivilegierade användarnamnrymder. Dessa kringgåenden kan förstöra Kerberos-autentisering för CIFS-montering, så på servrar där Kerberos-autentiserade SMB-resurser faktiskt används bör de tillämpas försiktigt.
CIFSwitch är även intressant i sammanhanget av upptäckten: författaren beskriver det som resultatet av en sökning av flertrinskedjor med hjälp av LLM och grafisk representation av relationerna mellan säkerhetsobjekt. Men den praktiska slutsatsen för administratörer är ganska jordnära: kontrollera närvaron av cifs-utils, status för användarnamnrymder och kärnuppdateringar, särskilt på system där det finns lokala användare eller containerskript med utökade namnrymdmöjligheter.
Källa: linux.org.ru
