AI Hacking - Como os hackers utilizam a inteligência artificial nos ciberataques

Ler agora
Utilizamos inteligência artificial para as traduções dos sítios e, embora nos esforcemos por garantir a exatidão, estas podem nem sempre ser 100% precisas. Agradecemos a sua compreensão.

Gerir as vulnerabilidades de dependência na suaSupply Chain Software

por Stella Nguyen, Gestora Sénior de Marketing de Produtos
Partilhar esta publicação

As bibliotecas de terceiros são essenciais para acelerar o ciclo de vida do desenvolvimento de software. Em vez de codificar a partir do zero, os programadores integram frequentemente bibliotecas de código aberto para vários fins - seja por motivos de rentabilidade, falta de recursos ou melhor flexibilidade. Repositórios como o Maven Central e o PyPI, juntamente com ferramentas de gestão de dependências, simplificam este processo e aumentam a produtividade. No entanto, essa dependência também traz potenciais riscos de segurança. 

Gerir as dependências de código aberto de um projeto pode colocar desafios, incluindo dependências aninhadas (uma ou mais dependências dentro de uma dependência) e conhecimentos limitados na gestão de dependências. A integração de bibliotecas externas expande a superfície de ataque e aumenta os riscos de segurança. A descoberta de uma vulnerabilidade numa biblioteca pode comprometer todo o software que depende desse componente. Por conseguinte, é essencial utilizar ferramentas de análise de dependências para identificar e resolver vulnerabilidades conhecidas com origem em dependências de terceiros. 

Adoção da reutilização e da dependência de Software 

À medida que os ecossistemas de distribuição se tornam mais acessíveis, os programadores optam por reutilizar o software existente para acelerar o desenvolvimento de software complexo. No entanto, esta conveniência pode introduzir problemas de segurança inesperados se não for cuidadosamente gerida. Estes programas de software existentes são principalmente distribuídos através da Internet sob a forma de pacotes - arquivos que contêm versões de lançamento conhecidas como bibliotecas, juntamente com metadados que especificam a versão, o autor, a licença, as referências e outras informações relevantes. O software de empacotamento simplifica os processos de distribuição e controlo de versões. 

Pacotes de código aberto 

Os programadores partilham frequentemente o seu código publicamente ao abrigo de licenças de código aberto, permitindo a revisão do código, a colaboração da comunidade e uma integração fácil. Qualquer programador pode reutilizar, modificar ou contribuir para a base de código. Os projectos variam muito em termos de qualidade, manutenção e suporte. Os autores lançam estes pacotes para os tornar mais facilmente acessíveis, mas o suporte e a responsabilidade dependem da licença.

Dependências 

Uma vez que um pacote é referenciado em outro projeto, ele se torna uma dependência de projeto, representando uma referência de pacote externo. As dependências criam relações unidireccionais entre pacotes de software, em que um depende do outro para funcionar corretamente. Os programadores incluem dependências nas suas aplicações, resolvendo-as em tempo de compilação e obtendo as necessárias. 

Software Supply Chain 

A cadeia de fornecimento refere-se a todos os fornecedores externos envolvidos no processo, particularmente aqueles que fornecem dependências de software. A gestão da cadeia de fornecimento ganhou proeminência no desenvolvimento de software nos últimos anos, com as empresas a estabelecerem políticas que englobam os requisitos dos fornecedores, documentos legais e contratos para garantir a conformidade antes de aceitarem um fornecedor. 

Gestão de dependências

Assuntos principais

A gestão de dependências pode rapidamente tornar-se avassaladora, levando ao que é conhecido como "inferno das dependências". As aplicações modernas podem ter centenas ou mesmo milhares de dependências directas, o que dificulta o rastreio de vulnerabilidades. Aqui estão alguns cenários em que a gestão de grandes volumes de dependências se torna um desafio. 

  • Falta de revisão do código: Apesar da transparência do código aberto, por vezes as equipas podem não rever o código, o que leva a uma falsa sensação de segurança.
  • Confiança implícita: Os programadores incluem muitas vezes dependências sem verificar minuciosamente os autores, confiando apenas na inclusão no repositório.
  • Uso extensivo de dependências: Os programadores dependem muitas vezes de pacotes, mesmo que apenas uma fração da sua funcionalidade seja necessária, o que leva a dependências excessivas.
  • Alterações de rutura: A atualização de pacotes pode ser complexa e pode introduzir alterações de rutura, levando a hesitações e pacotes desactualizados.
  • Questões de responsabilidade: As normas de manutenção e apoio de código aberto ficam aquém das exigidas para o software comercial, levando a litígios e expectativas irrealistas por parte dos criadores de projectos, resultando potencialmente em pacotes inseguros.
Ataques recentes

O aumento dos ataques que visam dependências de terceiros suscitou preocupações sobre a segurança do software. Incidentes de grande visibilidade, como a vulnerabilidade Log4Shell em 2021 ou o backdoor XZ Utils recentemente, em março de 2024, que afectou milhares de pacotes Maven, sublinharam o impacto generalizado de tais vulnerabilidades. No mesmo ano, a descoberta de malware num popular pacote NPM ua-parser-jswas realçou os riscos associados à utilização de bibliotecas de terceiros em pilhas de aplicações. 

Outro ataque digno de nota em janeiro de 2024 é o MavenGate, um novo método de ataque à cadeia de fornecimento de software, dependências desviadas através de bibliotecas abandonadas. A exploração bem sucedida destas deficiências pode permitir que agentes nefastos encontrem artefactos vulneráveis em dependências e injectem código malicioso na aplicação, ou pior, comprometam o processo de construção através de um plugin malicioso. 

medida que a utilização de bibliotecas de código aberto aumenta, torna-se fundamental compreender e atenuar estes riscos. Isto leva a uma investigação mais aprofundada sobre a prevalência, os tipos e a persistência de vulnerabilidades em bibliotecas de código aberto, bem como sobre a sua relação com os atributos e as submissões do projeto. 

Conselhos para a segurança Supply Chain
diagrama que ilustra os passos para uma gestão segura do software com auditoria SBOM, seleção de cadeias de fornecimento fiáveis e segurança do processo de construção

Protegendo dependências com OPSWAT SBOM 

Em reação aos ataques à cadeia de abastecimento, os Estados Unidos da América aprovaram, em maio de 2021, o "Executive Order on Improving the Nation's Cybersecurity", que define medidas para melhorar as políticas da cadeia de abastecimento. Um dos principais requisitos é fornecer um SBOM para cada produto. 

OPSWAT Software Bill of Materials (SBOM) está em constante evolução para responder às necessidades crescentes de desenvolvimento de software num ambiente seguro. Uma das principais caraterísticas do SBOM OPSWAT é a análise de dependências. Esta funcionalidade foi concebida para aumentar a visibilidade da sua base de código, identificando vulnerabilidades nas dependências em que os seus projectos assentam. 

Leia mais sobre a importância dos SBOMs.

Verificação de dependência aninhada

Verificação de dependência de pacotes

OPSWAT O SBOM detecta automaticamente vulnerabilidades de segurança em dependências de software durante o desenvolvimento e o teste. Por exemplo, o SBOM permite que as equipas saibam se a aplicação utiliza uma biblioteca de código aberto que é conhecida por ser vulnerável. As equipas podem então tomar medidas para proteger a aplicação. 

análise de segurança de pacotes Python mostrando vulnerabilidades, problemas de dependência e versões seguras
 Verificação de dependência do código fonte 

Verificar a dependência com Python

Saída do comando do terminal que mostra as dependências do pacote Python 'requests' usando pip e grep

Container Digitalização de imagens

OPSWAT O SBOM examina todas as camadas de uma imagem de contentor para identificar vulnerabilidades ou ameaças, abrangendo pacotes do sistema operativo (SO) e bibliotecas de software dependentes utilizadas pela aplicação. Esta abordagem proactiva permite a deteção e resolução de potenciais problemas antes que estes se transformem em problemas graves.

Relatório de avaliação de vulnerabilidades que apresenta uma lista de pacotes com as respectivas vulnerabilidades, identificadores CVE, versões e versões corrigidas num ecossistema de software
Container Digitalização de imagens

Verificar a dependência com o Alpine 

Saída do terminal mostrando informações de dependência para o pacote ssl_client no Alpine Linux
Nível de gravidade das dependências vulneráveis

Os programadores e as equipas de segurança beneficiam da compreensão dos tipos comuns, da prevalência e da persistência das vulnerabilidades de dependência, o que lhes permite avaliar a gravidade e explorar estratégias de correção. 

O SBOM examina as dependências do seu projeto em busca de vulnerabilidades conhecidas. Após a deteção, o SBOM fornece informações detalhadas, incluindo níveis de gravidade, descrições de vulnerabilidades e correções disponíveis. 

Relatório de vulnerabilidade para requirements.txt com vulnerabilidades de pacotes destacadas e detalhes CVE
Nível de gravidade das dependências vulneráveis 
Relatório de vulnerabilidade 

Pode ser exportado um relatório detalhado para as equipas acompanharem: 

  • Número total de dependências verificadas 
  • Número total de vulnerabilidades encontradas em todas as dependências 
  • Uma gama de versões digitalizadas 
  • CVEs conhecidos 
  • Número total de vulnerabilidades de gravidade crítica, alta, média e baixa 
Remediação e recomendação

OPSWAT A SBOM recomenda que as equipas de segurança actualizem todos os pacotes vulneráveis para as versões mais recentes com correcções de vulnerabilidades. Isto permite às equipas abordar a vulnerabilidade dos mantenedores de pacotes ou remover pacotes da árvore de dependências. Esta abordagem proactiva permite que as equipas abordem potenciais riscos de segurança antes de se tornarem um problema, melhorando significativamente a segurança e a integridade dos seus projectos de software. Além disso, o OPSWAT SBOM ajuda as organizações a manterem-se em conformidade e seguras na cadeia de fornecimento de software. É altamente recomendável que as equipas devem: 

Mapear dependências
Utilize ferramentas para identificar as dependências existentes no ambiente e as suas relações.

Eliminar dependências desnecessárias
Remova dependências desnecessárias ou não essenciais para reduzir a superfície de ataque.

Utilizar repositórios estabelecidos
Assegurar que as dependências são obtidas a partir de fontes fiáveis.

Analise todas as dependências
Antes de utilizar dependências em qualquer software, analise-as para ter conhecimento de problemas de segurança ou de qualidade.

Reflexões finais 

Ao utilizar ferramentas de verificação de dependências como o OPSWAT SBOM, pode identificar e resolver proactivamente as vulnerabilidades nas dependências do seu projeto, mitigando potenciais riscos de segurança antes que estes possam ser explorados. Aproveite o poder da verificação de dependências e dos SBOMs para criar aplicações de software seguras, compatíveis e resilientes. 

Etiquetas:

Mantenha-se atualizado com OPSWAT!

Inscreva-se hoje para receber as últimas actualizações da empresa, histórias, informações sobre eventos e muito mais.