Detalhes foram revelados e um exploit foi publicado para a vulnerabilidade CIFSwitch (CVE ainda não atribuído) no módulo do kernel CIFS e na ferramenta cifs-utils, permitindo que um usuário não privilegiado obtenha permissões de root no sistema. A correção está disponível apenas na forma de um patch, que foi publicado em 16 de maio e aceito na branch principal do kernel Linux em 19 de maio (as versões corrigidas do kernel ainda não estão disponíveis).
A vulnerabilidade afeta o código que fornece suporte ao mecanismo cifs.spnego para realizar a autenticação pelo protocolo SPNEGO (Simple and Protected GSSAPI Negotiation) ao se conectar a servidores SMB. Ao usar cifs.spnego para determinar chaves do Kerberos/SPNEGO, o kernel chama o manipulador cifs.upcall, fornecido pelo pacote cifs-utils e executado no espaço do usuário com permissões de root.
Um usuário não privilegiado pode iniciar uma chamada ao manipulador enviando uma solicitação que requer a obtenção da chave "cifs.spnego", com uma descrição falsificada "CIFS SPNEGO". No manipulador cifs.upcall, não são realizadas verificações adicionais de validade dos parâmetros passados pelo kernel, entre outras coisas, ele considera como confiáveis os valores dos campos pid, uid, creduid e
upcall_target. Após ser ativado, o manipulador cifs.upcall muda para os namespaces do processo do usuário a partir do qual a solicitação foi enviada, e até que as permissões sejam redefinidas, procura na base de dados do sistema NSS (Name Service Switch).
Um atacante pode iniciar seu processo em um namespace separado de pontos de montagem, o que levará à execução de uma chamada ao NSS em seu contexto. Para explorar a vulnerabilidade, basta que o ambiente criado pelo atacante contenha seu próprio arquivo de configuração /etc/nsswitch.conf e um conjunto de bibliotecas substitutas libnss_*.so.2. A execução de uma solicitação NSS pelo manipulador cifs.upcall resultará no carregamento das bibliotecas injetadas pelo atacante com permissões de root.
Para explorar a vulnerabilidade, deve ser permitido criar namespaces de identificação de usuários (user namespace) ou de pontos de montagem (mount namespace), além de ser necessário que o pacote cifs-utils esteja instalado no sistema. As distribuições onde a exploração da vulnerabilidade é possível na configuração padrão:
- 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
Distribuições que exigem a instalação do pacote cifs-utils para funcionamento do exploit:
- Ubuntu 18.04/20.04/22.04 Desktop/Servidor
- Pop!_OS 22.04 Intel/24.04 Genérico
- Ubuntu 24.04 Desktop minimal/completo e Servidor
- Debian 11/12/13 netinst padrão e GNOME/KDE/padrão/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
Distribuições que, na configuração padrão, aplicam definições que bloqueiam a exploração de vulnerabilidades através do SELinux ou Apparmor, mesmo com o pacote cifs-utils instalado:
- 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/Minimal-VM
- SUSE Linux 16
Como uma alternativa de proteção, é possível bloquear o carregamento automático do módulo de kernel cifs:
sh -c «printf ‘install cifs /bin/false\n’ > /etc/modprobe.d/cifs.conf; rmmod cifs 2>/dev/null; true»
Também é possível proibir o uso de namespaces de usuário (‘sysctl -w kernel.unprivileged_userns_clone=0’) e remover ou sobrescrever a regra cifs.spnego nas configurações do cifs-utils:
cat >/etc/request-key.d/cifs.spnego.conf <‘EOF’
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF
Enquanto isso, em 28 de maio, foram publicados 137 relatórios sobre vulnerabilidades no kernel Linux, e em 27 de maio, 277 relatórios.
Fonte: opennet.ru
