In this article
Ataques à cadeia de suprimentos de software
Exemplos de ataques e como evitá-los
O que é um ataque à cadeia de suprimentos de software?
As cadeias de suprimentos de software atuais são construídas, em grande parte, com recursos de terceiros que ajudam a acelerar e simplificar o processo de entrega de software. Em geral, as organizações precisam integrar esses recursos aos seus sistemas, concedendo a fontes externas acesso à infraestrutura interna para que funcionem corretamente.
Se um invasor encontrar um ponto fraco em uma dessas fontes externas, isso poderá afetar negativamente todo o sistema. É por isso que a segurança da cadeia de suprimentos é importante.
Tipos de ataques à cadeia de suprimentos de software
Há vários tipos de ameaças à cadeia de suprimentos. Alguns dos mais comuns são:
Provedores de software terceirizados
Criadores de sites
Armazenamentos de dados de terceiros
Ataques watering hole
Todos esses ataques exigem pouco esforço e oferecem um grande retorno para agentes mal-intencionados. Basta que alguém comprometa um desses sites ou fornecedores terceirizados para, por padrão, obter acesso a milhares de usuários. Esse é o verdadeiro perigo da cadeia de suprimentos: se o início da cadeia (por exemplo, um provedor ou site terceirizado) for comprometido, tudo que vem depois também fica imediatamente em risco. Muitas vezes, os atacantes exploram esses usuários a jusante distribuindo malware capaz de controlar os dispositivos remotamente e roubar informações ou extraindo dados confidenciais diretamente dos arquivos deles.
Provedores de software terceirizados
Hoje, as organizações costumam recorrer a provedores de software terceirizados para diversas necessidades, tanto de forma direta quanto por meio de dependências transitivas. Para acessar centenas ou milhares de clientes que usam o produto, basta que um atacante comprometa esse software de terceiros.
Criadores de sites
Modelos ou plugins de um criador de sites podem ser comprometidos, deixando a estrutura interna desses sites vulnerável a ataques.
Armazenamentos de dados de terceiros
Muitas empresas recorrem a terceiros para processar e armazenar seus dados, que podem incluir desde informações confidenciais de clientes até detalhes sobre a postura de segurança, os funcionários e as estratégias da organização.
Ataques watering hole
Um ataque watering hole tem como alvo um site que os usuários visitam com frequência para realizar tarefas que envolvem dados confidenciais. Em geral, esse tipo de ataque mira sites públicos de um setor específico, de uma organização ou de um grupo de pessoas. Os atacantes usam esses sites para distribuir malware aos visitantes, normalmente redirecionando-os do site legítimo para uma página falsa.
Exemplos de ataques à cadeia de suprimentos de software
A Help Net Security constatou que os ataques à cadeia de suprimentos de software aumentaram mais de 300% em 2021. Como podem afetar várias empresas e clientes ao mesmo tempo, esses ataques costumam virar notícia e ganhar certa notoriedade.
Veja alguns exemplos conhecidos de ataques à cadeia de suprimentos que causaram danos significativos a fornecedores terceirizados e seus usuários:
SolarWinds
Nesse ataque, no início de 2020, agentes mal-intencionados inseriram código malicioso em uma atualização do SolarWinds Orion, uma plataforma de monitoramento e gerenciamento de infraestrutura. Os usuários do SolarWinds instalaram essa atualização infectada em seus dispositivos, dando aos atacantes acesso por backdoor a dados confidenciais de diversas empresas e órgãos governamentais.
Um ano depois, um ataque ocorrido no início de 2021 contra a Mimecast, fornecedora de segurança de e-mail, foi um dos muitos efeitos a jusante da invasão à SolarWinds. A Mimecast usava a plataforma SolarWinds Orion. Quando os atacantes inseriram código infectado na SolarWinds, a Mimecast foi afetada, assim como cerca de 18 mil outros clientes da SolarWinds.
Esse código infectado instalou automaticamente malware da cadeia de software no sistema da Mimecast, comprometendo dados confidenciais, como certificados emitidos pela Mimecast, informações de conexão de servidores de clientes, endereços de e-mail e credenciais de usuários.
Confusão de dependências em 2021
No ano passado, Alex Birsan, colaborador do Medium e programador, descobriu um novo tipo de ataque cibernético à cadeia de suprimentos: a confusão de dependências. Ele conseguiu acessar sistemas internos e exfiltrar dados de grandes empresas do setor, como Yelp, Tesla, Apple e Microsoft.
Alex realizou o ataque criando pacotes npm ou yarn com os mesmos nomes de pacotes internos privados. Como os pacotes dele, com nomes idênticos, eram mais recentes que os legítimos das empresas, o sistema baixava por padrão os pacotes públicos maliciosos. Embora Alex não fosse um hacker de chapéu preto, sua descoberta da vulnerabilidade de confusão de dependências mostrou que as convenções de nomenclatura dos pacotes npm/yarn podiam colocar grandes sistemas internos em risco.
CodeCov em 2021
O CodeCov, uma ferramenta de cobertura de código, gera relatórios legíveis por máquina e os envia a um servidor enquanto os desenvolvedores executam testes. Os atacantes exploraram um script curl|bash usado pelo CodeCov para enviar os relatórios ao servidor. Eles acessaram o bucket de CDN `private write, public read` que hospedava o servidor e alteraram o script bash. Depois, usaram esse script modificado para invadir os pipelines de CI dos clientes e roubar variáveis de ambiente dos clientes do CodeCov.
4 vetores de ataque cibernético à cadeia de suprimentos
Como mostram esses ataques recentes à cadeia de suprimentos, os atacantes podem invadir a cadeia de suprimentos de software de uma empresa por meio de diversos provedores ou componentes de terceiros. Por isso, a cadeia de suprimentos pode parecer uma superfície de ataque muito ampla.
Mas, em geral, há alguns vetores de ataque específicos que os atacantes costumam explorar:
Código-fonte: os atacantes podem adulterar diretamente o código proprietário, como aconteceu no caso da SolarWinds. Basta obter credenciais de usuários com privilégios elevados, acessar um repositório ou explorar uma vulnerabilidade no código escrito pelos desenvolvedores que não foi identificada por um analisador estático de código.
Dependências: as organizações podem usar diversas dependências de terceiros, como bibliotecas de aplicativos, pacotes de sistema operacional e imagens base. Se alguma delas — direta ou transitiva — for comprometida, todas as empresas que a utilizam ficam vulneráveis.
Ferramentas de build: os pipelines de CI/CD e outras ferramentas de build de desenvolvimento foram projetados para automatizar processos. O objetivo é permitir mudanças rápidas e executar testes automaticamente, com pouca ou nenhuma intervenção humana. Por isso, pode ser difícil para as equipes de desenvolvimento identificar uma ferramenta de build infectada, como aconteceu no ataque ao CodeCov.
Implantações: os ataques à SolarWinds e à Asus têm algo em comum: ambos implantaram código malicioso durante uma atualização. Para evitar possíveis ataques à cadeia de suprimentos de software, as empresas devem fazer a devida diligência para garantir a segurança de todas as implantações, especialmente quando usam práticas automatizadas de implantação contínua (CD).
Como evitar ataques à cadeia de suprimentos de software
As empresas podem evitar ataques à cadeia de suprimentos de software implementando medidas de segurança nos processos de desenvolvimento e lançamento. A segurança é uma responsabilidade compartilhada entre as áreas da empresa e precisa estar presente em todas as etapas do desenvolvimento — essa é a abordagem DevSecOps.
Análise de composição de software
A análise de composição de software (SCA) é um ótimo ponto de partida. A SCA oferece uma visão completa das dependências do seu software para que você possa agir rapidamente se algo der errado com um fornecedor ou componente de terceiros. A essência da SCA é entender o que há dentro do seu software e saber exatamente onde estão os componentes de terceiros. A Snyk Open Source é uma ferramenta de SCA que usa inteligência de ponta para manter seus aplicativos seguros.
Criar uma lista de materiais de software (SBOM) é essencial para implementar a SCA. As SBOMs documentam detalhadamente quais componentes estão presentes em cada aplicativo.
Testes estáticos de segurança de aplicativos
Os testes estáticos de segurança de aplicativos (SAST), outra prática essencial de segurança, concentram-se especificamente na análise do código-fonte interno da sua organização e na identificação de vulnerabilidades frequentemente exploradas, como possíveis brechas para ataques de injeção ou falhas de design. O Snyk Code é uma ferramenta SAST que se integra diretamente à maioria dos IDEs, analisa o código enquanto você escreve e oferece orientações práticas para corrigir problemas.
Análise de imagens de contêiner
A análise de imagens de contêiner é essencial para identificar riscos nas imagens de agentes de build de CI ou nas imagens base dos aplicativos. As ferramentas de análise de contêineres — como o Snyk Container — ajudam você a encontrar imagens base seguras, monitorar continuamente vulnerabilidades em contêineres e corrigir vulnerabilidades em dependências de código aberto usadas nas imagens base e nos comandos do Dockerfile.
Segurança integrada desde o início
Por fim, capacitar e preparar os desenvolvedores para entender e usar ferramentas de segurança ajuda a antecipar a segurança no processo de desenvolvimento. Também é importante criar políticas sólidas e um ciclo de vida de desenvolvimento seguro de software (SDLC) para reduzir vários tipos de risco, inclusive ataques à cadeia de suprimentos.
A melhor forma de incorporar a segurança aos processos diários de desenvolvimento é incluir ferramentas como SCA, SAST e análise de contêineres em todas as etapas. Também é importante estabelecer e aplicar políticas de segurança robustas. Uma das melhores maneiras de fazer isso é implementar políticas como código (PaC) automatizadas, que definem limites de segurança para os desenvolvedores e evitam que precisem acompanhar manualmente listas de regras e normas.
Como a Snyk ajuda a proteger sua cadeia de suprimentos de software
A solução de segurança da cadeia de suprimentos de software da Snyk usa o Snyk Open Source e o Snyk Container para analisar e monitorar dependências e imagens base em busca de vulnerabilidades atuais e novas que possam afetar seus projetos. Essas soluções são sustentadas pelo avançado Snyk Intel Vulnerability Database, que identifica vulnerabilidades em média 47 dias antes de outras bases de dados disponíveis no mercado. A solução também detecta malware na cadeia de suprimentos e pacotes maliciosos. Além disso, sua organização pode usar o Snyk Advisor para encontrar pacotes confiáveis e imagens base públicas de contêineres antes de incorporá-los ao desenvolvimento.
Segurança da cadeia de suprimentos de software com a Snyk
A Snyk oferece visibilidade sobre problemas de segurança na cadeia de suprimentos e recomendações de correção para que você resolva tudo rapidamente.
Confira nossos recursos para saber mais sobre as ferramentas da Snyk que ajudam a proteger sua cadeia de suprimentos e sobre o panorama da segurança da cadeia de suprimentos.