Quer experimentar?
Segurança do Software Supply Chain
Proteger seu software supply chain moderno
As vulnerabilidades dos supply chains entraram em foco após a pandemia, incluindo software supply chains. Com as atividades comerciais cada vez mais online, é essencial garantir que os software supply chains estejam protegidas contra malfeitores que procuram explorar vulnerabilidades na forma de violações ou invasões, resultando em dados pessoais comprometidos, perdas monetárias, penalidades governamentais e, possivelmente, danos irreparáveis à marca.
Este artigo explica tudo o que você precisa saber sobre a segurança do software supply chain, por que ela é importante para as organizações e como você pode proteger seu supply chain com a Snyk.
O que é segurança software supply chain?
A segurança do software supply chain se refere às práticas, ferramentas e tecnologias empregadas para proteger o processo de desenvolvimento e implantação de software contra vulnerabilidades e possíveis ameaças à segurança. Ela envolve uma série de atividades, incluindo modelagem de ameaças, análises de composição de software, assinatura de código e outros esforços destinados a mitigar os riscos de segurança.
Hoje em dia, a maior parte dos softwares que usamos depende de um código-fonte aberto e de componentes de terceiros criados por desenvolvedores ou organizações fora do nome corporativo que você pode ver na fatura ou no banner do site. Embora usar códigos ou componentes externos em vez de criá-los do zero acelere o ciclo de desenvolvimento, isso também apresenta uma série de riscos de segurança. É por isso que a segurança do software supply chain é tão importante.
O escopo também envolve avaliar a segurança dos componentes de software de terceiros e das bibliotecas de código aberto usadas no processo de desenvolvimento e garantir que tudo esteja livre de vulnerabilidades, malware e outros riscos cibernéticos. Pense na segurança do software supply chain como uma abordagem abrangente para proteger a integridade e a confidencialidade de um software durante todo o seu ciclo de vida.
Por que a segurança do software supply chain é importante?
As ameaças à software supply chain são graves. De acordo com um relatório de 2022, os ataques à software supply chain dispararam 742% nos últimos três anos. Alguns incidentes recentes incluem:
Ataque à SolarWinds: em dezembro de 2020, um grupo de hackers patrocinado pelo estado russo se infiltrou na rede da SolarWinds, um fornecedor de software de gerenciamento de TI para grandes organizações. Os hackers inseriram malware em uma atualização de software, que foi distribuída para milhares de clientes da SolarWinds (agências governamentais e empresas privadas), dando aos hackers acesso às suas redes.
Operação ShadowHammer: em 2019, os hackers usaram atualizações de software comprometidas para distribuir um malware chamado ShadowHammer em computadores da ASUS. Cerca de um milhão de usuários foram afetados pelo ataque.
Huawei: autoridades dos Estados Unidos alertaram que as soluções de software fornecidas pela empresa chinesa de telecomunicações Huawei e usados por organizações em seus sistemas podem ser exploradas pelo estado chinês para espionagem ou outros fins mal-intencionados.
Leia nosso guia sobre ataques no supply chain para ver mais exemplos.
A segurança do software supply chain pode deter um ataque cibernético, reduzir os efeitos desse tipo de ataque ou até mesmo impedir a inclusão da vulnerabilidade no seu aplicativo. Uma segurança robusta pode proteger o processo de desenvolvimento e implantação de softwares contra a introdução de componentes mal-intencionados ou comprometidos, como malware, vulnerabilidades e outras ameaças à segurança. Proteger o supply chain também garante a conformidade com os regulamentos e padrões do setor, ao mesmo tempo em que promove a confiança no software que está sendo desenvolvido e implantado.
A questão da segurança do suply chain é tão essencial para a segurança nacional que, em setembro de 2022, o presidente dos EUA, Joe Biden, promulgou a ordem executiva M-21-30, enfatizando as diretrizes do NIST (Instituto Nacional de Padrões e Tecnologia) para proteger qualquer software vendido ao governo dos EUA. Segundo a ordem executiva, o formulário de atestado deve incluir o seguinte:
Nome do produtor do software
Nome do software
Declaração do fornecedor ou da agência destacando que seguiram práticas seguras de desenvolvimento
O que é um ataque à software supply chain?
Um ataque à software supply chain ocorre quando um invasor se aproveita de uma vulnerabilidade no supply chain de desenvolvimento de software para inserir código mal-intencionado ou malware no software. Esse tipo de ataque pode ocorrer a qualquer momento durante o desenvolvimento do software, desde a codificação e dos teste iniciais até os estágios de distribuição e instalação. Depois de integrarem o malware ao software, os malfeitores podem ativá-lo para roubar recursos de computação ou informações confidenciais, interromper operações ou assumir o controle de sistemas comprometidos.
Os invasores podem usar diversos vetores (métodos e táticas) para atacar vulnerabilidades no software supply chain. Esses vetores incluem, sem limitação:
Componentes de terceiros: os agentes mal-intencionados têm como alvo componentes de terceiros (por exemplo, bibliotecas ou frameworks) e procuram oportunidades para inserir malware no software.
Ferramentas de desenvolvimento comprometidas: os agentes mal-intencionados têm como alvo compiladores, sistemas de compilação ou outras ferramentas de desenvolvimento para buscar oportunidades de introduzir malware.
Contas de desenvolvedores comprometidas: os agentes mal-intencionados tentam explorar vulnerabilidades nas contas de desenvolvedores, como as do GitHub ou de outras plataformas de compartilhamento de código.
Infraestrutura de atualizações de software comprometida: os agentes mal-intencionados frequentemente atacam a infraestrutura de atualizações de software para fornecer malware, como fizeram na Operação ShadowHammer.
Engenharia social: os agentes mal-intencionados entram em contato com funcionários ou desenvolvedores para induzi-los a fornecer acesso a sistemas ou informações confidenciais.
Quatro práticas recomendadas para reduzir ataques à software supply chain
Proteger o software supply chain é essencial para qualquer organização que esteja desenvolvendo ou implantando software para uso interno ou externo. Para facilitar as coisas, reunimos uma lista de quatro práticas recomendadas que você pode (e deve) implementar imediatamente para ajudar a reduzir os riscos de um ataque à seu software supply chain. Entre elas, estão:
Reduzir ataques de confusão de dependências
Desabilitar comandos de instalação arbitrários por pacotes de código aberto
Habilitar a autenticação multifatorial em toda o seu software supply chain
Evitar a exposição de informações confidenciais
1\. Reduzir ataques de confusão de dependências
É fácil para os malfeitores lançar ataques de confusão de dependências a fim de explorar pontos fracos no software supply chain das empresas. Veja como proteger sua organização:
Use um namespace com escopo: pacotes com escopo bloqueiam o namespace do pacote e o mapeiam para um usuário/organização específico. Isso reduz o ataque de confusão de dependências, pois não há substituição de um pacote subjacente da intenção original do usuário e um repositório upstream alternativo.
Use a configuração específica do repositório para a definição explícita do registro upstream: gerenciadores de pacotes, como pip e npm, fazem o possível para resolver pesquisas de informações de pacotes na ausência de uma orientação explícita. Eles geralmente procuram os registros públicos (como npmjs e PyPI) para encontrar versões mais recentes de um pacote e inserem acidentalmente um pacote mal-intencionado. Portanto, ao usar um proxy ou repositório de pacotes interno, como o Artifactory ou o Verdaccio, não use o proxy de solicitações de pacotes privados para registros públicos.
Isaac Schlueter, cofundador do npmjs, reuniu alguns exemplos elaborados e referências de configuração para as contramedidas mencionadas acima com relação à confusão de dependências. Você também pode conferir este white paper da Microsoft com diretrizes sobre como reduzir esse tipo de preocupação com ataques à software supply chain.
2\. Desabilitar comandos de instalação arbitrários por pacotes de código aberto
Alguns gerenciadores de pacotes, como o npm, permitem que qualquer pacote instalado ou desinstalado execute comandos arbitrários. Vários pacotes mal-intencionados transformaram essa configuração padrão em uma arma perigosa. Ou o ataque pode ser executado empregando um ataque de typosquatting, em que, por meio de uma árvore de dependências ou erro de digitação no nome de um pacote na linha de comando, a vítima pode instalar um pacote mal-intencionado.
É fácil confundir os nomes das dependências. Por exemplo, qual dos seguintes é mal-intencionado e qual é o pacote real?
É compreensível como os vetores de ataque de confusão de dependências podem confundir alguém. O segredo é não instalar pacotes de modo impensado ou copiando e colando às cegas, mas sim pesquisar e examinar os pacotes primeiro. Recomendamos usar o Snyk Advisor para avaliar a integridade do pacote.
O que é confusão de dependências?
Um dos vetores de ataque mais comuns e fáceis é a confusão de dependências. Com essa técnica, os agentes mal-intencionados buscam explorar vulnerabilidades na forma como as organizações gerenciam as dependências de software. Os invasores carregam versões mal-intencionadas de pacotes de código aberto em sistemas públicos de gerenciamento de pacotes (npm ou PyPI) usando nomes semelhantes aos dos pacotes legítimos, estratégia também conhecida como typosquatting ou brandjacking. Os desenvolvedores podem atualizar ou instalar acidentalmente versões mal-intencionadas de pacotes, comprometendo seus sistemas.
3\. Habilitar a autenticação multifatorial em toda o seu software supply chain
Como bons cidadãos da comunidade de código aberto, estamos mais dependentes uns dos outros do que nunca. A autenticação está se tornando cada vez mais importante para garantir que outras pessoas possam confiar em nós e nos softwares que mantemos. Portanto, você pode supor que os desenvolvedores seriam os primeiros a habilitar a 2FA, pois eles entendem os riscos que sua ausência pode implicar. Infelizmente, descobrimos que não é esse o caso.
Em janeiro de 2020, foi relatado publicamente que menos de 10% dos desenvolvedores em npmjs habilitaram a 2FA, apesar de esse recurso existir desde o final de 2017.
É altamente recomendável que você e outras pessoas que trabalhem em um ambiente de software ativem a autenticação multifatorial nas contas de todos os registros e ecossistemas, como npmjs, RubyGems, Docker e GitHub, pois isso reforça as medidas de segurança.
4\. Evitar a exposição de informações confidenciais
Com a popularidade dos softwares de código aberto, desenvolvedores e colaboradores cooperam abertamente. Isso é ótimo para a inovação, mas é péssimo para o tratamento de informações confidenciais, que podem vazar por acidente. Tome cuidado para evitar a exposição de informações confidenciais, pois é consideravelmente difícil ocultá-las após o compartilhamento. Veja como proceder:
Não armazene informações confidenciais em um repositório, na configuração nem no código. Detalhamos 10 práticas recomendadas de segurança do GitHub para você explorar cada uma em detalhes.
Evite publicar pacotes ou imagens de contêiner com informações potencialmente confidenciais que possam acabar em registros públicos. Você pode seguir as 10 orientações de práticas recomendadas de segurança para npm sobre como definir pacotes npm com as configurações .npmignore corretas.
Para se aprofundar, confira a apresentação em vídeo Como reduzir os riscos na segurança do software supply chain.
Como a segurança do supply chain se relaciona com AppSec e DevSecOps?
Segurança de supply chain, AppSec (segurança dos aplicativos e DevSecOps (desenvolvimento, segurança e operações) são práticas que envolvem a proteção de componentes e sistemas para desenvolver, distribuir e manter softwares.
Segurança de supply chain: garante que o software e os componentes usados no desenvolvimento e na distribuição de um produto sejam provenientes de fontes confiáveis e estejam isentos de vulnerabilidades.
AppSec: protege o software propriamente dito e os sistemas nos quais ele é executado, além de proteger os dados processados.
DevSecOps: integra a segurança ao processo de desenvolvimento de software, envolvendo as equipes de segurança e seus processos desde o início das fases de desenvolvimento, testes e implantação. O objetivo é abordar possíveis problemas de segurança o quanto antes.
A segurança do supply chain, o AppSec e o DevSecOps trabalham juntos para garantir a segurança geral de um produto ou sistema.
Automação da segurança supply chain
A automação dos processos e das tarefas envolvidos na proteção do software e dos componentes usados no desenvolvimento e na distribuição de um produto pode ajudar a manter uma sólida postura de segurança cibernética. Além de identificar e atenuar as ameaças de segurança de maneira eficiente, a automação garante que os controles de segurança sejam aplicados de maneira consistente em sistemas e componentes, diminuindo os riscos associados a erros humanos.
Confira abaixo algumas tecnologias automatizadas de segurança supply chain.
Verificação automatizada de vulnerabilidades: ferramentas que verificam automaticamente o software e os componentes de terceiros em busca de vulnerabilidades e ameaças de segurança conhecidas. As ferramentas de verificação podem usar políticas definidas pelas equipes de segurança para gerenciar os processos, impedir a entrada de vulnerabilidades críticas em um aplicativo e emitir alertas ao detectá-las.
Gerenciamento automatizado de dependências: ferramentas que rastreiam e gerenciam automaticamente as dependências de um produto (por exemplo, bibliotecas e frameworks) e alertam os desenvolvedores quando uma dependência contém vulnerabilidades conhecidas ou recém-descobertas.
Análise automatizada do suply chain: ferramentas que analisam automaticamente os produtos de fornecimento de software quanto a possíveis riscos de segurança (por exemplo, componentes não confiáveis de terceiros).
Gerenciamento automatizado de configurações: ferramentas que gerenciam e reforçam automaticamente as configurações de segurança nos sistemas (por exemplo, software, servidores e recursos de nuvem).
Mitigação de ataques à software supply chain com a Snyk
A Snyk pode ajudar a proteger seu software supply chain com processos para identificar e corrigir o uso de pacotes vulneráveis e mal-intencionados, impedindo que cheguem à sua base de código. Essa proteção também abrange contêineres e pacotes de código aberto na criação de aplicativos.
Segurança do código aberto
A Snyk conduz pesquisas, faz divulgações responsáveis e ajuda as organizações a detectar e corrigir pacotes mal-intencionados nas dependências de código aberto extraídas para a sua base de código. Somente em 2020, detectamos mais de 700 pacotes mal-intencionados em registros de código aberto.
Temos um histórico comprovado de descobrir, detectar e ajudar os clientes a corrigir esses pacotes mal-intencionados. Alguns exemplos incluem o ataque de dependência electron-native-notify em npmjs e a execução remota de código na gem Ruby de strong_password. Nossa equipe de pesquisa de segurança também publicou suas descobertas sobre a fraude de anúncio e vazamento de dados SourMint, que afetou milhares de aplicativos móveis por meio de um SDK mal-intencionado.
A Snyk examina os arquivos de manifesto do seu pacote e cria uma árvore de dependências completa com aninhamento profundo que lista todos os pacotes que você está trazendo para o aplicativo, incluindo aqueles introduzidos por meio de dependências transitivas. Em seguida, essas dependências são então correlacionadas com o Snyk Intel Vulnerability Database. Se a Snyk identificar uma referência a um pacote mal-intencionado conhecido, o pacote relevante será sinalizado como uma vulnerabilidade, e indicaremos uma sugestão de correção.
Dependendo de como você implanta a Snyk no SDLC, nossa tecnologia também pode ajudar a automatizar a prevenção do uso de pacotes mal-intencionados ou imagens base de contêineres. Podemos interromper a passagem de um processo de compilação ou CI, enviar uma notificação para você, criar um tíquete do Jira ou executar qualquer outra ação adequada aos seus fluxos de trabalho.
Lista de materiais de software (SBOM)
A lista de materiais de software (SBOM) é um registro formal dos componentes usados para desenvolver software e seus relacionamentos no software supply chain. As SBOMs oferecem uma oportunidade de descoberta de vulnerabilidades logo no início do ciclo de vida da produção do software, neutralizando as oportunidades de ameaças antes que elas ocorram.
A Snyk pode automatizar a compilação de uma SBOM para que as organizações possam rastrear facilmente os componentes e as dependências de código aberto que utilizam. Nossa solução de segurança do supply chain pode verificar esses componentes para encontrar possíveis vulnerabilidades e oferecer recomendações práticas para corrigi-las. Confira nosso post sobre como compilar uma SBOM.
Segurança de contêineres
A Snyk detecta pacotes dentro de contêineres, herdados de imagens de base ou instalados por instruções do usuário por gerenciadores de pacotes do Linux. O Snyk Container pode identificar se alguma vulnerabilidade foi detectada na imagem de base ou nos pacotes (ou dependências) adicionados ao contêiner e também fornecer conselhos práticos para corrigir os problemas. No caso de imagens de base, o Snyk Container fornece correções com um clique para agilizar a conversão para uma versão mais segura. No caso de instruções do usuário, ele ajuda com a seleção de versões de pacote mais seguras. O Snyk Container também pode monitorar suas imagens de contêiner quanto a vulnerabilidades recém-descobertas, alertando você quando elas são descobertas em suas imagens já compiladas, fornecendo o mesmo conselho de correção para o fluxo de trabalho de compilação normal.
A Snyk também detecta outros binários instalados fora dos vários gerenciadores de pacotes do Linux. Por exemplo, suponha que um pacote particularmente pesado consiga entrar em imagens de base de contêineres populares, mas não tenha sido instalado por meio de gerenciadores de pacotes. Nesse caso, poderíamos usar nossa capacidade de detecção para encontrar esses pacotes. No entanto, isso não substitui a detecção de malware.
Quais serão as próximas novidades na segurança do software supply chain?
A mitigação de riscos de ataques à software supply chain exige que as organizações tomem medidas intencionais para internalizar as ameaças. Isso envolve entender a natureza mutável do desenvolvimento de software e os novos vetores de ataque que isso introduz. Também significa instruir a equipe de desenvolvimento sobre os riscos e as precauções necessárias.
A Snyk pesquisa e descobre constantemente pacotes mal-intencionados em ecossistemas e declara com total confiança que as ameaças cibernéticas estão se tornando cada vez mais predominantes. Quanto mais usarmos software, mais as ameaças de software aumentarão. Entender esses riscos é o primeiro passo para evitá-los e reduzi-los.
Segurança do supply chain com a Snyk
A Snyk oferece visibilidade dos problemas de segurança de supply chain e fornece conselhos de correção para resoluções rápidas.
Para saber mais sobre como melhorar sua postura de segurança cibernética, confira Evitar ataques à supply chain com o NPM.
Próximo na série
Software Supply Chain Attacks
Attackers leverage third-party resources to perform software supply chain attacks. Learn how what these attacks look like and how to prevent them.
Continuar lendo