Riscos comuns na cadeia de fornecimento de software e como mitigá-los

De acordo com uma Relatório do Gartner, até 45% das organizações em todo o mundo teriam sofrido um ataque à sua cadeia de fornecimento de software até 2025. Este tipo de ataque está a tornar-se frequente e difícil de lidar devido às mudanças na forma como os produtos de software estão a ser construídos atualmente.

Hoje, os engenheiros de software não precisam criar aplicativos do zero. Tanto quanto 90% de um aplicativo pode ser construído com códigos de terceiros, bibliotecas discretas e software de código aberto. Embora esta abordagem ao desenvolvimento de software ajude a simplificar o processo de criação de aplicações e a poupar uma quantidade significativa de tempo, também aumenta as ameaças e vulnerabilidades de segurança, uma vez que pacotes maliciosos podem ser entregues através de códigos e software de terceiros.

Em última análise, é ficando cada vez mais difícil para manter a integridade das cadeias de fornecimento de software. O recente aumento dos riscos na cadeia de abastecimento de software e as violações de alto perfil por eles causadas mostram a gravidade do problema das vulnerabilidades na cadeia de abastecimento.

Em linha com esta tendência, tornou-se imperativo que as organizações tomem medidas para garantir a integridade e segurança do seu software. Nesta postagem, exploraremos os riscos comuns da cadeia de fornecimento de software e as diversas maneiras pelas quais as organizações podem mitigar essas vulnerabilidades e proteger seu software contra ataques.

As vulnerabilidades conhecidas nas cadeias de fornecimento de software

O software de terceiros pode representar diversas ameaças à cadeia de fornecimento de software. Os invasores podem usar várias maneiras de explorar vulnerabilidades em sistemas que dependem desse software de terceiros. Alguns desses métodos de ataque incluem introdução de código malicioso em software, confusão de dependências, typosquatting e assim por diante.

No entanto, devido à complexidade do desenvolvimento de software e à velocidade com que novas aplicações precisam de ser entregues no mercado digital altamente competitivo de hoje, os engenheiros de software não têm outra escolha senão confiar em ferramentas de terceiros e bibliotecas externas para criar aplicações o mais rapidamente possível. .

Vulnerabilidades podem ser introduzidas em aplicativos como resultado de:

 

  • O código que você escreve: práticas de segurança inadequadas no código personalizado que você mesmo escreveu
  • Com o que você constrói: as ferramentas de desenvolvimento de software usadas para criar aplicativos podem ser comprometidas, expondo seu software a vulnerabilidades de segurança
  • O que você compra: alguns aplicativos de software como serviço (SaaS) prontos para uso usados ​​para desenvolvimento de aplicativos podem conter vulnerabilidades
  • O que você usa: muitos aplicativos dependem de bibliotecas de código aberto de terceiros que podem servir como o elo mais fraco em sua cadeia de suprimentos.

 

Considerando os numerosos elos potenciais fracos em cada cadeia de fornecimento de software, as organizações devem ser proativas na prevenção e remediação vulnerabilidades da cadeia de suprimentos de software. Para fazer isso, os engenheiros de software devem compreender os riscos ou ameaças potenciais que seus projetos de software podem enfrentar. Algumas dessas ameaças incluem:

Pacote de código malicioso incorporado

Uma das coisas que os invasores fazem em um ataque à cadeia de suprimentos de software é infectar os endpoints afetados com software malicioso. Esse malware pode ser um vírus, ransomware, cavalo de Tróia ou spyware que pode causar estragos no software e nos sistemas de computador afetados.

Os invasores geralmente escolhem alvos cujos sistemas possuem autorização de alto nível nos dispositivos dos usuários. Um exemplo notável de ataque como este é o ataque cibernético de 2021 sofrido por Kaseya, uma desenvolvedora de soluções de TI cujos clientes incluíam provedores de serviços gerenciados e clientes corporativos.

Uma das principais soluções de TI oferecidas pela Kaseya é o VSA, uma ferramenta unificada de monitoramento e gerenciamento remoto. O servidor VSA era altamente confiável nos dispositivos dos clientes e, ao se infiltrar nele, os invasores conseguiram contornar os controles de autenticação nos clientes conectados. Dessa forma, eles poderiam fazer upload de cargas maliciosas sem obstáculos. O ataque Kaseya é semelhante ao Fiasco de segurança da SolarWinds, onde os invasores conseguiram enviar atualizações maliciosas a milhares de clientes, deixando-os expostos a vulnerabilidades de segurança adicionais.

Exfiltração de dados confidenciais

Todo ataque com objetivo de roubo de dados pode ser classificado como ataque de exfiltração de dados. Diz-se que a exfiltração de dados ocorre quando um agente malicioso realiza uma transferência não autorizada de dados confidenciais de um sistema alvo para um local diferente. Um exemplo notável de ataque de exfiltração de dados que ocorreu como resultado de um ataque à cadeia de suprimentos foi o Ataque de novembro de 2013 ao Target, uma das maiores empresas de varejo dos Estados Unidos.

Os invasores entraram nos sistemas da Target usando credenciais roubadas de um fornecedor terceirizado. Este ataque deu-lhes acesso não autorizado ao banco de dados de atendimento ao cliente da Target, permitindo-lhes capturar nomes, números de telefone, endereços de e-mail, informações de cartões de pagamento e outros dados confidenciais de clientes. As informações dos cartões de pagamento de 41 milhões de clientes-alvo foram vazadas para os servidores do invasor, enquanto mais de 60 milhões de clientes tiveram suas informações de contato expostas.

Execução remota de código

A execução remota de código (também chamada de execução arbitrária de código) é um tipo de ataque cibernético em que um invasor obtém acesso para comandar remotamente a operação de um dispositivo ou computador. Normalmente, o invasor injeta código malicioso em um arquivo, string ou pacote inteiro que a vítima pretende executar em seus sistemas. Isso permite que o invasor lance um ataque em grande escala que pode comprometer um aplicativo ou servidor web inteiro. Duas maneiras comuns pelas quais ataques de execução remota de código podem ocorrer em ataques à cadeia de suprimentos de software são por meio de Typosquatting e Dependency Confusion:

Typosquatting

Para executar esse tipo de ataque, os agentes mal-intencionados normalmente criam um pacote comprometido que é idêntico às dependências que você pretende instalar. Normalmente, o pacote malicioso tem uma grafia ligeiramente diferente. A intenção é aproveitar um possível erro de digitação de um comando de instalação. O pacote malicioso funciona normalmente como a dependência que o engenheiro pretendia instalar, mas também executa um código malicioso que foi incorporado nele ao mesmo tempo.

Confusão de Dependência

A confusão de dependências é outra abordagem que os invasores usam para iniciar uma execução remota de código em um ataque à cadeia de suprimentos de software. Com esse tipo de ataque, os agentes mal-intencionados criam um pacote em uma biblioteca externa com o mesmo nome de um pacote de dependência interna. Como ambas as dependências têm o mesmo nome, o gerenciador de pacotes pode instalar o código malicioso. Isso permite que o invasor penetre no ambiente de integração/implantação contínua (CI/CD) do aplicativo de software que está sendo desenvolvido.

Como mitigar os riscos na cadeia de fornecimento de software?

Nos últimos anos, os ataques à cadeia de fornecimento de software tornaram-se uma das maiores ameaças cibernéticas enfrentadas por organizações em todo o mundo. Mitigar os riscos de ataques como este tornou-se uma parte importante da segurança cibernética e do gerenciamento de riscos em todas as organizações, especialmente aquelas que dependem de um ou outro software de terceiros. Em vez de confiar cegamente em plataformas de terceiros e repositórios públicos, é melhor tomar precauções e realizar as verificações necessárias sobre o que está sendo importado para o seu sistema. Ao construir seu plano de gerenciamento de riscos da cadeia de suprimentos de software, você pode usar as seguintes maneiras para mitigar os riscos de ataques à cadeia de suprimentos de software:

 

Audite seu software

O que torna os ataques à cadeia de abastecimento tão difíceis de combater é que o risco vai além dos seus próprios sistemas. Para mitigar o risco desses ataques, você precisa fazer mais do que apenas proteger seu próprio perímetro. Em vez disso, sua estratégia deve estar mais focada em garantir que os sistemas de software externos conectados ao seu sejam igualmente seguros.

No entanto, isso geralmente é difícil de conseguir, especialmente quando você não tem informações suficientes sobre os sistemas externos aos quais está conectado ou sobre as dependências de código usadas em seu aplicativo. O primeiro passo para mitigar o risco de um ataque à cadeia de abastecimento é fazer uma auditoria abrangente da sua cadeia de abastecimento de software.

