Uma vulnerabilidade crítica foi identificada no módulo ksmbd, que inclui uma implementação de um servidor de arquivos baseado no protocolo SMB integrado ao kernel Linux, que permite a execução remota de código com direitos de kernel. O ataque pode ser realizado sem autenticação, basta que o módulo ksmbd esteja ativado no sistema. O problema se manifestou desde o kernel 5.15, lançado em novembro de 2021, e foi discretamente corrigido nas atualizações 5.15.61, 5.18.18 e 5.19.2, formadas em agosto de 2022. Como o problema ainda não recebeu um identificador CVE, ainda não há informações exatas sobre como corrigir o problema nas distribuições.
Detalhes sobre a exploração da vulnerabilidade ainda não foram divulgados, sabe-se apenas que a vulnerabilidade é causada pelo acesso a uma área de memória já liberada (Use-After-Free) devido à falta de verificação da existência de um objeto antes de realizar operações com isso. 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 depois disso ainda havia um ponteiro usado ao processar certas solicitações externas contendo comandos SMB2_TREE_DISCONNECT.
Além da vulnerabilidade mencionada no ksmbd, 4 problemas menos perigosos também foram corrigidos:
- ZDI-22-1688 - execução remota de código com direitos de kernel devido à falta de verificação do tamanho real dos dados externos no código de processamento de atributos do arquivo antes de copiá-los para o buffer alocado. O perigo da vulnerabilidade é mitigado pelo facto de o ataque só poder ser realizado por um utilizador autenticado.
- ZDI-22-1691 - vazamento remoto de informações da memória do kernel devido à verificação incorreta dos parâmetros de entrada no manipulador de comandos SMB2_WRITE (o ataque só pode ser realizado por um usuário autenticado).
- ZDI-22-1687 - negação de serviço remota por esgotamento da memória disponível no sistema devido à liberação incorreta de recursos no manipulador de comandos SMB2_NEGOTIATE (o ataque pode ser realizado sem autenticação).
- ZDI-22-1689 - chamada remota para travar o kernel devido à falta de verificação adequada dos parâmetros do comando SMB2_TREE_CONNECT, levando à leitura de uma área fora do buffer (o ataque só pode ser realizado por um usuário autenticado ).
O suporte para execução de um servidor SMB usando o módulo ksmbd foi incluído no pacote Samba desde a versão 4.16.0. Ao contrário de um servidor SMB de espaço de usuário, o ksmbd é mais eficiente em termos de desempenho, consumo de memória e integração com recursos avançados do kernel. O Ksmbd é apresentado como uma extensão de alto desempenho e pronta para integração do Samba, integrando-se com ferramentas e bibliotecas do Samba conforme necessário. O código ksmbd foi escrito por Namjae Jeon da Samsung e Hyunchul Lee da LG, e mantido no kernel por Steve French da Microsoft, mantenedor dos subsistemas CIFS/SMB2/SMB3 no kernel Linux e membro de longa data da equipe de desenvolvimento do Samba, que contribuiu significativamente. à implementação de suporte a protocolos SMB/CIFS em Samba e Linux.
Fonte: opennet.ru