Skip to main content

Protestware é uma tendência no código aberto: 4 tipos e seu impacto

Escrito por:
wordpress-sync/blog-feature-social-trends

22 de março de 2022

0 minutos de leitura

Alguns dias atrás, a Snyk relatou um novo tipo de vetor de ataque na comunidade de código aberto: protestware. O aviso era sobre uma vulnerabilidade transitiva (peacenotwar) no node-ipc que afetou a cadeia de suprimentos de muitos desenvolvedores. A Snyk usa vários feeds e algoritmos de inteligência sobre ameaças para monitorar conversas sobre possíveis ameaças ao código aberto, e acreditamos que esse possa ser apenas o início do protestware.

Desde a publicação do aviso sobre o node-ipc, percebemos um grande aumento nos nossos alertas de ameaças sobre esse o conflito e, consequentemente, uma alta no número de diferentes tipos de possível protestware relativos à invasão da Ucrânia.

A onda atual de protestware tem várias formas. Algumas parecem ser formas aceitáveis de liberdade de expressão, enquanto outros como node-ipc têm uma natureza mais destrutiva e danosa. A Snyk quer contribuir para a comunidade a alcançar um consenso sobre como abordar as várias formas de protestware que estão surgindo e ajudar a diferenciá-las.

O que é protestware?

Protestware é um termo abrangente usado para descrever pacotes que são alterados de alguma forma para protestar contra um evento. Ao contrário dos pacotes maliciosos, essas alterações não são feitas por “hackers” ou invasores, mas muitas vezes por membros conhecidos e respeitados da comunidade de código aberto que são administradores ou contribuidores ativos de projetos de código aberto em grande escala.

Antes de prosseguirmos: a Snyk apoia a Ucrânia. Deixamos nossa posição clara quanto tomamos a decisão de fazer doações para a Ucrânia, destacar o OSS incrível produzido no país e cortar relações comerciais com entidades da Rússia e da Bielorrússia. Dito isso, ainda é nossa obrigação relatar ameaças que descobrimos na comunidade de código aberto e fazer a nossa parte para mantê-lo seguro.

Neste post, vamos explicar os quatro principais tipos de atividades de protestware que já encontramos e nossa política referente a cada tipo. Esperamos usar estas informações para promover outras conversas na comunidade sobre esse assunto.

Tipos de protestware

1\. Banners de repositório

Nesses tipos de pacotes, os administradores adicionam mensagens políticas a “banners” no próprio repositório. Eles parecem arquivos README alterados para declarar apoio à Ucrânia, mudanças na descrição do pacote para apoiar a causa ou gerar problemas de abertura com uma mensagem. No ponto de vista da Snyk, esse nível de protesto é claramente um exemplo de liberdade de expressão não destrutiva, e cada administrador e contribuidor tem o direito de expressar sua opinião sobre qualquer assunto.

Em casos como esse, temos a clara noção de que não precisamos tomar qualquer medida.

2\. Logs de protesto na CLI

A segunda forma de protesto é mais incisiva, inserindo as mensagens de protesto diretamente nas máquinas dos usuários em logs de CLI durante e após a instalação do pacote. O es5-ext é um bom exemplo disso em um pacote de código aberto bastante popular, e o vetor usado é um bom indicativo desses tipos de protestware:

  1. Uma máquina local realiza uma verificação de fuso horário para determinar a localização da máquina.

  2. Com base na localização, o log da CLI é deixado usando um script pós-instalação com uma mensagem de apoio à Ucrânia e informações sobre a guerra, além de instruções de como baixar o Tor para evitar a censura do governo russo a sites com notícias sobre a guerra.

Ao examinar essas duas partes do vetor, nossa consideração final é que, embora seja incomum, esse comportamento tem precedente no ecossistema de softwares. Em relação à verificação de fuso horário, as verificações locais de um sistema às vezes fazem parte do comportamento normal de instalação, por exemplo, para determinar a melhor maneira de instalar um pacote. Sobre as mensagens de registro na CLI durante a instalação, é comum haver mensagens durante a instalação de um pacote, sendo que nem todas se relacionam à instalação propriamente dita (por exemplo, créditos, emojis e informações secundárias).

Desde que a mensagem permaneça dentro do ambiente da instalação (da CLI), acreditamos que não há necessidade de sinalizar especificamente esses pacotes.

3\. Logs de protesto fora do ambiente

A última distinção nos leva ao terceiro grupo de protestware: os pacotes que fazem protestos executando código fora do ambiente da instalação. Exemplos disso são os pacotes event-source-pollyfill e peacenotwar. Ainda que ambos compartilhem o “vetor de fuso horário via localização geográfica” descrito acima, eles dão um passo além dos protestos escritos em logs e executam código ativamente na máquina para protestar.

Acreditamos que esse tipo de protestware, mesmo não sendo destrutivo, gera comportamento que não esperamos ou desejamos em um pacote de código aberto. Eles podem optar por disseminar informações criando janelas pop-up de alerta ou abrir e redirecionar navegadores a sites com informações, e até mesmo criar arquivos no desktop do sistema com informações.

Para pacotes como esses, adicionaremos um alerta com o título “Comportamento indesejado” Nossos vetores CVSS serão criados para demonstrar exatamente o que é esse comportamento indesejado e a maneira como ele impacta a integridade da máquina onde é executado.

4\. Protestos destrutivos

Por fim, temos o tipo de pacote que claramente apresenta um comportamento destrutivo e ameaça diretamente a máquina onde é executado. Atualmente, o node-ipc é o maior e mais conhecido desses pacotes e, como revelamos anteriormente, tenta apagar os discos rígidos do sistema.

Os pacotes que apresentam comportamento realmente danoso, como excluir arquivos, vazar informações privadas ou de outro tipo, serão adicionados com o título “Pacote malicioso” e gravidade alta ou severa (dependendo do impacto específico do pacote).

Tipo de protestware

Exemplo

Aviso de recomendação atual da Snyk

Banner de repositório

Readme com informações de protesto

Sem aviso

Logs de protesto na CLI

Log de instalação com informações de protesto

Sem aviso

Logs de protesto fora do ambiente

Arquivo gravado no desktop com informações de protesto

Aviso “Comportamento indesejado” de gravidade baixa a média

Protestos destrutivos

Substituição de arquivos no disco com informações de protesto

Aviso “Pacote malicioso“ de gravidade alta a crítica

Fique alerta para protestware

Em resumo, a situação atual é volátil e esperamos que novos vetores de ataque continuem a nos desafiar com protestware daqui em diante. Temos duas funções:

  1. Continuar alertando a comunidade da forma mais rápida e diligente possível sobre os novos padrões de ataque que surgirem.

  2. Ajudar a conduzir as conversas sobre como nossa comunidade deve responder a todas as formas de protestware e, quem sabe, produzir um consenso maior nesse assunto.

Se você encontrar outros tipos de protestware em pacotes de código aberto, fique à vontade para falar conosco usando nosso programa de divulgação de vulnerabilidades em código aberto. Agradecemos por você manter a segurança do código aberto para todo mundo.