Início / Notícias / Aplicativos e Software /

Protestware: desenvolvedor sabota projeto com “mensagem de paz” para Ucrânia

Módulo de código aberto node-ipc foi sabotado por seu próprio criador em protesto contra invasão da Ucrânia pela Rússia

Emerson Alecrim

Por

Notícia
Achados do TB Achados do TB

As melhores ofertas,
sem rabo preso 💰

E se, do nada, o seu computador exibisse uma “mensagem de paz”? Provavelmente, você desconfiaria de um vírus ou de um hacker. Mas esse não é o caso de desenvolvedores que usam um módulo chamado node-ipc: ele foi sabotado pelo seu próprio criador para exibir mensagens de apoio à Ucrânia.

Código Javascript (imagem ilustrativa: Ferenc Almasi/Unsplash)
Código Javascript (imagem ilustrativa: Ferenc Almasi/Unsplash)

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:

Esse código serve como um exemplo não destrutivo do porquê de ser importante controlar os seus módulos Node. Isso também serve como um protesto não violento contra a agressão da Rússia que ameaça o mundo exatamente agora.

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):

Esse comportamento é uma droga. Claro, a guerra é ruim, mas isso não justifica esse comportamento. (…) Você acabou de arruinar com sucesso a comunidade de código aberto. Está feliz agora, @RIAEvangelist?

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”.