A npm retirou todas as versões da biblioteca real Stylus e as substituiu por uma página de "retenção de segurança", interrompendo pipelines e builds em todo o mundo que dependem do pacote.
Uma página da web de placeholder de segurança é normalmente exibida quando pacotes e bibliotecas maliciosos são removidos pelos administradores do npmjs.com, o maior registro de software do mundo, usado principalmente para o desenvolvimento de JavaScript e Node.js.
Mas esse não é bem o caso do Stylus: uma biblioteca legítima considerada "revolucionária", recebendo 3 milhões de downloads semanais e que oferece uma maneira expressiva para os desenvolvedores gerarem CSS.
Há algumas horas, npmjs removeu todas as versões do pacote Stylus e publicou uma página de "pacote de retenção de segurança" em seu lugar.
"O Stylus foi banido acidentalmente pelo npmjs", declara o desenvolvedor do Stylus, Lei Chen, em uma issue do GitHub.
O mantenedor do projeto "está atualmente esperando o npmjs restaurar o acesso ao Stylus."
"Eu sou o atual mantenedor do Stylus. A biblioteca Stylus foi marcada como maliciosa..., o que fez com que muitas [bibliotecas] e frameworks que dependem do Stylus falhassem na instalação", também postou Chen no X (anteriormente Twitter).
"Por favor, me ajude a retuitar essa mensagem na esperança de que a equipe oficial do npmjs perceba esse problema."
A página original do npmjs do Stylus (mostrada abaixo) indica que a biblioteca legítima é uma "nova linguagem revolucionária" para o desenvolvimento de CSS e alcança quase 3 milhões de downloads semanais.
Com certeza, desenvolvedores de diferentes projetos que dependem do Stylus se manifestaram:
"Meus builds estão falhando, então minhas atualizações de software não são publicadas por causa desse erro administrativo," postou um desenvolvedor.
Pacotes como typescript-plugin-css-modules (baixados até 500.000 vezes semanalmente) também dependem do Stylus, observou o desenvolvedor full-stack Chanuka Asanka:
"Pipelines estão falhando. Alguém sabe se npm/yarn fornece algum aviso prévio quando vão fazer tal coisa?"
Normalmente, pacotes são retirados do npm por violarem um ou mais de seus termos de serviço de código aberto, e bastante comumente por conter código malicioso.
Mas esse não é o caso para o Stylus - todas as suas versões parecem estar limpas e funcionais.
Tom Abai, um pesquisador de segurança na empresa de segurança da cadeia de suprimentos Mend.io, desvendou o mistério.
Enquanto investigava o desenvolvimento, Abai confirmou que pelo menos a versão mais recente (0.64.0) do Stylus estava "limpa", mas algo estranho se destacou em conexão com o pacote:
"...uma coisa estranha surgiu em nossa investigação, e é que o dono panyakor..., que parece ter sido um dos proprietários do pacote npm do stylus, publicou 3 pacotes maliciosos na semana passada..." escreveu Abai.
npmjs.com, como muitas plataformas de desenvolvimento de código aberto, permite que vários mantenedores sejam listados e contribuam para um pacote.
Embora Chen possa ser o desenvolvedor principal do Stylus, há outras contas npm listadas como mantenedores.
"Panya, que é um dos mantenedores do pacote stylus, os publicou, e por isso, sua conta foi banida, e todos os pacotes que estavam conectados a ele foram retirados, incluindo o Stylus.
Então, essa é a história aqui. Um grande alarme falso por parte do NPM," afirma Abai.
O site BleepingComputer confirmou ainda que a conta npm 'panya' estava de fato listada entre os mantenedores no npmjs.com tanto para o Stylus quanto para os 3 pacotes mencionados na postagem de Abai que, de outra forma, não estão relacionados ao Stylus.
Os pacotes sinalizados por Abai: @pwa-ib/eslint-plugin-compat, @blocks-shared/desktop-title, @tui-react-internal/select-account-icon, publicados por 'panya', agora exigem autenticação para acessar no registro do npmjs.com e, portanto, estão restritos à visualização pública.
Contudo, o site BleepingComputer foi capaz de obter e analisar esses pacotes, e podemos confirmar as descobertas de Abai.
Por exemplo, o arquivo "extract.js" em @blocks-shared/desktop-title contém um exploit de confusão de dependência de prova de conceito que a indústria já viu várias vezes até agora:
No momento da escrita, a conta npm 'panya' não tem pacotes listados sob ela, indicando que o registro provavelmente expurgou todos os seus exploits de PoC e removeu o Stylus no processo, por acidente.
Felizmente, o desenvolvedor do Stylus e membros da comunidade de código aberto compartilharam dicas detalhadas nesse meio tempo para desenvolvedores npm e yarn que dependem do Stylus manterem acesso à biblioteca e restaurarem seus builds.
Desenvolvedores npm podem optar por referenciar o pacote stylus "dinamicamente especificando um branch, tag ou hash de commit na seção dependencies do package.json", afirma Chen, como:
Usar overrides é outra opção para desenvolvedores npm:
"Você pode substituir a versão do pacote stylus usada por outras dependências especificando-a na seção overrides (suportado no npm v8.3.0 e posteriores)"
"Nota: Certifique-se de que a tag, branch, ou commit especificado (e.g., 0.54.4) existe no repositório stylus/stylus. Limpe o cache do npm (npm cache clean --force) se encontrar problemas com dependências desatualizadas."
Para resumir, Chen reitera:
"O Stylus não contém código malicioso; isso foi confirmado.
npmmirror.com (um espelho sem fins lucrativos patrocinado pela Alibaba) retomou o acesso [à biblioteca]," escreveu Lei Chen.
Não está claro se é uma coincidência, mas uma ferramenta chamada componente Stylus Tools foi relatada por ter um CVE.
Panya (o ex-mantenedor do Stylus) usou sua própria conta para lançar um pacote contendo código malicioso (para fins de pesquisa de segurança? Não tenho certeza), mas não lançou uma nova versão do Stylus contendo código malicioso.
Estamos aguardando ação oficial do npmjs.
Sim, estamos esperando eles resolverem isso.
Uma solução alternativa foi fornecida nos comentários.
Por favor, aplique-a conforme necessário.
No passado, desenvolvedores de código aberto fizeram manchetes por quebrar builds ao retirarem suas bibliotecas dos registros por discordâncias ou corromper seu código em protesto.
Este incidente marca a primeira instância notável de um registro retirando um projeto legítimo inteiro em o que parece ser um erro administrativo.
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...