Revolução Open Source? Desenvolvedor corrompe bibliotecas e afeta projetos no GitHub
Ação do autor por trás das populares bibliotecas sugere possível retaliação contra megacorporações e consumidores comerciais de projetos open sourceBy - Liliane Nakagawa, 10 janeiro 2022 às 20:00
Usuários de bibliotecas de código aberto ‘color’ e ‘faker’ tiveram uma desagradável surpresa ao verem suas aplicações produzindo dados confusos e quebrados infinitamente; alguns supuseram que as bibliotecas NPM tivessem sido comprometidas. Segundo informações do site BleepingComputer, o desenvolvedor por trás das bibliotecas no GitHub introduziu intencionalmente um commit maligno (uma revisão de arquivo no GitHub) ao colors.js, que adiciona “um novo módulo de bandeira americana”, bem como a versão 6.6.6 do faker.js, desencadeando um looping destrutivo dos eventos—, tornando inútil qualquer projeto dependente de ‘faker.js’ e ‘colors.js’.
De acordo com o contador do GitHub, cerca de 19 mil projetos dependem das bibliotecas ‘colors’, as quais recebem mais de 20 milhões de downloads por semana só em NPM. Já o faker, os downloads semanais em NPM ficam acima da casa de 2,8 milhões, tendo 2.500 dependentes. A título de contexto, o ‘faker.js’ gera dados falsos para demonstrações, o ‘color.js’ adiciona cores aos consoles JavaScript.
Até ontem (9), apesar do ‘color.js’ já parecer ter sido atualizado para uma versão funcional, o ‘faker.js’ parece não ter sido reestabelecido ainda (um downgrade para a versão 5.5.3 pode resolver a questão).
Revolução Open Source?
Marak Squires, o desenvolvedor por trás das duas bibliotecas de código aberto NPM ‘cores’ (colors.js em GitHub) e ‘faker’ (‘faker.js’ em GitHub), introduziu o loop infinito de forma que as versões sabotadas mandavam as aplicações produzirem mensagens confusas, que incluíam o texto ‘LIBERTY LIBERTY LIBERTY’ seguido por uma sequência de caracteres não-ASCII indefinidamente.
Além disso, o arquivo readme do faker.js foi alterado para “O que realmente aconteceu com Aaron Swartz?”. Swartz foi desenvolvedor proeminente que ajudou a estabelecer o Creative Commons (CC), Reddit, feedRSS, além de ter tido trabalhos que incidiram diretamente sobre questões de cidadania e ativismo, como campanhas para impedir o aprovação do SOPA (Stop Online Piracy Act). Em 2011, o também empresário e conhecido hacktivista americano foi preso pela polícia do Instituto de Tecnologia do Massachusetts (MIT), acusado de roubar artigos acadêmicos do repositório JSTOR com o objetivo de torná-los de livre acesso. Em 2013, após uma batalha legal, foi encontrado enforcado em seu apartamento, em um aparente suicídio.
No sábado (8), alguns desenvolvedores que trabalham com o Kit de Desenvolvimento de Nuvens da Amazon (aws-cdk) expressaram preocupações em relação ao assunto, voltando-se para o sistema de rastreamento de bugs do GitHub. “Chegou ao nosso conhecimento que existe um bug zalgo no lançamento do v1.4.44-liberty-2 de cores”, descreveram.
Em resposta ao problema, Squires postou uma atualização para o bug zalgo, que se refere a certos caracteres não-ASCII que parecem estar com falhas. “Por favor, saiba que estamos trabalhando agora mesmo para corrigir a situação e teremos uma resolução em breve”, escreveu o desenvolvedor em tom sarcástico.
Dois dias após lançar a atualização das bibliotecas ‘color’ e ‘faker’, Squires tweetou observando que o GitHub havia suspendido a sua conta, apesar de armazenar inúmeros projetos no site. De acordo com o The Verge, a julgar pelo changelog, tanto no faker.js quanto no color.js, as suspensões parecem ter sido retiradas. Primeiro, Squires agiu sobre a biblioteca faker.js, em 4 de janeiro, foi banido dois dias depois. No dia 7, introduziu a versão “liberty” no color.js. Não está claro que a conta GitHub de Squires foi novamente banida.
NPM has reverted to a previous version of the faker.js package and Github has suspended my access to all public and private projects. I have 100s of projects. #AaronSwartz pic.twitter.com/zFddwn631S
— marak.com (@marak) January 6, 2022
A razão por trás da ação do desenvolvedor sugere uma possível retaliação contra megacorporações e consumidores comerciais de projetos open source dependentes de software livre e de software de código aberto, mas que segundo Squires, não retribuem à comunidade.
Insatisfeito, em novembro de 2020, Squires advertiu que não apoiaria mais as grandes corporações com seu trabalho gratuito, e que as entidades comerciais deveriam considerar a possibilidade de forçar projetos ou compensar desenvolvedores com salário anual de “seis dígitos”. “Respeitosamente, não vou mais apoiar a Fortune 500s (e outras empresas menores) com meu trabalho gratuito. Não há muito mais a dizer”, escreveu o desenvolvedor. “Encare isto como uma oportunidade de me enviar um contrato de seis dígitos por ano ou de bifurcar o projeto e pedir a outra pessoa que trabalhe nele”, declarou.
A atitude de Squires chama atenção para um dilema moral e financeiro do desenvolvimento de código aberto. Enquanto um grande número de sites, softwares e aplicativos usam e, portanto, dependem extensivamente de desenvolvedores de código open source para criarem componentes essenciais e ferramentas — tudo de graça —, uma porção desses profissionais não remunerados trabalham sem compensação durante as férias e “sem dormir” para corrigir os problemas de segurança em seu software de código aberto.
“As respostas aos autores do colors.js/faker.js sabotando seus próprios pacotes estão realmente dizendo sobre quantos desenvolvedores corporativos acham que têm direito moral ao trabalho não remunerado dos desenvolvedores de código aberto sem contribuir com nada de volta”, escreveu um usuário do Twitter, comentando o lucro das empresas sobre o “trabalho livre” de devs.
O problema revigorado pelas ações de Squires continua a dar dores de cabeça em looping: em 2014, o Heartbleed afetou o OpenSSL; e desde novembro, a vulnerabilidade mais recente do Log4Shell, encontrada na biblioteca open source log4j, conta com voluntários para corrigir a falha zero-day.
Repercussão
Elogios à atitude de Squires surgiram entre os membros da comunidade de código aberto, enquanto outros ficaram chocados com as ações do desenvolvedor. “Aparentemente, o autor do ‘colors.js’ está irritado por não ter sido pago. Então, ele decidiu imprimir a bandeira americana cada vez que sua biblioteca é carregada. WTF”, tweetou um usuário.
Outros o chamaram de “mais um desenvolvedor do OSS que se tornou um vilão”, enquanto um especialista da InfoSec VessOnSec classificou a ação como uma “irresponsabilidade”. “Se você tiver problemas com os negócios usando seu código gratuito, não publique código gratuito”. Ao sabotar seu próprio material amplamente utilizado, você prejudica não apenas as grandes empresas, mas qualquer um que o utilize. Isto treina as pessoas a não atualizar, “porque as coisas podem quebrar”, declarou.
Alguns apontaram violação aos termos de uso da plataforma da Microsoft e sugeriram a descentralização para hospedagem de códigos. “Retirar seu próprio código do [GitHub] é uma violação dos Termos de Serviço deles? WTF? Isto é um sequestro. Precisamos começar a descentralizar a hospedagem do código fonte do software livre”, respondeu o engenheiro de software Sergio Gómez.
Com informações de BleepingComputer e The Verge
Comentários