Feltárták a részleteket és közzétették a CIFSwitch (CVE még nem rendelhető) sérülékenységhez tartozó kihasználási lehetőséget a CIFS kernel modulban és a cifs-utils eszközkészletben, amely lehetővé teszi, hogy egy nem privilégizált felhasználó root jogosultságokat szerezzen a rendszerben. A javítás csak patch formájában érhető el, amelyet május 16-án tettek közzé, és május 19-én fogadtak el a Linux kernel fő ágba (a javító kernel kiadások még nem érhetők el).
A sérülékenység érinti a cifs.spnego mechanizmus támogatását biztosító kódot, amely a SPNEGO (Simple and Protected GSSAPI Negotiation) protokollon keresztüli hitelesítést tesz lehetővé SMB szerverekhez való csatlakozáskor. A cifs.spnego használatakor a kernel egy cifs.upcall kezelőt hív meg, amelyet a cifs-utils csomag biztosít, és amely felhasználói térben root jogokkal fut.
Egy nem privilégizált felhasználó kezdeményezheti a kezelő hívását egy „cifs.spnego” kulcs megszerzésére irányuló kérés elküldésével, hamis „CIFS SPNEGO” leírással. A cifs.upcall kezelő nem végez további ellenőrzéseket a kernel által átadott paraméterek helyessége tekintetében, többek között megbízhatónak tekinti a pid, uid, creduid és upcall_target mezők értékeit.
A kezelő aktiválása után a cifs.upcall átvált a kérésről elküldött felhasználói folyamat névtartományába, és a privilégiumok visszaállítása előtt keresést végez a rendszerszolgáltatás adatbázisában (NSS — Name Service Switch).
A támadó elindíthatja a saját folyamatát egy külön mount namespace-ben, ami lehetővé teszi, hogy az NSS kérések a saját kontextusában történjenek. A sérülékenység kihasználásához a támadónak a saját környezetébe kell elhelyeznie egy saját /etc/nsswitch.conf konfigurációs fájlt, valamint egy készlet hamis könyvtárat libnss_*.so.2. Az NSS kérdés cifs.upcall kezelő általi végrehajtása a támadó által benyújtott lib fájlok root jogokkal való betöltéséhez vezet.
A sérülékenység kihasználásához a rendszerben lehetővé kell tenni a felhasználói azonosító namespace-ek (user namespace) vagy mount namespace-ek létrehozását, valamint szükséges a cifs-utils csomag telepítése. Az alábbi disztribúciók esetében lehetséges a sérülékenység kihasználása alapértelmezett konfigurációban:
- Linux Mint Cinnamon 21.3/22.3
- CentOS Stream 9 GNOME
- Rocky Linux 9 Workstation
- Kali Linux
- AlmaLinux 9.7 Workstation
- SUSE 15 SP7/SAP 15 SP7/SAP 16
Disztribúciók, amelyek működéséhez a cifs-utils csomag telepítése szükséges:
- Ubuntu 18.04/20.04/22.04 Asztali/Szerver
- Pop!_OS 22.04 Intel/24.04 Generic
- Ubuntu 24.04 Asztali minimal/full és Szerver
- Debian 11/12/13 netinst standard és GNOME/KDE/standard/XFCE
- CentOS Stream 9 Cinnamon/KDE/MATE/XFCE
- Rocky Linux 9 KDE/Workstation-Lite
- openSUSE Leap 15.6 GNOME/KDE
- openSUSE Tumbleweed GNOME/KDE
- Rocky Linux 8 GenericCloud
- Oracle Linux 8/9 KVM
- Amazon Linux 2023 KVM
Disztribúciók, amelyek alapértelmezett konfigurációjában olyan beállítások vannak, amelyek blokkolják a sebezhetőségek kihasználását SELinux vagy Apparmor révén, még a cifs-utils csomag megléte esetén is:
- Ubuntu 26.04 Asztali/Szerver
- Fedora 40/41/42/43/44 Workstation/Szerver
- CentOS Stream 10 GNOME/KDE
- Rocky Linux 10 Workstation
- AlmaLinux 10.1 Workstation
- Oracle Linux 10 KVM
- openSUSE Tumbleweed GNOME/KDE
- openSUSE Leap 16.0 OEM GNOME/KDE/Minimal-VM
- SUSE Linux 16
Védelmi kerülőmegoldásként le lehet tiltani a cifs kernel modul automatikus betöltését:
sh -c «printf ‘install cifs /bin/false\n’ > /etc/modprobe.d/cifs.conf; rmmod cifs 2>/dev/null; true»
Továbbá a user namespace használata is tiltható („sysctl -w kernel.unprivileged_userns_clone=0”), és törölni vagy felül lehet írni a cifs-utils beállításaiban a cifs.spnego szabályt:
cat >/etc/request-key.d/cifs.spnego.conf <‘EOF’
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF
Közben, május 28-án 137 jelentés érkezett a Linux kernel sebezhetőségeiről, május 27-én pedig 277 jelentés.
Forrás: opennet.ru
