
Uma implementação em JavaScript dos Protocol Buffers da Google, conhecida como protobuf.js, apresenta uma vulnerabilidade crítica de execução remota de código (RCE). O código de exploração de prova de conceito para esta falha já se encontra publicado. A denúncia foi apresentada num relatório da empresa de segurança Endor Labs. Esta ferramenta atinge quase 50 milhões de downloads semanais no registo npm e serve para a comunicação entre serviços, aplicações em tempo real e armazenamento de dados estruturados em bases de dados e ambientes na cloud.
A origem do problema
O problema de segurança não possui um número CVE oficial, mas é atualmente monitorizado no GitHub através do identificador GHSA-xq3m-2v4x-88gg. A falha tem origem na geração dinâmica de código de forma insegura. A biblioteca constrói funções a partir de esquemas protobuf através da concatenação de strings e da sua execução pelo construtor Function(), mas falha ao não validar os identificadores derivados do esquema, como é o caso dos nomes das mensagens.
Esta ausência de validação permite que um atacante forneça um esquema malicioso capaz de injetar código arbitrário na função gerada, que é posteriormente executado quando a aplicação processa uma mensagem com esse mesmo esquema. O ataque abre caminho para a execução remota em servidores ou aplicações que carreguem esquemas manipulados, garantindo acesso a variáveis de ambiente, credenciais, bases de dados e sistemas internos. A vulnerabilidade permite também o movimento lateral dentro da infraestrutura e pode afetar as máquinas dos programadores que carreguem e descodifiquem localmente esquemas não fiáveis.
Correção e medidas preventivas
A vulnerabilidade afeta as versões 8.0.0 e 7.5.4 do protobuf.js, assim como as edições inferiores. A falha foi comunicada pelo investigador Cristian Staicu a 2 de março, tendo os programadores lançado uma correção a 11 de março. As correções para os pacotes npm ficaram disponíveis a 4 de abril para a ramificação 8.x e a 15 de abril para a ramificação 7.x. Para resolver o problema, é recomendada a atualização para as versões 8.0.1 e 7.5.5.
O patch implementado limpa os nomes dos tipos ao remover caracteres não alfanuméricos, o que impede o atacante de fechar a função sintética. A empresa de segurança adverte que a exploração da falha é simples, facto refletido pela prova de conceito mínima incluída no alerta. No entanto, não se observou qualquer exploração ativa até ao momento. Os administradores de sistemas são aconselhados a auditar dependências transitivas, tratar o carregamento de esquemas como uma entrada não fiável e dar preferência a esquemas estáticos em ambientes de produção.












Nenhum comentário
Seja o primeiro!