As 10 principais vulnerabilidades em aplicações web

vulnerabilidades web

Vamos abordar as vulnerabilidades de acordo com o OWASP 2017(que ainda está em fase de elaboração), iniciando com os conceitos básicos, aplicações web designa de forma geral sistemas de informática projetados para serem utilizados através de navegadores. Já uma vulnerabilidade é uma fraqueza, ou nada mais que uma condição, que quando explorada por um atacante pode resultar em uma violação de segurança.

A era digital está diretamente atrelada a vários sistemas/aplicativos, como por exemplo, o Facebook, WordPress, Flash, Mozilla, dentre outros.

 

Mas, esses aplicativos são 100% seguros? Não, não existe algo totalmente seguro.

 

Por exemplo, essa semana surgiu uma vulnerabilidade para o Adobe Flash e outra para o Mozilla Firefox, na qual um possível invasor pode executar códigos remotos através de um arquivo Flash, ou até mesmo de um site, caso a vítima esteja executando a versão vulnerável do Firefox, você pode ver aqui a importância de atualizar seus aplicativos. Com a execução desses códigos, é possível que o invasor consiga acesso total ao seu computador, como se ele tivesse acessando através de um programa de suporte remoto, como o Team Viewer.

Mas o que tem haver esses sistemas com o Facebook Messenger, por exemplo? Em 2016 um pesquisador de segurança descobriu uma vulnerabilidade no Facebook Messenger, que apenas acessando um site, sem baixar ou executar nada, era possível ler todas as suas conversas, anexos e demais informações enviadas para todos os seus contatos. Essa vulnerabilidade aconteceu, pois uma linha do código, responsável por uma validação de segurança, estava como “null”, ou seja, nulo, ao invés de verdadeiro. Lembrando que um sistema como o Google, por exemplo, tem 2 bilhões de linhas de código.

 

Mas agora focando no nosso cenário atual, vamos pensar no sistema financeiro desenvolvido pelo estagiário ou até mesmo no sistema de automação desenvolvido por aquela empresa de pequeno porte, será que a segurança da sua aplicação é de alto nível?

Se uma empresa como o Facebook com cerca de 12 mil funcionários(2015) e faturamento superior a 17 bilhões(2015) sofre com falhas de segurança, creio que você deva se preocupar um pouco mais com as vulnerabilidades que o seu site ou sistema pode ter, algumas vulnerabilidades podem prejudicar diretamente a continuidade do negócio, causando danos irreparáveis que podem levar a empresa a falência.

Mas não precisa ficar apavorado, a segurança deve sim ser levada a sério, mas mesmo com uma equipe e receita reduzida, nós podemos trabalhar com um alto nível de segurança, o que não pode ser feito, é negligenciar a segurança e fingir que não existem problemas e pontos de melhoria.

O ponto inicial para elevar o nível de segurança do negócio e da sua aplicação ou sistema em si, é a conscientização e o treinamento, entender as principais vulnerabilidades, o que é o foco desse artigo. Indo direto ao ponto, vamos iniciar explicando e dando exemplos de cada uma das 10 principais vulnerabilidades em aplicações web.

 

  1. Injeção

As falhas de injeção, como SQL, OS, XXE e LDAP, ocorrem quando dados não confiáveis são enviados para um intérprete como parte de um comando ou consulta. Por exemplo, na tela de administração do seu sistema, você tem que digitar um usuário e senha para acessar, por trás desse formulário de acesso, o seu sistema normalmente realiza uma consulta ao banco de dados, para verificar se o usuário existe e a senha digitada está correta, o comando para a execução é basicamente o seguinte:

SELECT id FROM USUARIOS WHERE usuário = ‘textoDigitado’ && senha = ‘textoDigitado2’

Esse código seleciona o número de identificação do usuário, que tem o mesmo nome e senha digitado no formulário, retornando o resultado ele libera o acesso ao sistema, o grande problema é que utilizando injeção, poderíamos no textoDigitado informar o seguinte:

‘ OR 1=1

Que ao ser processado pelo sistema, iria influenciar diretamente no contexto, agora o sistema verifica se o usuário é igual a vazio ou 1 é igual a 1, caso verdadeiro, ele pega o primeiro usuário do sistema e libera o acesso.

Entendeu o perigo? É possível que o invasor acesse o seu sistema, sem saber nem o usuário e nem a senha.

 

  1. Gerenciamento de sessão e quebras de autenticação

Um dos pontos principais de uma aplicação é como ela lida com a sessão e a autenticação do usuário, explicando um pouco o funcionamento, o seu formulário de acesso verifica se os dados estão corretos e cria uma sessão, informando que o seu acesso foi autorizado, se essa função for implementada de maneira incorreta, pode permitir que invasores comprometam senhas, chaves ou tokens de sessão, e até mesmo explorem falhas de implementação para assumir identidades de outros usuários no sistema.

