CIFSwitch — vulnerabilidad en el subsistema CIFS del kernel de Linux que permite obtener privilegios de root

Se han revelado detalles y se ha publicado un exploit para la vulnerabilidad CIFSwitch (CVE aún no asignado) en el módulo del núcleo CIFS y la herramienta cifs-utils, que permite a un usuario no privilegiado obtener derechos de root en el sistema. La corrección está disponible solo en forma de parche, que fue publicado el 16 de mayo y el 19 de mayo fue aceptado en la rama principal del núcleo de Linux (las versiones corregidas del núcleo aún no están disponibles).

La vulnerabilidad afecta al código que proporciona soporte para el mecanismo cifs.spnego para la autenticación mediante el protocolo SPNEGO (Negociación GSSAPI Simple y Protegida) al conectarse a los servidores SMB. Al usar cifs.spnego para determinar claves de Kerberos/SPNEGO, el núcleo llama al manejador cifs.upcall, proporcionado por el paquete cifs-utils y ejecutado en el espacio de usuario con derechos de root.

Un usuario no privilegiado puede iniciar una llamada al manejador mediante el envío de una solicitud que requiere la obtención de la clave "cifs.spnego", con una descripción falsa "CIFS SPNEGO". En el manejador cifs.upcall no se realizan verificaciones adicionales de la validez de los parámetros pasados a través del núcleo; entre otras cosas, acepta como legítimos los valores de los campos pid, uid, creduid y
upcall_target. Después de la activación, el manejador cifs.upcall cambia al espacio de nombres del proceso de usuario desde el cual se envió la solicitud, y hasta que se restablezcan los privilegios, realiza una búsqueda en la base de datos del sistema NSS (Name Service Switch).

Un atacante puede iniciar su propio proceso en un espacio de nombres de montajes separado, lo que llevará a que se realice una consulta a NSS en su contexto. Para explotar la vulnerabilidad, es suficiente que en el entorno creado por el atacante se coloque su propio archivo de configuración /etc/nsswitch.conf y un conjunto de bibliotecas suplantadas libnss_*.so.2. La ejecución de la consulta NSS por parte del manejador cifs.upcall conducirá a la carga de las bibliotecas suplantadas por el atacante con derechos de root.

Para explotar la vulnerabilidad, el sistema debe permitir la creación de espacios de nombres de identificadores de usuarios (user namespace) o de montajes (mount namespace), y también se requiere que el paquete cifs-utils esté instalado en el sistema. Las distribuciones en las que es posible explotar la vulnerabilidad con la configuración predeterminada son:

  • 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

Distribuciones que requieren la instalación del paquete cifs-utils para que el exploit funcione:

  • Ubuntu 18.04/20.04/22.04 Desktop/Servidor
  • Pop!_OS 22.04 Intel/24.04 Genérico
  • Ubuntu 24.04 Desktop mínimo/completo y Servidor
  • Debian 11/12/13 netinst estándar y GNOME/KDE/estándar/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

Distribuciones que en la configuración por defecto aplican configuraciones que bloquean la explotación de vulnerabilidades a través de SELinux o Apparmor, incluso con el paquete cifs-utils:

  • Ubuntu 26.04 Desktop/Servidor
  • Fedora 40/41/42/43/44 Workstation/Servidor
  • 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/Mínima-VM
  • SUSE Linux 16

Como una solución alternativa, se puede bloquear la carga automática del módulo del núcleo cifs:

sh -c «printf 'install cifs /bin/false\n' > /etc/modprobe.d/cifs.conf; rmmod cifs 2>/dev/null; true»

También se puede prohibir el uso del espacio de nombres de usuario ('sysctl -w kernel.unprivileged_userns_clone=0') y eliminar o redefinir la regla cifs.spnego en la configuración de cifs-utils:

cat >/etc/request-key.d/cifs.spnego.conf <‘EOF’
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF

Mientras tanto, el 28 de mayo se publicaron 137 informes sobre vulnerabilidades en el núcleo Linux, y el 27 de mayo se reportaron 277 informes.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster