No módulo ksmbd, que inclui uma implementação incorporada no núcleo do Linux do servidor de arquivos baseado no protocolo SMB, foi identificada uma vulnerabilidade crítica que permite a execução remota de código com privilégios de núcleo. O ataque pode ser realizado sem autenticação, desde que o módulo ksmbd esteja ativado no sistema. O problema foi detectado a partir do núcleo 5.15, lançado em novembro de 2021, e foi corrigido nas atualizações 5.15.61, 5.18.18 e 5.19.2, publicadas em agosto de 2022. Como o identificador CVE ainda não foi atribuído ao problema, não há informações exatas sobre a correção nos pacotes de distribuição.
Os detalhes da exploração da vulnerabilidade ainda não foram divulgados, sabe-se apenas que ela é causada por uma referência a uma área de memória já liberada (Use-After-Free) devido à falta de verificação da existência do objeto antes de realizar operações com ele. O problema está relacionado ao fato de que na função smb2_tree_disconnect() a memória alocada para a estrutura ksmbd_tree_connect foi liberada, mas ainda havia um ponteiro sendo utilizado na manipulação de determinadas solicitações externas que continham comandos SMB2_TREE_DISCONNECT.
Além da vulnerabilidade mencionada no ksmbd, foram corrigidos 4 problemas menos graves:
- ZDI-22-1688 — execução remota de código com privilégios de núcleo devido à falta de verificação do tamanho real dos dados externos antes de copiá-los para o buffer alocado no código. A gravidade da vulnerabilidade é mitigada pelo fato de que o ataque só pode ser realizado por um usuário autenticado.
- ZDI-22-1691 — vazamento remoto de informações da memória do núcleo devido à verificação incorreta dos parâmetros de entrada no manipulador do comando SMB2_WRITE (o ataque só pode ser realizado por um usuário autenticado).
- ZDI-22-1687 — chamada remota de negação de serviço devido ao esgotamento da memória disponível no sistema, causado pela liberação inadequada de recursos no manipulador do comando SMB2_NEGOTIATE (o ataque pode ser realizado sem autenticação).
- ZDI-22-1689 — chamada remota de falha do núcleo devido à falta de verificação adequada dos parâmetros do comando SMB2_TREE_CONNECT, resultando em leitura fora do buffer (o ataque só pode ser realizado por um usuário autenticado).
O suporte ao funcionamento do servidor SMB por meio do módulo ksmbd está incluído no pacote Samba, a partir da versão 4.16.0. Ao contrário do servidor SMB que opera no espaço do usuário, o ksmbd é mais eficiente em termos de desempenho, consumo de memória e integração com recursos avançados do núcleo. O ksmbd é apresentado como uma extensão de alto desempenho e pronta para uso em dispositivos embarcados, integrável com as ferramentas e bibliotecas do Samba, se necessário. Os autores do código ksmbd são Namjae Jeon da Samsung e Hyunchul Lee da LG, e a manutenção no núcleo é feita por Steve French da Microsoft, mantenedor do subsistema CIFS/SMB2/SMB3 no núcleo Linux e membro de longa data da equipe de desenvolvedores do Samba, que fez uma contribuição significativa para a implementação do suporte aos protocolos SMB/CIFS no Samba e Linux.
Fonte: opennet.ru
