No final do ano de 2018 publicamos um artigo no WeLiveSecurity (versão espanhol) falando sobre as vulnerabilidades mais identificadas. Mesmo tendo sido produzido próximo ao último dia do ano, alguns dos números já não são mais os mesmos, pois mais vulnerabilidades foram adicionadas a lista de ameaças.

Abaixo estão listados os números atualizados de 2018 para cada uma das vulnerabilidades:

Todas as vulnerabilidades reportadas, mesmo as que não possuem números tão expressivos, oferecem riscos diretos a usuários e empresas, e todo cuidado possível deve ser tomado para que elas não sejam exploradas.

Um dos cuidados que quase não possui custo, sendo também bastante eficiente, é a obtenção de conhecimento sobre como funciona cada uma das vulnerabilidades, pois, ao entender como elas funcionam, é possível identificá-las e manter-se protegido.

Pensando nisso, listamos abaixo as cinco vulnerabilidades mais vistas em 2018 e uma breve explicação sobre cada uma delas.

Top 5 das vulnerabilidades em 2018

#1 Code Execution

Também conhecido como Arbitrary Code Execution (ACE) é a vulnerabilidade que permite que comandos ou linhas de código sejam executadas em determinado processo, mesmo sem fazerem parte da estrutura original daquele processo.

Atacantes normalmente injetam códigos maliciosos no processo em execução e alteram a sua forma de execução para que o código injetado seja executado, fazendo assim a exploração desta vulnerabilidade.

Não é à toa que essa vulnerabilidade figura o topo do ranking pois todo software, caso não desenvolvido adequadamente, pode conter uma vulnerabilidade de execução de código. A capacidade de explorar esta vulnerabilidade e softwares remotamente é chamada de Remote Code Execution (RCE), e, caso seja explorada em serviços ou protocolos largamente utilizados podem comprometer diversos computadores simultaneamente, como foi o caso do da falha no protocolo SMBv1 que permitiu a propagação do WannaCry em 2017.

#2 Overflow

A tradução literal de Overflow é transbordar. Trata-se de uma característica do software que tenta manipular dados na memória para tamanhos que ele não está preparado para receber. Ficou confuso né? Vamos exemplificar. Imagine que um software foi feito para receber dados cadastrais e o campo nome pode receber até 6 caracteres. Caso o nome Bernardo seja preenchido nesse campo apenas as letras “Berna” serão armazenadas adequadamente, as letras “rdo” que excederam o tamanho previsto do campo serão armazenadas em outras partes do software, podendo comprometer seu funcionamento. Criminosos utilizam o overflow para colocar códigos maliciosos na execução do programa e alterar seu comportamento de acordo com o intuído do ataque.

Diversos tratamentos de dados podem ser implementados no momento de desenvolvimento do software que impedem que, caso o programa receba dados maiores do que foi previsto, esses dados sobreponham outros endereços de memória do programa.

#3 DoS

A Negação de Serviço (do inglês Denial of Service) é uma das vulnerabilidades que já foi amplamente divulgada no Brasil. Suas principais formas de exploração são:

  • Excesso de requisições:

Ocorre quando um serviço recebe um número de requisições maior do que está preparado para receber, esgotando assim os recursos de hardware e software presentes no servidor, causando lentidão, interrupção temporária ou definitiva do serviço, sendo este o meio mais amplamente conhecido do DoS.

  • Manipulação de Parâmetros

Também é possível explorar a vulnerabilidade de DoS enviando requisições especialmente forjadas com parâmetros que não serão interpretados adequadamente pelo serviço, o recebimento desses parâmetros não interpretáveis normalmente faz com que o serviço seja interrompido.

A proteção contra DoS baseado em excesso de requisições consiste em impedir que os recursos se esgotem, seja por meio de aumento do link de Internet, inserção de soluções de segurança que barrem pacotes em excesso, ou a contratação de empresas que se colocarão no meio do caminho entre o atacante e o serviço, e todo o tratamento do excesso de requisições será dado antes mesmo dos pacotes chegarem ao serviço.

Quanto a proteção contra parâmetros inadequados, cabe a equipe de desenvolvimento de software impor controles que impeçam que um conjunto de caracteres não seja interpretado corretamente e cause uma falha no serviço.

#4 XSS

O Cross Site Scripting é uma vulnerabilidade que o atacante forneça códigos específicos que fazem com que a aplicação se comporte da forma que ele deseja. Isso pode permitir ao atacante obter dados de todas as vítimas que acessarem esta mesma aplicação.

Sua forma de prevenção também consiste em programar adequadamente a aplicação para que a sanitização dos dados de entrada e saída seja feita, evitando que o atacante receba as respostas que deseja do serviço.

Fizemos um post detalhado sobre XSS no qual explicamos mais a fundo cada uma das vertentes do ataque e alguns outros meios de se proteger.

#5 Gain Information

Consiste em obter informações que não estariam disponíveis por padrão por meio de interação com o serviço/programa. A obtenção de informações pode variar muito, desde acessar uma pasta e conseguir identificar através das datas dos arquivos presentes nela qual foi a data da última atualização daquele serviço, até usar a aplicação para fazer uma chamada a um de seus arquivos internos que inadvertidamente traz informações sobre as bases de dados ou que permita que o atacante execute comandos remotamente no servidor.

Evitar que criminosos obtenham informações é uma tarefa minuciosa e demanda revisão constante das interações que o software tem com o sistema operacional e das respostas que seus arquivos internos trazem aos usuários.

Como posso estar protegido?

  • Sejam as aplicações internas ou expostas a Internet, com desenvolvimento próprio ou de terceiros, é essencial priorizar sempre o desenvolvimento seguro. Isso diminuirá drasticamente as chances de ataques à solução.
  • Manter Sistemas Operacionais e aplicações atualizados e com as últimas atualizações de segurança instaladas.
  • Deixar os softwares de proteção sempre ativos e monitorando cada um dos pontos do ambiente.
  • Utilizar a política de “mínimo acesso necessário” para que tanto usuários como softwares possam manipular apenas os dados essenciais para o desempenho da atividade proposta pela solução.