Riscos de segurança aplicacional: Os 10+ segundo a OWASP

O Open Web Application Security Project (OWASP) publicou a RC1 do documento The ten most critical web application security risks, orientado para 2010. Das novidades em relação ao relatório anterior, relativo a 2007, destaca-se a mudança do foco, que estava centrado nas vulnerabilidades, e que foi deslocado para os riscos, que é precisamente onde a nossa atenção deve ser concentrada, na minha opinião.

Este ano a lista conta com as presenças seguintes, retiradas e traduzidas a partir do documento original:

  1. Injecção. Falhas que permitem a injecção de dados, pela injecção de SQL, comandos do sistema operativo, e perguntas LDAP, ocorrem quando dados que não são validados (que não são confiáveis) são enviados a um interpretador, incluídos num comando ou numa query. Os dados hostis, enviados por um atacante, podem levar o interpretador a executar comandos que não estavam previstos, nem seriam autorizados, ou a aceder a informação para a qual não tinha autorização de acesso;
  2. Cross Site Scripting (XSS). Falhas do tipo XSS ocorrem quando uma aplicação aceita dados que não são confiáveis, e envia-os de volta a um browser sem os ter validado nem formatado adequadamente (escaped). O XSS permite aos atacantes executar scripts no browser das suas vítimas e pode, dessa forma, raptar as sessões dos utilizadores, alterar web sites (fazer um defacement, na gíria), ou redireccionar os utilizadores para sites maliciosos;
  3. Falha na gestão de sessões e autenticação. As funções das aplicações que endereçam a gestão das sessões dos utilizadores, e que são responsáveis pela sua autenticação, são muitas vezes realizadas incorrectamente, permitindo, aos atacantes, comprometer passwords, chaves, tokens de sessão, ou explorar falhas que lhes permitem assumir a identidade de outros utilizadores;
  4. Referência directa a objectos insegura. Uma referência directa a um objecto acontece quando uma aplicação expõe uma referência para um objecto interno, e.g. um documento, uma pasta, ou uma chave de uma base de dados. Sem um controlo de acessos adequado, um atacante pode manipular estas referências e ganhar acesso a informação, sem ter autorização;
  5. Cross Site Request Forgery (CSRF). Um ataque do tipo CSRF força o browser de uma vítima que já esteja em sessão, a enviar um pedido HTTP forjado, incluindo o cookie de sessão e/ou outros dados de autenticação, a uma aplicação web que esteja vulnerável a esta classe de ataques. Esta técnica permite a um atacante forjar pedidos em nome da vítima e, assim, conduzir a aplicação a aceitá-los como legítimos;
  6. Configuração de segurança inadequada. A segurança, como um todo, depende da configuração de segurança definida para (i) a aplicação, (ii) a framework, (iii) o servidor web, (iv) o servidor aplicacional, e (v) a plataforma. Todas as parametrizações de segurança devem ser definidas, realizadas e mantidas, sobretudo porque muitas destas configurações são, por omissão, insuficientes;
  7. Falha na restrição de acesso a URLs. Muitas aplicações web verificam o direito de acesso antes de apresentarem links e botões protegidos. No entanto, as aplicações têm que realizar um controlo de acessos equivalente quando estas páginas são acedidas, caso contrário, os atacantes podem forjar URLs para aceder a estas páginas escondidas;
  8. Encaminhamento e direccionamento mal validados. As aplicações web encaminham e direccionam, frequentemente, os utilizadores para outras páginas e sites, e utilizam dados não-confiáveis para determinar as páginas de destino. Sem validação adequada, os atacantes podem encaminhar as suas vítimas para sites de phishing ou código malicioso, ou utilizar estes mecanismos de direccionamento para aceder a páginas não autorizadas;
  9. Criptografia mal protegida. Muitas aplicações não protegem adequadamente dados sensíveis (e.g. cartões de crédito e credenciais para autenticação) com mecanismos criptográficos, por exemplo, cifra ou hashes. Os atacantes podem utilizar estes dados mal protegidos para conduzir ataques de roubo de identidade, fraude com cartões de crédito, ou outros crimes; e
  10. Protecção insuficiente no nível de Transporte. Com frequência, as aplicações não cifram o tráfego de rede quando é necessário proteger comunicações sensíveis. Quando o fazem, acabam por suportar algoritmos criptográficos fracos, utilizam certificados digitais inválidos ou expirados, ou não os utilizam correctamente.

Scary, isn't it?... E para quem quiser ler os dirty details e ver uns diagramas de contexto bem feitos, o documento está disponível online e pode ser transferido a partir de www.owasp.org/...