Por exemplo, se no seu formulário de acesso, é adicionado o código do usuário através do método POST(método padrão de envio de formulário), pode ser utilizado o Tamper Data ou outro aplicativo similar para realizar a manipulação da informação que será inserida na seção, nesse ponto ao invés de inserir o código do usuário “João” na sessão, podemos alterar e passar o código do usuário “José”.

Esse é um exemplo básico, mas existem milhões de possibilidades para utilizar essa vulnerabilidade, caso a aplicação não seja implementada corretamente. Seria impactante para o seu negócio, se um usuário comum, conseguisse acessar o sistema com o usuário de um diretor ou gerente?

 

  1. Cross-Site Scripting (XSS)

Uma falha XSS ocorre sempre que um aplicativo inclui dados não confiáveis em uma nova página da web sem validar ou escapar adequadamente. O XSS permite que os invasores executem scripts no navegador da vítima, por sua vez, esses scripts podem redirecionar a vítima para um site malicioso ou até mesmo sequestrar sessões de usuários.

Por exemplo, se você tem uma conta no banco Digital30 que utiliza o método GET para realizar transferências sem proteção contra CSRF (8), e você acessa o blog do “João”, e o blog tem uma falha de XSS que permitiu um invasor inserir um código malicioso na área de comentários, não havia nenhum filtro de código no comentário, agora todos que acessam a página de comentários têm um script executado no computador. Esse script em específico acessa a página digital30.com/transfer.php?value=500&to=0200, como você estava autenticado no banco, ao acessar o blog, a falha fez com que executasse uma ação dentro do banco, que transferiu R$ 500,00 para a conta 0200.

Lógico que, bancos possuem uma proteção e várias camadas para realizar transferências, o que torna mais complicado, mas esse exemplo é só para mostrar o poder de um XSS.

Olhando pelo lado do defacer, uma espécie de pichador digital, XSS é uma ótima forma de afetar páginas, já que através de um XSS, você pode redirecionar a vítima para outro site. Imagina todos seus clientes acessando o seu site e sendo redirecionados para uma página pornográfica? Simplesmente porque seu desenvolvedor se esqueceu de filtrar código nos comentários da página. Qual seria o impacto para a sua marca?

 

  1. Quebras no controle de acesso

Uma aplicação normalmente atua com sistema de permissões, que define o que cada usuário pode fazer no sistema, outro ponto é que as páginas do seu sistema precisam que o usuário esteja autenticado para serem acessadas, no entanto, essa vulnerabilidade ocorre quando essa verificação ou não foi feita da maneira correta, ou simplesmente não foi feita.

Por exemplo, dentro de um sistema, se o desenvolvedor se esquecer de verificar na página de cadastro de usuários se o usuário atual está autenticado, é possível que um invasor utilize essa falha para acessar a página diretamente através de scripts de força bruta, que testa várias possibilidades, como por exemplo seusite.com.br/a, seusite.com.br/aa, até testar todas as possibilidades, caso durante esse teste o invasor encontre a página seusite.com.br/usuarios/cadastro e a mesma não tiver uma verificação de autenticação, mesmo sem ter um usuário e senha do sistema é possível cadastrar um usuário e obter acesso total.

Também é muito comum o usuário só ter permissão de consultar alguma informação, mas por algum erro do desenvolvedor, ser possível editar ou excluir algumas informações, isso pode ser utilizado pelo invasor e pode impactar diretamente no seu negócio.

 

  1. Configuração incorreta de segurança

A segurança da informação vai muito além de um script bem configurado, precisamos ter um conceito de segurança amplamente aplicado, com uma configuração de segurança bem definida e implantada para o servidor web, servidor de banco de dados, plataforma e etc. Como citamos no início do artigo, precisamos manter as aplicações do nosso servidor atualizadas, para que vulnerabilidades de terceiros, já descobertas e corrigidas não possam prejudicar a segurança do nosso servidor, a padronização e normatização dos modelos de segurança do negócio, alinhados a políticas rigorosas de segurança são fundamentais para a continuidade do negócio.

Por exemplo, se você tem um código robusto, amplamente testado, mas hospeda-o em um serviço de hospedagem de baixa qualidade, aonde sua aplicação não tem nenhum tipo de proteção contra ataques de negação de serviço, um atacante mal intencionado pode colocar o seu sistema fora do ar por tempo indeterminado, através de ataques, trazendo um prejuízo enorme para o seu negócio. Leia sobre como escolher uma boa hospedagem de sites.

 

  1. Exposição de dados sensíveis

Muitas aplicações web não protegem de forma adequada os dados confidenciais, como dados financeiros. Os atacantes podem roubar ou modificar esses dados deficientemente protegidos, para conduzir fraudes em cartões de créditos, roubar identidades ou outros crimes. Dados sensíveis devem possuir uma proteção extra, como uma criptografia.

