Estratégias da cadeia de suprimentos de software para evitar ataques de confusão de dependência

Estratégias da cadeia de suprimentos de software para evitar ataques de confusão de dependência

Estratégias da cadeia de suprimentos de software para evitar ataques de confusão de dependência PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

"O que há em um nome? Aquilo que chamamos de rosa, por qualquer outro nome, teria o mesmo cheiro doce.” Quando Shakespeare escreveu estas palavras (Romeu e Julieta, Ato 2, Cena 2) em 1596, ele estava dizendo que um nome é apenas uma convenção. Não tem significado intrínseco. Julieta ama Romeu pelo que ele é, não pelo nome.

Mas sem saber, Shakespeare também descrevia ataques de confusão de dependência.

A confusão de dependência ocorre quando os pacotes que você está usando em seu código não são seus. Eles têm o mesmo nome, mas não é o seu código que está rodando em produção. Mesmo nome, mas um pacote cheira a rosa e o outro… fede.

Relatórios de pesquisas recentes estimam que 41% a 49% das organizações correm o risco de sofrer ataques de confusão de dependência. Uma nova pesquisa da OX Security mostra que quando uma organização corre o risco de sofrer um ataque de confusão de dependência, 73% dos seus ativos ficam vulneráveis. A pesquisa se concentrou em organizações de médio e grande porte (1K+, 8K+, 80K+ funcionários) em uma ampla variedade de setores — finanças, jogos, tecnologia e mídia — e descobriu o risco em todos os setores, em organizações de todos os tamanhos. A pesquisa também descobriu que quase todos os aplicativos com mais de 1 bilhão de usuários usam dependências vulneráveis ​​à confusão de dependências.

Este artigo tem como objetivo ajudá-lo a entender a confusão de dependências e como evitá-la.

Duplo duplo

Dependências (também chamadas de pacotes) são os blocos de construção do seu software. Normalmente, esses softwares, sejam eles desenvolvidos por comunidades inteiras ou dentro de uma empresa, executam uma tarefa comum e necessária.

Os gerenciadores de pacotes são frequentemente usados ​​para instalar dependências e mantê-las atualizadas. Eles examinam os registros públicos e privados em busca do nome do pacote e, em igualdade de condições, selecionam o número de versão mais alto. Os invasores tiram vantagem disso colocando um pacote “fictício” no registro público com o mesmo nome, mas com uma versão superior.

Quando um gerenciador de pacotes encontra dois pacotes idênticos, um em um registro público e outro em um registro privado, isso causa confusão — daí o nome “confusão de dependência”. Como os dois pacotes são idênticos, o gerenciador escolherá automaticamente instalar aquele com versão superior - neste caso, o pacote malicioso do invasor.

Isso dá aos sequestradores uma porta dos fundos para o seu software. A partir deste ponto, eles podem executar violações de dados, realizar roubo de propriedade intelectual e, de outra forma, comprometer a cadeia de confiança de fornecimento de software. Eles também podem introduzir violações de conformidade que desencadearão penalidades regulatórias severas.

Trabalho e dificuldade

Existem várias abordagens para um ataque de confusão de dependência.

  • Namespace. Ao fazer upload de uma biblioteca de software malicioso para um registro público - como o Python Package Index (PyPI) ou JavaScript registro npm - aquilo é nomeado de forma semelhante para uma biblioteca confiável usada internamente, os sistemas que omitem uma verificação de namespace/URL ou não forçam a busca de um registro privado podem extrair por engano o código malicioso. O recente incidente de confusão de dependência do PyTorch é um exemplo.
  • Falsificação de DNS. Ao usar uma técnica como falsificação de DNS, os sistemas podem ser direcionados para extrair dependências de repositórios maliciosos enquanto exibem o que parecem ser URLs/caminhos internos legítimos.
  • Scripts. Modificando scripts de construção/instalação ou integração contínua/entrega contínua (CI/CD), os sistemas podem ser induzidos a baixar dependências de software de uma fonte maliciosa em vez de um repositório local.

Coisas bem feitas e com cuidado

Para se proteger contra a confusão de dependência, institua essas práticas.

  • Defina políticas no gerenciador de pacotes. Impedir que os gerenciadores de pacotes priorizem um pacote público em vez de um pacote privado.
  • Sempre inclua um arquivo .npmrc. Se você estiver usando o popular NPM como gerenciador de pacotes, sempre inclua um arquivo .npmrc que especifique onde buscar pacotes no escopo específico da organização.
  • Reserve o nome do pacote em um registro público. Outra forma de proteção contra ataques de confusão de dependência é reservar o nome do pacote em um registro público para que os sequestradores não possam usá-lo e, portanto, não possam “enganar” o gerenciador de pacotes para que instale um pacote malicioso.

Para se proteger totalmente contra ataques de confusão de dependência, as organizações devem sempre usar escopos da organização para todos os pacotes internos, mesmo ao publicar em seu registro interno. Os escopos da organização também devem ser registrados no registro público do NPM, evitando assim que alguém se aproprie do escopo e aproveite a confusão.

Os nomes dos pacotes também devem ser registrados publicamente. Se uma organização estiver usando o popular PIP como gerenciador de pacotes para dependências do Python, por exemplo, ela deverá criar pacotes internos com um sufixo estrito que seja reconhecível e funcione em todos os projetos. Carregue um pacote vazio com o mesmo nome no registro público PyPI como espaço reservado.

Outra razão para reservar o nome do pacote em um registro público é porque se alguém o reservar (malicioso ou não), os desenvolvedores terão que alterar todos os nomes de pacotes no registro privado para um que ainda não tenha sido reservado no registro público. Este pode ser um processo longo e tedioso.

É importante observar que nem todos os registros de pacotes permitem que os usuários reservem nomes de pacotes, portanto, certifique-se de encontrar um que o faça.

Saída, perseguido por um urso

Os ataques de confusão de dependência representam uma ameaça séria e iminente à segurança cibernética para organizações em todo o mundo. Cerca de metade de todas as organizações estão em risco e 73% dos ativos dessas organizações estão expostos. Para combater esta ameaça crescente, as organizações devem implementar medidas preventivas robustas e adotar as melhores práticas de segurança cibernética.

As rosas de Shakespeare podem ter pressagiado o risco de ataques de confusão de dependência há centenas de anos, mas outra citação do Bardo pode conter alguma sabedoria para se proteger contra eles: “Que cada olho negocie por si mesmo e não confie em nenhum agente.” (Muito Barulho por Nada, Ato 2, Cena 1)

Carimbo de hora:

Mais de Leitura escura