LPE-sårbarhed i CIFSwitch offentliggjort i Linux CIFS/cifs-utils

Sikkerhedsforsker Asim Manizada har afsløret en sårbarhed CIFSwitch — lokal forhøjelse af privilegier i kombination med Linux-kernen og et brugerpakke cifs-utils. Problemet påvirker behandlingsstien for CIFS/SMB Kerberos/SPNEGO upcall, altså mekanismen, hvormed CIFS-kernklienten anmoder om data til Kerberos-godkendelse fra brugerhelper'en, når SMB-ressourcer monteres. Beskrivelsen blev offentliggjort efter udløbet af embargoen fra linux-distros; CVE-identifikatoren var endnu ikke tildelt på offentliggørelsestidspunktet.

Essensen af sårbarheden er,, at en ikke-privilegeret bruger kunne kalde request_key("cifs.spnego", …) og sende en falsk beskrivelse af nøgle. Under normale omstændigheder ville en sådan streng skulle skabes af CIFS-kernklienten selv: den indeholder oplysninger om serveren, UID, credential UID, PID, målet for upcall og andre parametre. Men kernen kontrollerede ikke, at beskrivelsen rent faktisk kom fra CIFS-subsystemet, og cifs.upcall, som køres fra root gennem den standardanbefalede request-key, stolede på disse felter som data skabt af kernen.

Sårbarheden er ikke universel «et hul i enhver Linux fra start». For at udnytte det skal flere betingelser være opfyldt: en sårbar kerne, installeret cifs-utils med reglen cifs.spnego, mulighed for ikke-privilegerede brugere at oprette user/mount namespaces, samt fraværet af blokering fra SELinux, AppArmor eller anden LSM-politik. Det blev nævnt i en meddelelse på oss-security, at på sårbare systemer giver dette en vej fra en ikke-privilegeret lokal bruger til udførelse af kode som root.


Teknisk set er kæden bygget op omkring det,, at cifs.upcall kan bevæge sig ind i de navneområder, der er angivet i den falske beskrivelse, og udføre NSS-forespørgsel indtil endelig tilbageførsel af privilegier. Som resultat kan et attacker-kontrolleret miljø påvirke indlæsningen af NSS-modulet fra root-processen. I offentlige beskrivelser understreges det, at dette netop er en logisk fejl på grænsen mellem kernen og brugerens rum, og ikke en klassisk memory corruption-sårbarhed.

Reparationen i kernen viste sig at være beskeden: for nøgletyperne cifs.spnego blev der tilføjet en kontrol, der afviser beskrivelser, der ikke blev skabt af CIFS-klienten selv med dens private spnego_cred. Denne tilgang lukker klassen af angreb uden nødvendige synkrone ændringer i cifs-utils, selvom forfatteren bemærker, at yderligere styrkelse af brugerens rum stadig er ønskeligt.

AlmaLinux rapporterede, at den grundlæggende logik er til stede i alle understøttede versioner af AlmaLinux, og at AlmaLinux 8, 9, 10 og Kitten 10 betragtes som berørte, når cifs-utils er installeret. De patchede kerner er blevet forberedt i testing-repositorierne: for AlmaLinux 9 er den angivne pakke kernel-5.14.0-687.5.4.el9_8 eller nyere, og for AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 eller nyere.

Som en midlertidig løsning, indtil den rettede kerne er installeret, foreslås det at fjerne cifs-utils, hvis SMB/CIFS-klienten ikke anvendes på systemet, at forbyde indlæsning af cifs-modulet, at overstyre cifs.spnego-reglen i request-key, eller at deaktivere de ikke-privilegerede user namespaces. Disse workarounds kan bryde Kerberos-godkendelse for CIFS-montering, så på servere, hvor Kerberos-godkendte SMB-deltagelser faktisk bruges, skal de anvendes med forsigtighed.

CIFSwitch er også interessant i konteksten af opdagelse: forfatteren beskriver det som resultatet af søgning efter flerstegs kæder ved hjælp af LLM og grafiske repræsentationer af forbindelser mellem sikkerhedsobjekter. Men den praktiske konklusion for administratorer er ganske jordnær: at tjekke for cifs-utils, state of user namespaces og kernel-opdateringer, især på systemer med lokale brugere eller container-scripts med avancerede namespace-muligheder.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster