Aqui serão listadas as vulnerabilidades mais críticas em sistemas Web de acordo com a OWASP ( Open Web Application Security Project), que em Português significa Projeto Aberto de Segurança de Aplicações Web.
A seguir são listadas as 10 maiores vulnerabilidades de maneira resumida:
A1 – Cross Site Scripting (XSS)
Os furos XSS ocorrem sempre que uma aplicação obtém as informações fornecidas pelo usuário e as envia de volta ao navegador sem realizar validação ou codificação daquele conteúdo. O XSS permite aos atacantes executarem scripts (normalmente Java Scripts) no navegador da vítima, o qual pode roubar sessões de usuário, pichar sites Web, introduzir worms, etc.
A2 – Falhas de Injeção
As falhas de injeção, em especial SQL Injection, são comuns em aplicações Web. A injeção ocorre quando os dados fornecidos pelo usuário são enviados a um interpretador com parte do comando ou consulta. A informação maliciosa fornecida pelo atacante engana o interpretador que irá executar comandos mal intencionados ou manipular informações.
A3 – Execução maliciosa de arquivos
Os códigos vulneráveis à inclusão remota de arquivos (RFI) permite ao atacante incluir código e dados maliciosos, resultando em ataques devastadores, como o comprometimento total do servidor. Os ataques de execução de arquivos maliciosos afeta PHP, XML e todos os frameworks que aceitem nomes de arquivo ou arquivos dos usuários.
A4 – Referência Insegura Direta à Objetos
Uma referência direta à objeto ocorre quando um desenvolvedor expõe a referência a um objeto implementado internamente, como é o caso de arquivos, diretórios, registros da base de dados ou chaves, na forma de uma URL ou parâmetro de formulário. Os atacantes podem manipular estas referências para acessar outros objetos sem autorização.
A5 – Cross Site Request Forgery (CSRF)
Um ataque CSRF força o navegador da vítima, que esteja autenticado em uma aplicação, a enviar uma requisição pré-autenticada à um servidor Web vulnerável, que por sua vez força o navegador da vítima a executar uma ação maliciosa em prol do atacante. O CSRF pode ser tão poderoso quanto a aplicação Web que ele ataca.
A6 – Vazamento de Informações e Tratamento de Erros Inapropriado
As aplicações podem divulgar informações sobre suas configurações, processos internos ou violar a privacidade por meio de uma série de problemas na aplicação, sem haver qualquer intenção. Os atacantes podem usar esta fragilidade para roubar informações consideradas sensíveis ou conduzir ataques mais estruturados.
A7 – Autenticação falha e Gerenciamento de Sessão
As credenciais de acesso e token de sessão não são protegidos apropriadamente com bastante freqüência. Atacantes comprometem senhas, chaves ou tokens de autenticação de forma a assumir a identidade de outros usuários. As falhas são geralmente introduzidas a partir de funções menos importantes de autenticação como logout, gerência de senhas, timeout, recordação de dados de logon, pergunta secreta e atualização de conta.
Para evitar esse problema, primeiramente, assegure-se que o SSL é a única opção para todas as partes autenticadas do aplicativo (veja A9) e que todas as credenciais estão guardadas de uma forma encriptada ou em hash (veja A8).
Além disso, alguns pontos importantes são listados a seguir:
Não permita que o processo de login comece de uma página não encriptada
Assegure-se que todas as páginas tenham um link de logout
Verifique a senha antiga do usuário quando ele desejar mudar a senha
Não confie em credenciais falsificáveis como forma de autenticação, como endereços de IP ou máscaras de rede, endereço de DNS ou verificação reversa de DNS, cabeçalhos da origem ou similares.
Cuide para quando permitir que usuários registrados mudem seus endereços de e-mail – envie uma mensagem para o e-mail anterior antes de efetuar a mudança.
A8 – Armazenamento Criptográfico Inseguro
As aplicações Web raramente utilizam funções criptográficas de forma adequada para proteção de informações e credenciais. Simplesmente não criptografar dados sensíveis, como senhas, é muito comum. Os atacantes se aproveitam de informações mal protegidas para realizar roubo de identidade e outros crimes, como fraudes de cartões de crédito.
A9 – Comunicações inseguras
As aplicações freqüentemente falham em criptografar tráfego de rede quando se faz necessário proteger comunicações críticas/confidenciais. A encriptação (geralmente SSL) deve ser usada em todas as conexões autenticadas, especialmente páginas web com acesso via internet, mas também conexões com o backend, caso contrário, o aplicativo irá expor uma autenticação ou o token de sessão.
Devido ao fato de que o protocolo HTTP inclui credenciais de autenticação ou um token de sessão para cada pedido, toda autenticação do tráfego deve ir para o SSL, não só os pedidos de login.
A encriptação de informações com servidores de back-end também é importante. Mesmo que estes servidores sejam naturalmente mais seguros, as informações e as credenciais que elas carregam são mais sensíveis e mais impactantes.
A10 – Falha de Restrição de Acesso à URL
Frequentemente, uma aplicação protege suas funcionalidades críticas somente pela supressão de informações como links ou URLs para usuários não autorizados, fragilidade conhecida como Segurança por Obscuridade. Os atacantes hábeis,motivados ou simplesmente sortudos podem fazer uso desta fragilidade.
Verificações de controles de acesso devem ser executadas antes de permitir uma solicitação a uma função sensível, na qual garante que somente o usuário autorizado acesse a respectiva função.
Além disso, desenvolva suas aplicações com segurança, criando códigos simples e com profunda segurança
Fonte: https://www.owasp.org/images/4/42/OWASP_TOP_10_2007_PT-BR.pdf