Falha de 19 anos concede root

Uma vulnerabilidade crítica de escalação de privilégios locais no kernel Linux, batizada de CIFSwitch e identificada como CVE-2026-46333, permite que qualquer usuário sem privilégios obtenha acesso root em múltiplas distribuições Linux. A falha existe no código desde 2007 e foi descoberta pelo pesquisador de segurança Asim Manizada, engenheiro de segurança da SpaceX, utilizando uma abordagem assistida por inteligência artificial baseada em grafos semânticos. O proof-of-concept funcional já foi publicado no GitHub.

Como o ataque funciona

O CIFSwitch explora uma falha de validação na interação entre o subsistema CIFS do kernel Linux e o pacote userspace cifs-utils (versão 6.14 e superiores). O CIFS (Common Internet File System) é o protocolo usado pelo Linux para montar e acessar compartilhamentos de rede do tipo Windows/SMB.

Quando um compartilhamento CIFS usa autenticação Kerberos, o kernel solicita uma chave do tipo cifs.spnego por meio do subsistema keyring do Linux. Isso dispara o helper cifs.upcall, que executa com privilégios de root para obter o material de autenticação Kerberos/SPNEGO.

O problema central é que o kernel nunca verificava se a requisição cifs.spnego realmente originava-se do cliente CIFS. Um usuário sem privilégios pode chamar diretamente request_key("cifs.spnego", ...) com uma descrição forjada. O helper cifs.upcall, rodando como root, processa essa requisição confiando cegamente nos campos controlados pelo atacante.

A cadeia de exploração segue estes passos:

  1. Atacante chama request_key("cifs.spnego", ...) com descrição forjada, definindo upcall_target=app e um PID controlado
  2. O helper cifs.upcall root alterna para o namespace do processo malicioso
  3. Dentro desse namespace, o atacante planta um nsswitch.conf fraudulento e uma biblioteca libnss_*.so.2 maliciosa
  4. O helper root executa a lookup NSS, carrega e executa o código arbitrário do atacante
  5. O payload malicioso grava uma entrada em /etc/sudoers.d, concedendo acesso root permanente

Distribuições afetadas pela falha

A exploração exige uma combinação específica: kernel vulnerável, cifs-utils compatível, suporte a user namespaces e políticas SELinux/AppArmor que não bloqueiem o caminho de ataque. Diversas distribuições são vulneráveis em sua configuração padrão:

  • Linux Mint 21.3 e 22.3
  • CentOS Stream 9
  • Rocky Linux 9 e AlmaLinux 9
  • Kali Linux 2021.4 a 2026.1
  • SLES 15 SP7

Distribuições como Ubuntu, Debian, Pop!_OS, openSUSE, Oracle Linux e Amazon Linux tornam-se vulneráveis se o pacote cifs-utils estiver instalado. Já Ubuntu 26.04, Fedora 40-44, CentOS Stream 10, Rocky Linux 10, SLES 16, AlmaLinux 10 e openSUSE Leap 16 possuem configurações padrão de SELinux/AppArmor que impedem a exploração.

Correção e mitigações urgentes

O patch upstream no kernel Linux adiciona um hook vet_description para o tipo de chave cifs.spnego, garantindo que descrições só sejam aceitas quando a requisição é feita sob o contexto interno spnego_cred do cliente CIFS. Isso bloqueia qualquer tentativa de falsificação a partir do userspace não privilegiado.

Enquanto a correção não é aplicada, administradores devem adotar as seguintes mitigações:

  • Atualizar o kernel para versões que incorporem o patch de validação de origem das requisições cifs.spnego
  • Bloquear o módulo CIFS do kernel se compartilhamentos SMB/CIFS não forem necessários
  • Desabilitar user namespaces não privilegiados (sysctl kernel.unprivileged_userns_clone=0)
  • Revisar as regras request-key em /etc/request-key.d/ e sobrescrever configurações que disparem cifs.upcall
  • Remover o cifs-utils de servidores que não utilizam montagens CIFS/Kerberos

O CIFSwitch demonstra como falhas lógicas sutis em interações entre kernel e userspace podem permanecer invisíveis por quase duas décadas — e como abordagens assistidas por IA podem identificar bugs que auditorias manuais não encontraram.

Referências e fontes