Por exemplo, se você está dentro de um restaurante utilizando um sistema de pagamentos que não possui criptografia (HTTPS), e digitou as informações do seu cartão de crédito para realizar uma compra, um atacante mal intencionado, utilizando aplicações de análise de tráfego pode capturar as informações, outro ponto bastante comum é que um invasor obtendo acesso ao mesmo sistema através do item (1), pode obter todas as informações dos cartões de créditos já utilizados no sistema, caso não possua um tipo de criptografia.

 

  1. Proteção de ataque insuficiente

A maioria dos aplicativos não possui capacidade básica para detectar, prevenir e responder a ataques manuais e automatizados. A proteção de ataques vai muito além da validação de entrada básica e envolve a detecção, resposta e até bloqueio de tentativa de exploração.

Por exemplo, no item (4) falamos sobre um script, capaz de realizar múltiplas combinações de caracteres para encontrar páginas acessíveis em um determinado sistema, no entanto, uma aplicação robusta e com um nível de segurança razoável deveria impedir isso através da utilização de um WAF – Web Application Firewall.

Esse tipo de detecção de anomalias é fundamental para a proteção da sua aplicação, por exemplo, ao realizar cada ação deve ser realizado um reconhecimento, para verificar se há algum padrão malicioso e tomar a devida atitude, que seja apenas o registro de informação para que o administrador execute uma ação, como a correção de uma vulnerabilidade, ou até mesmo para bloquear o acesso do possível invasor.

 

  1. Cross-Site Request Forgery (CSRF)

Um ataque CSRF força o navegador da vítima autenticada a enviar uma solicitação forjada para uma aplicação vulnerável, dessa forma a aplicação vulnerável pensa ser solicitações legítimas da vítima.

Por exemplo, o invasor pode colocar dentro do site isca, um script que simula o acesso ao link meusite.com.br/conta/alterar/senha?novasenha=123456, caso o usuário esteja autenticado no site alvo(meusite.com.br) a sua senha será alterada para 123456, apenas por acessar o site do invasor. Ou seja, ao acessar outro site é possível que ele execute ações no site vulnerável sem o teu consentimento, também é comum a utilização dessa falha enviando o link encurtado (goo.gl,  bit.ly), que executa a ação para a vítima, sendo assim, ao clicar a ação é executada e algumas vezes a vítima nem percebe o golpe.

  1. Utilizar componentes com vulnerabilidades conhecidas

Aplicativos, APIs, bibliotecas, frameworks e outros módulos de softwares possuem vulnerabilidades, como eles são executados com os mesmos privilégios que a aplicação, se um componente vulnerável for explorado, toda a aplicação pode ser colocada em risco. Por isso é fundamental que seja documentado todos os módulos de terceiros utilizados no projeto e que seja acompanhado a atualização desses projetos, para que a aplicação tenha sempre a versão mais atual dos módulos de terceiros, para aumentar ao máximo o nível da segurança do mesmo.

Por exemplo, uma aplicação que utiliza o plug-in ComentsEasy, pode estar vulnerável a injeção, caso o ComentsEasy não trate esse item, ou seja, é possível que exista vulnerabilidades, por isso é fundamental verificar a real necessidade de utilizar módulos de terceiros, e quando for utilizar, acompanhar as atualizações para que não utilize versões desatualizadas e com falhas conhecidas.

 

  1. APIs desprotegidas

Aplicações modernas geralmente utilizam APIs, por exemplo, aplicativos móveis se comunicam com APIs (SOAP, XML, Rest, JSON e afins), para realizar consultas e demais transações com o banco de dados, esse tipo de prática é recomendado, pois adiciona um nível extra de proteção na comunicação. O grande problema é quando essas APIs são desprotegidas ou contém várias vulnerabilidades.

Por exemplo, uma API de consulta ao banco de dados de um sistema financeiro, caso não esteja protegida, pode ser acessada diretamente e liberar a consulta de dados sigilosos a qualquer pessoa, mesmo que não esteja utilizando a aplicação.

Ou seja, é fundamental manter o nível de segurança nas APIs de comunicação, pois a menor falha em um pequeno módulo do conjunto aplicação pode colocar tudo a perder.

 

Essas são as 10 principais vulnerabilidades encontradas em aplicações web, mas não para por ai, existem milhares de vulnerabilidades e a cada dia são descobertas novas, a conscientização é o primeiro passo para elevar o nível de segurança da sua aplicação, mas este é apenas o começo, realizar testes de invasão, auditorias no código fonte, treinamentos periódicos, é fundamental para continuar elevando a segurança da informação no seu negócio. Tem interesse em conhecer esses serviços? Veja nossas soluções voltadas para a segurança da informação, ou se preferir pode entrar em contato e agendar uma reunião com um especialista na área de segurança da informação para sanar todas as suas dúvidas.

 

Fonte: https://inovedados.com.br/as-10-principais-vulnerabilidades-web

.