Falha Crítica no Rust Permite Ataques de Injeção de Comandos no Windows
10 de Abril de 2024

Atorres de ameaça podem explorar uma vulnerabilidade de segurança na biblioteca padrão do Rust para mirar sistemas Windows em ataques de injeção de comandos.

Rastreada como CVE-2024-24576 , essa falha se deve a fraquezas de injeção de comandos e argumentos do sistema operacional que podem permitir que atacantes executem comandos inesperados e potencialmente maliciosos no sistema operacional.

O GitHub classificou esta vulnerabilidade como de severidade crítica com uma pontuação base máxima do CVSS de 10/10.

Atacantes não autenticados podem explorá-la remotamente, em ataques de baixa complexidade, e sem interação do usuário.

"O WG de Resposta à Segurança do Rust foi notificado que a biblioteca padrão do Rust não escapava adequadamente os argumentos ao invocar arquivos batch (com as extensões bat e cmd) no Windows usando a API Command", disse o grupo de trabalho de Resposta à Segurança do Rust.

"Um atacante que consiga controlar os argumentos passados para o processo iniciado poderia executar comandos shell arbitrários burlando o escape.

A severidade desta vulnerabilidade é crítica se você estiver invocando arquivos batch no Windows com argumentos não confiáveis.

Nenhuma outra plataforma ou uso é afetado."

Todas as versões do Rust antes da 1.77.2 no Windows são afetadas se o código de um programa ou uma de suas dependências invocar e executar arquivos batch com argumentos não confiáveis.

A equipe de segurança do Rust enfrentou um desafio significativo ao lidar com a complexidade do cmd.exe, uma vez que não conseguiram encontrar uma solução que escaparia corretamente os argumentos em todos os casos.

Como resultado, tiveram que melhorar a robustez do código de escaping e modificar a API Command.

Se a API Command não puder escapar de forma segura um argumento ao iniciar o processo, ela retorna um erro de InvalidInput.

"Se você implementar o escaping por conta própria ou apenas lidar com entradas confiáveis, no Windows você também pode usar o método CommandExt::raw_arg para contornar a lógica de escaping da biblioteca padrão," adicionou o WG de Resposta à Segurança do Rust.

O engenheiro de segurança da Flatt Security, Ryotak, descobriu a vulnerabilidade e a apelidou de BatBadBut, dizendo que a falha também impacta as seguintes línguas de programação—no entanto, nem todas elas liberaram correções:

Erlang (atualização de documentação)
Go (atualização de documentação)
Haskell (correção disponível)
Java (não será corrigido)
Node.js (correção estará disponível)
PHP (correção estará disponível)
Python (atualização de documentação)
Ruby (atualização de documentação)

"Para prevenir a execução inesperada de arquivos batch, você deve considerar mover os arquivos batch para um diretório que não esteja incluído na variável de ambiente PATH," Ryotak aconselhou.

"Nesse caso, os arquivos batch não serão executados a menos que o caminho completo seja especificado, então a execução inesperada de arquivos batch pode ser prevenida."

Em fevereiro, o Escritório da Casa Branca do Diretor Nacional de Cibersegurança (ONCD) instou as empresas de tecnologia a adotarem linguagens de programação seguras em termos de memória como o Rust.

O objetivo final é melhorar a segurança do software minimizando o número de vulnerabilidades relacionadas à segurança da memória.

Publicidade

Hardware Hacking

Aprenda a criar dispositivos incríveis com o especialista Júlio Della Flora. Tenha acesso a aulas prática que te ensinarão o que há de mais moderno em gadgets de hacking e pentest. Se prepare para o mercado de pentest físico e de sistemas embarcados através da certificação SYH2. Saiba mais...