Nova vulnerabilidade na linguagem R: atualização imediata.
30 de Abril de 2024

Uma vulnerabilidade de segurança foi descoberta na linguagem de programação R que poderia ser explorada por um ator de ameaças para criar um arquivo RDS (R Data Serialization) malicioso, de tal forma que resulte em execução de código quando carregado e referenciado.

A falha, atribuída ao identificador CVE CVE-2024-27322 (pontuação CVSS: 8.8), "envolve o uso de objetos promise e avaliação lazy no R", disse a companhia de segurança de aplicações em IA, HiddenLayer.


RDS, assim como pickle no Python, é um formato usado para serializar e salvar o estado de estruturas de dados ou objetos em R, uma linguagem de programação de código aberto usada em computação estatística, visualização de dados e aprendizado de máquina.

Esse processo de serialização – serialize() ou saveRDS() – e deserialização – unserialize() e readRDS() – também é utilizado quando salvando e carregando pacotes R.

A causa raiz por trás do CVE-2024-27322 reside no fato de que isso poderia levar à execução arbitrária de código ao deserializar dados não confiáveis, deixando os usuários expostos a ataques à cadeia de suprimentos por meio de pacotes R especialmente criados.

Um atacante procurando explorar a falha poderia, portanto, tirar vantagem do fato de que pacotes R aproveitam o formato RDS para salvar e carregar dados, causando execução automática de código quando o pacote é descomprimido e deserializado.

"Pacotes R são vulneráveis a esse exploit e, portanto, podem ser usados como parte de um ataque à cadeia de suprimentos via repositórios de pacotes", disseram os pesquisadores de segurança Kasimir Schulz e Kieran Evans.

"Para um atacante assumir um pacote R, tudo o que eles precisam fazer é sobrescrever o arquivo rdx com o arquivo maliciosamente criado, e quando o pacote é carregado, ele automaticamente executa o código."
O defeito de segurança foi abordado na versão 4.4.0 lançada em 24 de abril de 2024, seguindo a divulgação responsável.

"Um atacante pode explorar esse [defeito] criando um arquivo no formato RDS que contém uma instrução promise configurando o valor para unbound_value e a expressão para conter código arbitrário", disse a HiddenLayer.

Devido à avaliação lazy, a expressão só será avaliada e executada quando o símbolo associado ao arquivo RDS for acessado.

Portanto, se isso for simplesmente um arquivo RDS, quando um usuário o atribui a um símbolo (variável) para trabalhar com ele, o código arbitrário será executado quando o usuário referenciar esse símbolo.

Se o objeto estiver compilado dentro de um pacote R, o pacote pode ser adicionado a um repositório R como o CRAN, e a expressão será avaliada e o código arbitrário executado quando um usuário carregar esse pacote.

O Centro de Coordenação CERT (CERT/CC) divulgou um aviso para o CVE-2024-27322 , observando que a falha poderia ser explorada para alcançar execução arbitrária de código no dispositivo alvo da vítima via arquivos RDS ou rdx maliciosos.

"Um atacante pode criar arquivos .rds e .rdx maliciosos e usar engenharia social para distribuir esses arquivos para executar código arbitrário no dispositivo da vítima", disse o CERT/CC.

Projetos que usam readRDS em arquivos não confiáveis também são vulneráveis ao ataque.

Publicidade

Cuidado com o deauth, a tropa do SYWP vai te pegar

A primeira certificação prática brasileira de wireless hacking veio para mudar o ensino na técnica no país, apresentando labs práticos e uma certificação hands-on.
Todas as técnicas de pentest wi-fi reunidos em um curso didático e definitivo. Saiba mais...