Recentemente, após o ataque SolarWinds de 2020, que afetou várias agências governamentais dos EUA, o governo federal dos Estados Unidos tornou as auditorias de software uma exigência legal para cada empresa que vende software para uma agência governamental dos EUA. Você também deve fazer o mesmo para todos os seus sistemas. Manter um registro claro de todas as suas dependências de software é a única maneira de saber se o seu sistema está exposto ao risco de ataques à cadeia de suprimentos.

Além de auditar imediatamente as dependências do software, você também precisa auditar o sistema novamente a cada nova versão do software. Talvez você também precise ir além da auditoria manual, fazendo uma auditoria mais completa que possa identificar todos os tipos de dependências, inclusive as transitórias.

Auditoria automatizada

Além de auditar manualmente seus sistemas, talvez você também precise colocar sua auditoria no piloto automático. A automação desempenha um papel fundamental na identificação de vulnerabilidades em qualquer parte do seu software. As verificações automatizadas ajudam a descobrir vulnerabilidades no código do seu software rapidamente, para que possam ser resolvidas antes que o código seja enviado para produção. A utilização de código de terceiros no desenvolvimento de software continuará a crescer e os agentes maliciosos irão continuamente visar estes sistemas como um elo fraco para lançar ataques a software na cadeia de valor. A única maneira de detê-los é manter-se continuamente atualizado sobre a segurança do seu sistema, auditando-o continuamente.

Prepare uma lista de materiais de software

A lista de materiais do software (SBOM) tornou-se uma das principais formas de garantir a segurança do seu software e mitigar os riscos da cadeia de suprimentos. Este documento é um metadado formal, legível por máquina, projetado para identificar todo o conteúdo de um pacote de software. Ele também detalha outras informações vitais, como os dados de licença e direitos autorais de todos os componentes usados ​​na construção de um produto de software.

O conceito de preparação de uma lista de materiais não é inteiramente novo. Historicamente, tem origem no mundo da manufatura. Aqui, cada produto fabricado recebe uma lista de materiais que serve como um inventário de todos os itens incluídos no processo de fabricação daquele produto.

Imagem no SBOM

 

O mesmo princípio pode ser aplicado à gestão de riscos da cadeia de fornecimento de software. O SBOM detalha a parte do seu aplicativo que você construiu do zero, ao mesmo tempo que lista todas as partes que você obteve de fornecedores terceirizados. Dessa forma, quando uma vulnerabilidade for descoberta, você poderá rastrear facilmente sua origem.

Os SBOMs devem ser compartilhados entre várias organizações que fazem uso de um componente de software. Isso proporciona transparência sobre todos os componentes que todos em uma cadeia de fornecimento de software estão usando. Como uma organização preocupada com a segurança do seu software, você precisa priorizar os SBOMs. Antes de adicionar um componente ao seu produto de software, seria útil obter uma lista de materiais do fornecedor. Isto tornará mais fácil responder aos desafios e vulnerabilidades de segurança.

Desenvolva uma estrutura de gerenciamento de risco

Ao mitigar os riscos de ataques à cadeia de fornecimento de software, é sempre melhor adotar uma abordagem proativa do que esperar até que ocorra um ataque. Ao delinear antecipadamente os possíveis cenários de ataque, você pode ter acesso à sua prontidão para combatê-los no futuro.

Como parte dos esforços de gerenciamento de riscos da cadeia de fornecimento de software, você precisa desenvolver uma maneira de avaliar a probabilidade de um invasor comprometer seu sistema. Desta forma, você pode determinar as estratégias preventivas que precisa adotar para limitar esses riscos, bem como o plano de contingência que deve implementar para lidar com o risco.

Treinar todos na sua organização sobre como responder a ataques à cadeia de abastecimento é outra parte essencial da sua estrutura de gestão de riscos. Isto permitirá que todos estejam vigilantes na antecipação de tais ataques e respondam adequadamente caso eles ocorram.

Conclusão

Os ataques à cadeia de fornecimento de software continuarão a expor as organizações a diversas formas de riscos. Assim, os engenheiros não podem mais presumir que os pacotes de terceiros que usam para construir, implantar e manter seus aplicativos de software são seguros e mantidos adequadamente. Na verdade, a principal razão pela qual os ataques à cadeia de fornecimento de software se tornaram mais comuns do que antes é, em parte, devido à crescente dependência de códigos de terceiros na construção de aplicativos de software. Para mitigar estes riscos, é necessário fazer um inventário da sua cadeia de fornecimento de software e implementar medidas para minimizar o impacto destas ameaças no seu sistema, a fim de evitar violações graves e as consequências que as acompanham.