
Demonstração educacional de desserialização insegura em Node.js (CVE-2017-5941) com injeção de payload baseada em cookies e exploração de reverse shell para treinamento de segurança.
Node.js é um ambiente de execução de código aberto usado para implementar funcionalidades de servidor em JavaScript.
Um pacote de software específico dentro do Node.js contém uma função vulnerável que lida com desserialização, fazendo com que execute comandos não autorizados se o cliente fornecer um cookie especialmente criado.
Esta vulnerabilidade foi replicada e pode potencialmente lançar um shell reverso, o que é possível devido aos dados de entrada não sanitizados que são lidos de um cookie na requisição do cliente. O cliente pode editar seus cookies, injetar um payload inseguro contendo um comando bash e enviá-lo ao servidor, que executará cegamente o comando. Isso pode levar a usuários não autorizados a acessarem bancos de dados ou máquinas inteiras.
As implicações éticas deste tipo de vulnerabilidade residem nos dados que podem ser acessados nos bancos de dados do servidor backend. Dependendo dos dados, pode ser prejudicial à segurança de um usuário e impactar a confiabilidade e reputação de uma empresa. Por isso, é importante encontrar as vulnerabilidades antes de outros atacantes. Existem várias ferramentas disponíveis, como Snyk, Burp Suite e outras opções pagas, para identificar essas vulnerabilidades.
A melhor forma de mitigar esta vulnerabilidade é praticar a devida sanitização de entrada e descontinuar qualquer uso da função vulnerável unserialise dentro do node.js. A substituta para esta função vulnerável, JSON.parse, é recomendada.