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 start ou npx react-native start) 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 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 real 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 blog.

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 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 do mundo real, especialmente nos casos em que a perigosa função de coletor realmente reside em código de terceiros, que era a função “aberta” importada neste caso”, disseram os pesquisadores.

O bug, rastreado como CVE-2025-11953, recebeu 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 local, 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 verificação de segurança automatizada são essenciais para prevenir essas falhas facilmente exploráveis ​​antes que cheguem à produção”, disseram os pesquisadores, recomendando 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 até extensões IDE “verificadas” desonestas, transformando ferramentas de construção confiáveis ​​em pontos de entrada furtivos.