O que é Node.js? [guia para iniciantes]WhatsApp lança extensão que alerta usuário se versão web for hackeada
Não é a primeira vez que um programador utiliza um projeto próprio para se manifestar contra algo. No início do ano, por exemplo, o mantenedor das bibliotecas faker.js e colors.js sabotou ambos os projetos para fazê-los exibir mensagens de protesto. O fenômeno ganhou até nome: protestware.
Transformando o node-ipc em “protestware“
Com média de 1 milhão do downloads por semana, o node-ipc é um módulo de código-fonte aberto popular no NPM, o gerenciador de pacotes do Node.js. O pacote permite a comunicação entre processos e é muito usado em projetos baseados em JavaScript, como o Vue.js e o próprio Node.js. Eis que algumas versões recentes do node-ipc passaram a apagar dados ou a sobrescrever arquivos nos computadores de desenvolvedores que o usam. No lugar, surgem arquivos de texto contendo as tais “mensagens de paz”. Trata-se de um comportamento típico de malwares, tanto que o problema foi formalmente registrado com a identificação CVE-2022-23812. Mas, para entendermos o que aconteceu, precisamos voltar para uma data recente: 8 de março de 2022. Uma investigação da empresa de segurança Snyk aponta que foi nesse dia que o desenvolvedor Brandon Nozaki Miller, também conhecido pelo codinome RIAEvangelist, publicou um pacote NPM chamado peacenotwar (“paz, não guerra”, em tradução livre). Ele descreve o módulo da seguinte forma: O que esse módulo faz, na prática, é exibir uma “mensagem de paz” no desktop do usuário. Se você acha que isso é coincidência demais, achou certo: RIAEvangelist também é o desenvolvedor que está por trás do node-ipc. Até 15 de março, o peacenotwar pouco havia sido baixado. Mas, nessa data, o pacote experimentou um pico de downloads. Talvez você já tenha adivinhado o motivo: sim, RIAEvangelist colocou o peacenotwar como uma dependência do node-ipc. Isso significa que todos os projetos que usam o node-ipc podem fazer a tela do usuário exibir a tal mensagem, afinal, o pacote irá “chamar” o peacenotwar. Mas note que esse módulo apenas imprime um texto, não apaga dados. De acordo com o BleepingComputer, as instruções destrutivas foram inseridas em versões “selecionadas” do node-ipc. Uma análise revelou que, originalmente, o código malicioso foi escrito para identificar o IP do usuário e apagar dados apenas se o endereço tiver origem na Rússia ou na Bielorrússia.
Solução: use uma versão antiga
Pelo o que se sabe até o momento, as versões 10.1.1 e 10.1.2 do node-ipc são as que trazem a carga destrutiva, mas elas foram removidas do NPM cerca de 24 horas após a sua liberação. As versões 10.1.3, 11.0.0 e superiores não contêm instruções para apagar arquivos, mas preservam o peacenotwar como uma dependência. A solução apontada pelos pesquisadores da Snyk para que desenvolvedores possam se desvencilhar desse protestware é priorizar o uso de versões “limpas” do node-ipc, como a 9.2.1 e a 10.1.0. O episódio também mostra a importância de desenvolvedores especificarem as versões de bibliotecas ou módulos essenciais em seus projetos (se a versão não é especificada, via de regra, a mais recente é baixada). Mas esse é o tipo de “lição” que a maioria dos programadores gostaria de receber em circunstâncias menos conflitantes. Embora abominem a invasão da Ucrânia pela Rússia, muitos deles entendem que protestwares não são a melhor forma de manifestar contrariedade ao conflito. No GitHub, um desenvolvedor chegou a esbravejar contra RIAEvangelist (a mensagem foi apagada, mas o BleepingComputer a reproduziu): Aparentemente, foi nessa discussão que o termo “protestware” apareceu. RIAEvangelist chegou a comentar que a expressão é “genial”. Ali, ele também tem se defendido: “apenas me sinto moralmente obrigado a fazer algo e calha de ser uma coisa que eu posso realmente fazer por estar dentro da minha área”.