The Beauty of Security

Segurança em aplicações web: as 10 principais vulnerabilidades

Não existem (e provavelmente nunca vão existir) sistemas de informação completamente invulneráveis. Toda e qualquer aplicação, web ou desktop, pode ser invadida. Algumas, mais facilmente do que outras.

Ciente disso, é obrigação de cada software house proteger os dados de seus clientes da melhor forma possível. E para fazer isso, é necessário conhecer seu inimigo: como o hacker age? Quais brechas ele procura e utiliza para invadir meu sistema? Como posso me prevenir?

Neste artigo, vamos analisar as 10 principais vulnerabilidades de segurança em aplicações web, e descobrir métodos para cobrir estas brechas.

Quais as principais vulnerabilidades de segurança em aplicações web?

As principais vulnerabilidades de segurança em aplicações web são também as mais comuns, e exatamente por isso, são as mais perigosas.

Antes de tentar métodos mais complexos, um invasor certamente tentará hackear sua aplicação com estratégias mais simples. Só depois de testar as vulnerabilidades mais comuns e falhar, o hacker muda para uma abordagem mais complexa  – ou desiste de invadir seu sistema.

Por isso, é essencial conhecer as principais vulnerabilidades. Abaixo, listamos as 10 mais comuns:

1. Injection

Esse tipo de falha é muito conhecida pela técnica SQL Injection, onde o invasor realiza consultas indevidas no banco de dados, por meio de um formulário ou URL.

Com isso, o hacker consegue logar em seu sistema com privilégios de administrador, e explorar este acesso como desejar.

2. Broken Authentication

Essa falha ocorre quando o sistema não utiliza métodos confiáveis de autenticação e armazenamento das informações do usuário, com credenciais de acesso que facilitam ataques de força bruta.

Um dos exemplos mais comuns de broken authentication é utilizar senhas muito curtas que facilitam ataques de força bruta. Normalmente, é a primeira forma que um cracker tentará utilizar para invadir seu sistema.

A solução mais imediata para este problema é criar uma política de senhas seguras, com mínimo de caracteres, combinação de letras e números, etc. 

3. Sensitive Data Exposure

As ferramentas de inspecionar elementos em uma página ou aplicação web, como o Chrome DevTools, estão entre as ferramentas preferidas dos desenvolvedores, e também dos hackers mal-intencionados.

Muitas APIs não protegem devidamente as informações que são transmitidas através delas, o que permite que invasores tirem proveito dos parâmetros retornados por ela, simplesmente inspecionando a aba ‘network’ do seu sistema.

Quanto a isso, é necessário dedicar uma atenção especial ao definir como estas informações vão trafegar pela interface, e criptografá-las devidamente.

4. XML External Entities (XXE)

Esta vulnerabilidade é específica de sistemas que trabalham com a linguagem XML, como por exemplo, software emissores de documentos fiscais eletrônicos.

Invasores podem explorar processadores de XML vulneráveis, onde é possível injetar códigos maliciosos e enviar para uma aplicação que fará a leitura desse XML.

5. Broken Access Control

Essa falha ocorre em aplicações que possuem páginas, rotas com informações que apenas o administrador deveria ter acesso, porém o controle de usuários não funciona.

Neste formato, o hacker consegue autenticar-se como administrador, e a partir daí, acessar, copiar e até excluir seus dados.

Para prevenir problemas de broken access control, é necessário que a validação do perfil de acesso venha do seu servidor, e não possa ser alterada externamente.

6. Security Misconfiguration

Se trata de configurações padrão de fábrica, informações abertas na nuvem, headers http configurados incorretamente, erros verbosos que indicam com precisão o motivo do erro.

A solução desse problema é bem simples: sempre lembre-se de excluir os arquivos e configurações default dos frameworks que utilizar. Alguns frameworks vão te lembrar disso após a instalação. Outros, não.

7. Cross-Site Scripting (XSS)

Assim como SQL Injection, essa falha é muito conhecida na internet. Através dela, invasores conseguem inserir códigos maliciosos de javascript e tags html na página.

Normalmente, o cross-site scripting requer um determinado comportamento do usuário, como acessar um link específico. No entanto, quando bem executada, este tipo de fraude é muito difícil de identificar, principalmente para usuários leigos.

8. Insecure Deserialization

Falha muito utilizada para execução remota de códigos maliciosos. Mesmo quando essa falha de segurança não resulta em um acesso remoto por parte do hacker, ele podem utilizar a brecha para uma escalação de privilégios, configurando-se como administrador.

9. Using Components with Known Vulnerabilities

Mesmo que sua aplicação esteja desenvolvida seguindo um padrão seguro, as bibliotecas de terceiros que sua aplicação utiliza podem possuir falhas que são conhecidas na internet. Isso resulta em exploits, softwares prontos para serem utilizados para uma invasão.

Assim, é necessário ficar atento a possíveis vulnerabilidades de todos os componentes, bibliotecas e APIs que você irá consumir em seu software.

10. Insufficient Logging & Monitoring

Um sistema sem logs, não consegue detectar que em algum lugar de sua API/Sistema alguém está tentando explorar alguma falha.

Muitos desenvolvedores são resistentes a implementar um módulo de logs no seu sistema, principalmente devido ao peso destes dados no banco. Se este for o problema, defina um período de auto-exclusão do log que você pode suportar. Um mês é o mínimo!

Outra solução é o monitoramento em tempo real, que permite a você e sua equipe perceber comportamentos estranhos no seu sistema, como picos ou quedas absurdas de acesso.

Assim, é importante manter painéis de informações ao vivo da sua aplicação, normalmente em monitores ou televisões sempre ligados nesta tela, com alertas sonoros caso julgue necessário.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *