Threats

Falha crítica do Rust permite ataques de injeção de comando no Windows

Uma vulnerabilidade de gravidade crítica do Rust pode ser explorada para encetar ataques de injeção de comando em sistemas Windows

11/04/2024

Falha crítica do Rust permite ataques de injeção de comando no Windows

Foi descoberta uma vulnerabilidade de segurança na biblioteca padrão Rust que os cibercriminosos podem explorar para atacar sistemas Windows em ataques de injeção de comando.

A falha CVE-2024-24576 deve-se a fraquezas de comando do sistema operacional e de injeção de argumentos, podendo levar à execução de comandos inesperados e potencialmente maliciosos no sistema operacional pela parte dos invasores.

De acordo com a classificação do GitHub, esta vulnerabilidade é de gravidade crítica com uma pontuação base CVSS máxima de 10/10. Os atacantes não autenticados podem explorar este bug, de forma remota, em ataques de baixa complexidade e sem interação do utilizador.

“O Rust Security Response WG foi notificado de que a biblioteca padrão Rust não escapou adequadamente dos argumentos ao invocar ficheiros em lote (com as extensões bat e cmd) no Windows utilizando a API de comando”, explica o grupo de trabalho Rust Security Response.

“Um invasor capaz de controlar os argumentos passados para o processo gerado pode executar comandos shell arbitrários, ignorando o escaping. A gravidade desta vulnerabilidade é crítica se estiver a invocar ficheiros em lote no Windows com argumentos não confiáveis. Nenhuma outra plataforma ou uso é afetado”, acrescenta.

Além disto, todas as versões do Rust anteriores a 1.77.2 no Windows poderão ser afetadas se o código de um programa ou uma das suas dependências invocar e executar ficheiros em lote com argumentos não confiáveis.

Um desafio significativo que a equipa de segurança do Rust estava associado à complexidade do cmd.exe, não tendo conseguido encontrar uma solução que escapasse corretamente dos argumentos em todos os casos. Desta forma, os investigadores tiveram de melhorar a robustez do código de escaping e modificar a API Command. Se a API de comando não puder escapar com segurança de um argumento ao gerar o processo, esta emitirá um erro InvalidInput.

“Se implementar o escaping ou apenas manipular entradas confiáveis, no Windows também pode utilizar o método CommandExt::raw_arg para contornar a lógica de escaping da biblioteca padrão”, acrescenta a Rust Security Response WG.

Foi Ryotak, engenheiro de segurança da Flatt, que descobriu a vulnerabilidade e lhe deu o nome BatBadBut. A falha afeta diversas linguagens de programação – Erlang, Go, Haskell, Java, Node.js, PHP, Python e Ruby –, sendo que nem todas lançaram patches.

“Para evitar a execução inesperada de ficheiros em lote, deve considerar mover os ficheiros em lote para um diretório que não esteja incluído na variável de ambiente PATH”, aconselha Ryotak. “Nesse caso, os ficheiros em lote não serão executados a menos que o caminho completo seja especificado, portanto, a execução inesperada de ficheiros em lote pode ser evitada”.


NOTÍCIAS RELACIONADAS

RECOMENDADO PELOS LEITORES

REVISTA DIGITAL

IT SECURITY Nº17 Abril 2024

IT SECURITY Nº17 Abril 2024

NEWSLETTER

Receba todas as novidades na sua caixa de correio!

O nosso website usa cookies para garantir uma melhor experiência de utilização.