Falha encontrada na linguagem de Programação R

Falha encontrada na linguagem de Programação R
Compartilhe

Falha de segurança na linguagem de programação R que pode ser explorada por agentes mal-intencionados. Essa vulnerabilidade está relacionada à desserialização de dados não confiáveis e afeta arquivos nos formatos RDS (R Data Serialization) e .rdx.

A causa raiz dessa vulnerabilidade, conhecida como CVE-2024-27322, reside no fato de que dados não confiáveis, quando desserializados, podem levar à execução arbitrária de código. Isso significa que um invasor pode criar arquivos maliciosos no formato RDS ou .rdx, e quando esses arquivos são carregados e referenciados, comandos arbitrários podem ser executados no dispositivo da vítima.

Essa falha de segurança expõe os usuários a ataques à cadeia de suprimentos, especialmente por meio de pacotes R especialmente criados. Os pacotes R utilizam o formato RDS para salvar e carregar dados, e é nesse ponto que a execução automática de código malicioso pode ocorrer.

Portanto, é crucial que os desenvolvedores estejam cientes dessa vulnerabilidade e tomem medidas para mitigá-la, como atualizar seus sistemas e verificar a origem e integridade dos pacotes R utilizados em seus projetos.

A linguagem de programação R oferece suporte à serialização de dados, que é o processo de transformar objetos e dados R em um formato que pode ser desserializado em outra sessão R. Isso permite criar uma cópia dos objetos R da sessão original.

Falha encontrada na linguagem de Programação R

Origem da Falha

A origem do problema do CVE-2024-27322 está no fato de que isso poderia resultar na execução arbitrária de código ao deserializar dados não confiáveis, expondo os usuários a ataques à cadeia de suprimentos através de pacotes R especialmente projetados.

Um invasor interessado em explorar a vulnerabilidade poderia se beneficiar do fato de que os pacotes R utilizam o formato RDS para salvar e carregar dados, resultando na execução automática de código quando o pacote é descompactado e desserializado.

“Pacotes R são suscetíveis a esse exploit e, portanto, podem ser empregados como parte de um ataque à cadeia de suprimentos através de repositórios de pacotes”, afirmaram os pesquisadores de segurança Kasimir Schulz e Kieran Evans.

“Para um invasor assumir um pacote R, tudo o que precisa fazer é substituir o arquivo rdx por um arquivo criado maliciosamente, e quando o pacote é carregado, ele executa automaticamente o código.” A falha de segurança foi corrigida na versão 4.4.0 lançada em 24 de abril de 2024, após uma divulgação responsável.

“Um invasor pode explorar essa [falha] 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”, declarou 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 for apenas 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 for compilado em 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 será executado quando um usuário carregar esse pacote.

O Centro de Coordenação CERT (CERT/CC) emitiu um alerta para o CVE-2024-27322, destacando que a vulnerabilidade poderia ser explorada para realizar execução arbitrária de código no dispositivo alvo da vítima através de arquivos RDS ou rdx maliciosos.

“Um invasor pode criar arquivos .rds e .rdx mal-intencionados e usar técnicas de engenharia social para distribuir esses arquivos e executar código arbitrário no dispositivo da vítima”, afirmou o CERT/CC.

Projetos que utilizam readRDS em arquivos não confiáveis também estão expostos ao ataque.

Aplicar atualizações

O projeto R forneceu o R Core versão 4.4.0, que resolve a vulnerabilidade. O R Core versão 4.4.0 agora restringe promessas no fluxo de serialização para que agora sejam usadas para implementar avaliação lenta. Aplique a atualização o mais rápido possível.

Uso de arquivo RDS seguro ou sandbox

Proteja e use arquivos .rds, rdb e .rdx não confiáveis/de terceiros em contêineres ou em um ambiente Sandbox para evitar acesso inesperado aos recursos.