Nova vulnerabilidade no módulo KSMBD do Kernel Linux
Nessa semana uma notícia abalou o mundo da segurança cibernética, uma nova vulnerabilidade crítica no kernel do Linux, mais especificamente no módulo do kernel "KSMBD", que implementa o protocolo SMB3 a nível de kernel.
A exploração dessa vulnerabilidade pode permitir a execução de códigos arbitrários por um usuário não autenticado, motivo pelo qual a vulnerabilidade quando identificada, no dia 22/12/2022 como "zero day", recebeu um score 10 na escala de pontuação CVSS, o nível mais alto de criticidade (ZDI-22-1690). Essa nova vulnerabilidade já recebeu 6 CVEs no Mitre, são elas: CVE-2022-47938, CVE-2022-47939, CVE-2022-47940, CVE-2022-47941, CVE-2022-47942 and CVE-2022-47943.
Informações confusas, incompletas e com erros
Apesar de toda a criticidade do assunto, nós encontramos muitas informações confusas, fragmentadas, incompletas e inclusive com erros, em fóruns, artigos e publicações em redes sociais, levando muitas pessoas ou a um desespero desnecessário ou a uma falsa sensação de segurança.
Essas informações divergentes levaram inclusive a criação e divulgação de scripts que prometem analisar se o kernel está vulnerável mas, no entando, o que vimos por aí são, em sua grande maioria, scripts que testam apenas uma parte do ambiente, gerando falsos positvos ou, ainda pior, falsos negativos, piorando ainda mais a confusão sobre o assunto.
Outro ponto percebido foi o entendimento de que o simples fato de atualizar o kernel para uma versão acima da 5.15.x resolveria. No entanto, a vulnerabilidade está presente em muitas releases das versões superiores também, o que tem gerado mais confusão e falsos negativos na análise do ambiente.
Como testar o seu kernel
As versões vulneráveis do kernel são 5.15.x (menor que 5.15.61), 5.16.x , 5.17.x, 5.18.x, 5.19.x (menor que 5.19.2).
Para analisar se o seu kernel é potencialmente vulnerável, o primeiro passo é ver se a versão está entre as que contem a vulnerabilidade. Para isso pode-se usar o comando: "uname -r".
Caso o seu kernel esteja em alguma das versões vulneráveis, o próximo passo é verificar se existe o módulo KSMBD. Para isso pode-se usar o comando: "modinfo ksmbd".
Se tiver um retorno como o abaixo, então o módulo existe.
Caso o módulo exista é preciso, então, verificar se ele está carregado no kernel, afinal, se o módulo vulnerável não for carregado, aquele código com problema não será executado. Para isso pode-se usar o comando: "lsmod | grep ksmbd".
O que fazer se meu Kernel estiver vulnerável?
Uma boa parte das pessoas não vai passar daqui, mas, caso você esteja na minoria que recebeu um retorno como o abaixo, então dispare o alarme!
Nesse ponto você tem 2 opções viáveis:
-
Atualizar o kernel para uma versão contendo a correção para essa vulnerabilidade;
-
Remover o módulo do kernel e, com isso, parar todo e qualquer serviço que use ele, mais especificamente o compartilhamento de arquivos (share) via SMB. Para isso pode-se usar o comando: "modprobe -r ksmbd" usando "sudo" ou uma conta com privilégios de root.
Automatizando o teste da vulnerabilidade
Para facilitar a análise da vulnerabilidade em seu kernel, disponibilizamos um script próprio que pode ser usado para fazer o teste de vulnerabilidade do kernel ao módulo KSMBD.
Você pode acessar o script através do github https://github.com/andrebarretosantos/security/blob/main/check_ksmbd_kernel_vulnerability.sh
Na linha de comando do seu Linux você pode executar a seguinte sequência de comandos:
$ wget https://raw.githubusercontent.com/andrebarretosantos/security/main/check_ksmbd_kernel_vulnerability.sh $ chmod 700 check_ksmbd_kernel_vulnerability.sh $ ./check_ksmbd_kernel_vulnerability.sh
Recomendações finais
Independentemente do seu Kernel estar vulnerável agora ou não, é recomendado mantê-lo atualizado com os patches de segurança, assim como todo o restante do seu sistema operacional GNU/Linux, afinal, ele está sendo cada vez mais usado e, consequentemente, sendo cada mais visado também.
Veja mais em
Artigo completo em: https://www.netsensor.com.br/post/nova-vulnerabilidade-no-kernel-linux
Meu LinkedIn: https://www.linkedin.com/in/andrebarretosantos/ LinkedIn da empresa NETSENSOR: https://www.linkedin.com/company/netsensor/
[LINUX] tentando meus dispositivo agora.
Ótimo artigo, será que dispositivos embarcados ou não-pc/servidor correm algum risco? Tenho um game portatil que usa o JELOS, uma distro linux minima pra arm.
Genial @andrebarreto eu testei o script na minha maquina e rodou delicinha, já dei uma estrelha la no gitgub também! Parabéns pelo artigo!
Eu rodei o script que automatiza o teste da vulnerabilidade e tenho certeza de que estou seguro agora!
Resultado do teste:
Obs: Sistema que estou usando atualmente é o Fedora 37!
Minhas experiências como um novo usuário de Linux:
Tinha usado Ubuntu durante uma semana depois decidi mudar para o Fedora, para testar os sistemas dos quais mais me interessei, e também porquê estava com um probleminha no Ubuntu que não estava conseguindo baixar um jogo no qual eu jogo, porém acredito fielmente que o erro tenha sido da minha parte (com certeza foi) e não do sistema (foi erro meu mesmo XD), só que como já estava com vontade de explorar o Fedora, pulei direto pra cá e simplesmente estou adorando o Linux (tanto Ubuntu, como o Fedora)! Dá muita liberdade pra customizar o sistema inteiro, tanto aparência como outras coisas mais avançadas que eu não cheguei nem a tentar mexer pra não correr o risco de quebrar tudo.
Não volto nunca mais para o sistema chamado Janelas (traduzido do inglês para o português) XD
Dúvidas:
-
Qual a diferença do snap, para o flatpak? Não entendi muito bem sobre isso, pois no ubuntu era snap e aqui no Fedora é flatpak (se tem como baixar no fedora através de snap, e no ubuntu através de flatpak, eu realmente não sei).
-
Gostaria de me aprofundar mais nisso e estudar sobre tudo que eu puder desse universo, quais cursos/vídeos/artigos vocês recomendam para eu aprender mais sobre linux? (Lembrando que eu sou bem iniciante mesmo).
-
Por que a versão do meu kernel é 6.0.15? Por eu estar no notebook isso muda algo?
Fim
Obrigado @andrebarreto por esse artigo maravilhoso, muito bem explicado, com muitas informações, imagens e que ainda por cima traz uma solução fácil para quem não manja muito, achei bem completo! Show de bola! E já agredecendo de antemão também, muito obrigado a quem responder essas minhas perguntas e sanar minhas dúvidas! E vai me desculpando se fiz alguma pergunta de 'iniciante', ou alguma pergunta idiota, é que eu realmente entrei nesse mundo agora e não sei de muita coisa! Abraços!
Distros Linux e versões em que o script foi testado com sucesso até o momento: Ubuntu 22.04 LTS Ubuntu 20.04 LTS Slackware64 14.2 Slackware 10.2 AlmaLinux 8.5 Fedora 37
Se você testou em outra versão comenta aqui e compartilha a informação com a comunidade.