CIFSwitch — vulnérabilité dans la sous-système CIFS du noyau Linux, permettant d'obtenir des droits root

Les détails ont été révélés et un exploit a été publié pour la vulnérabilité CIFSwitch (CVE non encore attribué) dans le module du noyau CIFS et l’outil cifs-utils, permettant à un utilisateur non privilégié d’obtenir des droits root sur le système. Le correctif est disponible uniquement sous forme de patch, publié le 16 mai, et accepté dans la branche principale du noyau Linux le 19 mai (les versions corrigées du noyau ne sont pas encore disponibles).

La vulnérabilité concerne le code assurant le support du mécanisme cifs.spnego pour effectuer l'authentification via le protocole SPNEGO (Simple and Protected GSSAPI Negotiation) lors de la connexion aux serveurs SMB. Lors de l'utilisation de cifs.spnego pour déterminer les clés à partir de Kerberos/SPNEGO, le noyau appelle le gestionnaire cifs.upcall, fourni par le paquet cifs-utils et exécuté dans l'espace utilisateur avec des droits root.

Un utilisateur non privilégié peut activer l'appel du gestionnaire en envoyant une requête demandant d'obtenir la clé « cifs.spnego », avec une description falsifiée « CIFS SPNEGO ». Le gestionnaire cifs.upcall ne réalise pas de vérifications supplémentaires sur les paramètres transmis par le noyau, entre autres, il accepte les valeurs des champs pid, uid, creduid et
upcall_target comme étant fiables. Une fois activé, le gestionnaire cifs.upcall se déplace dans les espaces de noms du processus utilisateur par lequel la requête a été envoyée, et, avant la réinitialisation des privilèges, il effectue une recherche dans la base de données système NSS (Name Service Switch).

L’attaquant peut lancer son propre processus dans un espace de noms de points de montage distinct, ce qui entraînera l'exécution d'une requête NSS dans son contexte. Pour exploiter la vulnérabilité, il suffit que l’environnement créé par l’attaquant contienne son propre fichier de configuration /etc/nsswitch.conf et un ensemble de bibliothèques sous-stituées libnss_*.so.2. L'exécution d'une requête NSS par le gestionnaire cifs.upcall entraînera le chargement des bibliothèques substituées par l'attaquant avec des droits root.

Pour exploiter la vulnérabilité, le système doit permettre la création d'espaces de noms d'identificateurs d'utilisateurs (user namespace) ou de points de montage (mount namespace), et le paquet cifs-utils doit être installé dans le système. Les distributions où l'exploitation de la vulnérabilité est possible avec une configuration par défaut comprennent :

  • 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

Les distributions pour lesquelles l'installation du paquet cifs-utils est requise pour le fonctionnement de l'exploit :

  • Ubuntu 18.04/20.04/22.04 Bureau / Serveur
  • Pop!_OS 22.04 Intel/24.04 Générique
  • Ubuntu 24.04 Bureau minimal/complet et Serveur
  • Debian 11/12/13 netinst standard et 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

Les distributions où la configuration par défaut applique des paramètres bloquant l'exploitation de la vulnérabilité via SELinux ou Apparmor, même avec le paquet cifs-utils :

  • Ubuntu 26.04 Bureau/Serveur
  • Fedora 40/41/42/43/44 Workstation/Serveur
  • 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

Comme solution de contournement de protection, vous pouvez bloquer le chargement automatique du module noyau cifs :

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

Vous pouvez également interdire l'utilisation du namespace utilisateur («sysctl -w kernel.unprivileged_userns_clone=0») et supprimer ou redéfinir la règle cifs.spnego dans les paramètres cifs-utils :

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

En attendant, au 28 mai, 137 rapports de vulnérabilités dans le noyau Linux ont été publiés, et le 27 mai — 277 rapports.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster