BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Lidando com vulnerabilidades de software na Microsoft: os últimos 20 anos

Lidando com vulnerabilidades de software na Microsoft: os últimos 20 anos

No evento de segurança BlueHat IL 2019, o engenheiro da Microsoft Matt Miller descreveu como o cenário de vulnerabilidades de software evoluiu nos últimos 20 anos, e a abordagem que a Microsoft vem adotando para lidar com ameaças.

Curiosamente, entre os principais culpados pelos bugs de segurança, diz Miller, estão os problemas de segurança de memória, que representam 70% do total de falhas de segurança corrigidas pela Microsoft.

A análise das causas-raiz de vulnerabilidades de segurança é o primeiro passo a ser dado para definir uma abordagem eficaz de mitigação de riscos, de acordo com Miller:

Em geral, desde o início de 2006, problemas de segurança de memória continuam sendo o tipo mais comum na categoria de vulnerabilidades que estamos observando. Cerca de 70% das vulnerabilidades abordadas por meio de uma atualização de segurança a cada ano estão relacionadas a um problema de segurança da memória.

A segurança de memória é uma categoria ampla, incluindo vários tipos de problemas, de corrupção de pilha e de heap para uso após desalocação, acesso de memória não inicializado etc. Analisando a evolução dessas subcategorias, Miller aponta que corrupções de pilha passaram de uma proporção importante de vulnerabilidades a quase nada.

Da mesma forma, o uso após a desalocação representava mais de 50% das vulnerabilidades em 2013-2015 devido a erros do navegador web, porém diminuiu significativamente graças ao uso da coleta de lixo. Por outro lado, aumentaram nos últimos anos a leitura fora do limite do heap (heap out-of-bounds read), além da confusão de tipos e acessos não-inicializados.

Passando de vulnerabilidades descobertas para vulnerabilidades realmente exploradas por hackers, Miller apresenta uma visão diferente, onde o acesso à memória depois de liberação e a corrupção do heap são os tipos de vulnerabilidade mais explorados.

Segundo Miller, saber onde surgem problemas de segurança e quais tipo de vulnerabilidade os hackers preferem não contribui ativamente para reduzir vulnerabilidades de um sistema. Vários desafios devem ser superados: "ainda vemos muitos erros iguais aos cometidos há 10 anos".

Há vários motivos, incluindo complexidades ao lidar com comportamentos indefinidos em linguagens como C e C++; a falta de ferramentas ou de treinamento; ou mesmo o fato de que sistemas são cada vez mais desenvolvidos por diferentes grupos seguindo políticas e padrões de segurança diferentes.

Outra área de melhorias é encontrar formas de quebrar técnicas de exploração (exploit) por invasores. Essas explorações tendem a usar o mesmo padrão geral: usar uma vulnerabilidade para ler ou gravar num local de memória arbitrário e descobrir detalhes sobre o programa, como quais DLLs são usadas etc. De posse dessas informações, é montado um pacote malicioso para tentar controlar o fluxo do programa, corrompendo um ponteiro de função ou um ponteiro de tabela virtual etc.

Em resumo, segundo Miller, a abordagem mais promissora para reduzir vulnerabilidades envolve mudanças mais radicais:

  • Tornar o código mais seguro, eliminando categorias comuns de vulnerabilidades de segurança de memória;
  • Usar linguagens mais seguras como C# ou Rust, ou melhorar as linguagens existentes, como C++.
  • Aprimorar o processo de desenvolvimento e as ferramentas, incluindo "autofix" do compilador e técnicas similares.

Há muito mais na palestra de Miller; não deixe de assistir a o vídeo da apresentação para conhecer outros detalhes.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT