Falha no React Native CLI abre servidores de desenvolvimento para ataques



Falha no React Native CLI abre servidores de desenvolvimento para ataques

Uma falha crítica de execução remota de código (RCE) no amplamente utilizado @react-native-community/cli (e sua API de servidor) permite que invasores executem comandos arbitrários do sistema operacional por meio do servidor de desenvolvimento Metro, o empacotador JavaScript padrão para React Native.

Em essência, iniciar o servidor de desenvolvimento através de comandos padrão (por exemplo, npm begin ou npx react-native begin) poderia expor a máquina a invasores externos, porque o servidor se liga a todas as interfaces de rede por padrão (0.0.0.0), em vez de se limitar a “localhost”, como diz a mensagem do console.

De acordo com os pesquisadores do JFrog, o bug é um problema grave que ameaça os desenvolvedores de aplicativos React Native. Embora a exploração no Home windows seja bem demonstrada (execução completa do comando do sistema operacional por meio de uma chamada open() insegura), os caminhos do macOS/Linux são atualmente menos diretos – embora o risco permaneça actual e sujeito a pesquisas adicionais.

Uma solução está disponível, mas as equipes de desenvolvimento devem agir rapidamente, alertaram os pesquisadores do JFrog em uma postagem no weblog.

Padrões de servidor de desenvolvimento fracos

A vulnerabilidade surge porque o servidor de desenvolvimento Metro, que começou a usar a ferramenta CLI, expõe um endpoint HTTP “/open-url” que pega um parâmetro de URL de uma solicitação POST e o passa diretamente para a função “open()” no pacote NPM aberto. No Home windows, isso pode gerar uma chamada “smd /c..”, permitindo a execução arbitrária de comandos.

Somando-se ao problema está uma configuração incorreta na CLI, que imprime que o servidor está escutando em “localhost”, mas nos bastidores, os valores do host acabam indefinidos e o servidor escuta em 0.0.0.0 por padrão, abrindo-o para todas as redes externas.

Essa combinação de ligação padrão insegura e a chamada open() falha cria as condições para execução remota de código, algo raro e perigoso em uma ferramenta somente de desenvolvimento.

“Essa vulnerabilidade mostra que mesmo falhas simples de execução remota de código, como passar a entrada do usuário para o shell do sistema, ainda são encontradas em software program do mundo actual, especialmente nos casos em que a perigosa função de coletor realmente reside em código de terceiros, que period a função “aberta” importada neste caso”, disseram os pesquisadores.

O bug, rastreado como CVE-2025-11953recebe uma pontuação CVSS de 9,8 em 10 e afeta as versões 4.8.0 a 20.0.0-alpha.2.

O que os desenvolvedores devem fazer agora?

Os desenvolvedores que usam @react-native-community/cli (ou o pacote cli-server-api) em seus projetos React Native devem verificar a versão do pacote vulnerável na lista npm. A vulnerabilidade foi corrigida na versão 20.0.0 do cli-server-api, portanto a atualização imediata é recomendada.

Os riscos incluem um invasor executando remotamente comandos na máquina de desenvolvimento da vítima, potencialmente levando a um acesso mais amplo à rede, corrupção de código ou injetando cargas maliciosas na construção de um aplicativo. Se a atualização não for viável imediatamente, JFrog aconselhou restringir o servidor de desenvolvimento ao host native, passando explicitamente o sinalizador “–host 127.0.0.1” para reduzir a exposição.

“É um lembrete de que práticas de codificação seguras e varreduras de segurança automatizadas são essenciais para prevenir essas falhas facilmente exploráveis ​​antes que cheguem à produção”, afirmam os pesquisadores. disserecomendando o JFrog SAST para identificar problemas no início do processo de desenvolvimento.

A falha React Native CLI reflete uma tendência mais ampla de invasores entrando em ecossistemas de desenvolvedores, desde pacotes npm com cargas ocultas para roubar IDE “verificado” extensõestransformando ferramentas de construção confiáveis ​​em pontos de entrada furtivos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *