Detaljer har avslöjats och en exploitering har publicerats för sårbarheten CIFSwitch (CVE har ännu inte tilldelats) i CIFS-kärnmodulen och cifs-utils-verktygssatsen, som tillåter en icke-privilegierad användare att få root-rettigheter i systemet. En lösning finns endast som en patch, som publicerades den 16 maj och godkändes den 19 maj i huvudgrenen av Linux-kärnan (fixade kärnutgåvor är fortfarande inte tillgängliga).
Sårbarheten påverkar koden som stödjer mekanismen cifs.spnego för att autentisera via SPNEGO-protokollet (Simple and Protected GSSAPI Negotiation) vid anslutning till SMB-servrar. Vid användning av cifs.spnego för att hämta nycklar från Kerberos/SPNEGO anropar kärnan cifs.upcall-hanteraren, som tillhandahålls av cifs-utils-paketet och körs i användarrummet med root-rettigheter.
En icke-privilegierad användare kan initiera ett anrop av hanteraren genom att skicka en begäran som kräver nyckeln "cifs.spnego", med en förfalskad beskrivning "CIFS SPNEGO". I cifs.upcall-hanteraren utförs inga ytterligare valideringskontroller för de parametrar som skickas via kärnan, bland annat uppfattar den pålitliga värdena för fälten pid, uid, creduid och
upcall_target. När hanteraren aktiveras växlar cifs.upcall till användarprocessens namnområde från vilket begäran skickades, och innan privilegierna återställs utförs en sökning i systemdatabasen NSS (Name Service Switch).
En angripare kan starta sin process i ett separat namnområde för monteringspunkter, vilket leder till att en NSS-förfrågan görs i dess kontext. För att utnyttja sårbarheten räcker det med att placera sin egen konfigurationsfil /etc/nsswitch.conf och en uppsättning förfalskade bibliotek libnss_*.so.2 inom det angriparens skapade miljön. En NSS-förfrågan från cifs.upcall-hanteraren leder till att de förfalskade biblioteken laddas med root-rettigheter.
För att utnyttja sårbarheten bör systemet tillåta skapande av användaridentifieringsnamnområden (user namespace) eller monteringsnamnområden (mount namespace), och cifs-utils-paketet måste vara installerat i systemet. Distributioner där sårbarheten kan utnyttjas med standardkonfiguration:
- 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
Distributioner där installation av paketet cifs-utils krävs för att exploatören ska fungera:
- Ubuntu 18.04/20.04/22.04 Desktop/Server
- Pop!_OS 22.04 Intel/24.04 Generic
- Ubuntu 24.04 Desktop minimal/full och Server
- Debian 11/12/13 netinst standard och 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
Distributioner där de standardinställningar som blockerar utnyttjande av sårbarheter genom SELinux eller Apparmor används, även med paketet cifs-utils:
- Ubuntu 26.04 Desktop/Server
- Fedora 40/41/42/43/44 Workstation/Server
- 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
Som en workaround kan man blockera automatisk laddning av cifs-kärnmodulen:
sh -c "printf 'install cifs /bin/false\n' > /etc/modprobe.d/cifs.conf; rmmod cifs 2>/dev/null; true"
Man kan också förbjuda användning av user namespace ("sysctl -w kernel.unprivileged_userns_clone=0") och ta bort eller åsidosätta regeln cifs.spnego i inställningarna för cifs-utils:
cat >/etc/request-key.d/cifs.spnego.conf <'EOF'
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF
Under tiden har 137 rapporter om sårbarheter i Linux-kärnan publicerats den 28 maj, och 277 rapporter den 27 maj.
Källa: opennet.ru
