Pacotes npm obsoletos que parecem ativos apresentam risco de código aberto

Início / Tecnologia da Informação / Pacotes npm obsoletos que parecem ativos apresentam risco de código aberto
Pacotes npm obsoletos que parecem ativos apresentam risco de código aberto

Pesquisadores de segurança alertam que muitos pacotes NPM estão sendo obsoletos e abandonados por seus mantenedores sem um aviso claro aos usuários. Esses pacotes podem acumular vulnerabilidades graves ao longo do tempo e, às vezes, seus mantenedores até os abandonam, principalmente porque não têm tempo ou interesse para corrigir os problemas de segurança relatados.

Dos 50.000 pacotes mais baixados no registro NPM, cerca de 8% estão “oficialmente” obsoletos ou têm uma dependência direta que está obsoleta. Isso significa que seus autores sinalizaram esses pacotes como obsoletos e postaram um aviso aos usuários. No entanto, pesquisadores da empresa de segurança da cadeia de fornecimento de software Aqua Security descobriram que, ao expandir a pesquisa com outros critérios que possam indicar depreciação “enganosa” ou não explícita, a taxa sobe para 21% dos pacotes.

O problema é provavelmente muito pior porque o Aqua verifica apenas as dependências diretas, e não as transitórias também – as dependências das dependências. A cadeia de dependência para pacotes NPM pode atingir vários níveis de profundidade e não levar em conta isso é um motivo comum pelo qual o código vulnerável pode entrar em projetos sem ser detectado.

“Essa situação se torna crítica quando os mantenedores, em vez de resolver as falhas de segurança com patches ou atribuições de CVE, optam por descontinuar os pacotes afetados”, disseram os pesquisadores do Aqua em seu relatório. “O que torna isso particularmente preocupante é que, às vezes, esses mantenedores não marcam oficialmente o pacote como obsoleto no NPM, deixando uma lacuna de segurança para usuários que podem permanecer inconscientes de possíveis ameaças.”

Para ajudar as organizações, a Aqua Security lançou uma ferramenta de código aberto chamada Verificador de depreciação de dependência que pode pegar o package.json de um projeto e percorrer sua árvore de dependências para encontrar pacotes que correspondam aos critérios de descontinuação escolhidos pelo usuário.

Suspensão oficial versus prática

Em termos práticos, o código de software pode ser considerado obsoleto quando seu autor toma a decisão de não atualizar mais o código ou de corrigir problemas encontrados nele, relacionados à segurança ou não. Isso pode acontecer porque eles não têm mais tempo para mantê-lo — a maior parte do desenvolvimento de código aberto é trabalho voluntário — e eles não encontraram outra pessoa para assumir o trabalho, porque outra pessoa criou uma alternativa melhor, eles originalmente a criaram para si mesmos e desde então mudaram para outras coisas, ou simplesmente porque ficaram irritados com a resposta da comunidade.

Quando se trata de código aberto, fazer essa escolha é perfeitamente aceitável porque o código não vem com um contrato de suporte anexado e está disponível para qualquer pessoa pegar, modificar e melhorar se quiser continuar a usá-lo. O autor também não precisa anunciar sua decisão e cabe aos usuários descobrir quando a qualidade do código não atende mais às suas expectativas.

Os mantenedores de pacotes do repositório NPM têm a opção de marcar os pacotes como obsoletos, o que aparecerá como um aviso aos usuários que visitam a página. Eles também podem incluir uma nota para os usuários com informações adicionais, como alternativas. Isso pode ser considerado uma depreciação oficial.

No entanto, outros sinais podem indicar que um projeto está morto, mesmo que não contenha um grande aviso. Por exemplo, o repositório GitHub associado ao pacote NPM é arquivado ou até mesmo completamente excluído. Baseado em Documentação do GitHub, “Você pode arquivar um repositório para torná-lo somente leitura para todos os usuários e indicar que ele não é mais mantido ativamente.”

Quando os pesquisadores do Aqua incluíram uma verificação de repositórios arquivados, a taxa de pacotes NPM entre os 50.000 principais que estavam obsoletos ou tinham uma dependência direta obsoleta saltou de 8% para 12%. Quando eles também adicionaram uma verificação de repositórios indisponíveis – excluídos ou tornados privados – a taxa saltou para 15%. Por fim, quando também incluíram a ausência de link de repositório na página do NPM como um possível sinal de descontinuação, a taxa cresceu para 21,2%.

“O número de downloads semanais dos pacotes obsoletos dos 50 mil principais pacotes, de acordo com nossas definições estendidas, chega a 2,1 bilhões”, disseram os pesquisadores. “Geralmente é aconselhável utilizar apenas pacotes totalmente mantidos, onde os mantenedores abordam ativamente questões de segurança e fornecem suporte contínuo ao pacote. O uso de pacotes não mantidos aumenta o risco de vulnerabilidades não corrigidas e até mesmo de agentes de ameaças assumirem o controle de pacotes para inserir códigos maliciosos.”

Dependências de código aberto apresentam riscos de segurança mais amplos

O Aqua verificou apenas as dependências diretas dos principais pacotes de 50 mil, sem aprofundar muitos níveis, o que provavelmente aumentaria ainda mais a taxa de depreciação. Mas também vale a pena ressaltar que muitos desses pacotes obsoletos dos 50 mil principais são tão populares porque também são uma dependência de outros pacotes em níveis superiores na cadeia.

Por exemplo, o pacote chamado “

Aqua recomenda que as organizações estabeleçam seus próprios critérios de descontinuação além da designação oficial do registro do NPM, usem a ferramenta Dependency Deprecation Checker para verificar seus pacotes e, em seguida, substituam as dependências obsoletas por alternativas mantidas ativamente.

Leia também:

Continue acompanhando nossas atualizações para ficar por dentro das últimas tendências em segurança cibernética e proteger sua organização.

Leitura relacionada:

Roberto Magalhães

O cérebro editor por trás do Tecnologico.online, é um entusiasta apaixonado por tecnologia. Canaliza sua fascinação para criar conteúdo envolvente e informativo. Sua dedicação à inovação reflete-se nos artigos que produz, abrangendo uma ampla gama de tópicos tecnológicos. Com um olhar atento para as últimas tendências e desenvolvimentos, busca tornar...

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.