Riscos nas aplicações web: os 10+ segundo a OWASP

Por Miguel Almeida (*)

A utilização de aplicações na Internet, cada vez maior, e a importância da informação manipulada e guardada nos repositórios online, aumentaram a necessidade de protecção destes activos, em face de novas ameaças, também elas crescentes.
Os controlos que visam satisfazer os requisitos de protecção desta informação, ao nível das aplicações, têm que garantir a sua integridade, a sua confidencialidade e, também, a disponibilidade dos serviços que a suportam.

Na prática, estes requisitos são endereçados por controlos técnicos e processuais que, em traços muito gerais, procuram (i) identificar e autenticar os utilizadores legítimos das aplicações, (ii) controlar o acesso à informação, ou seja, permitir a leitura e escrita desta informação exclusivamente às pessoas autorizadas, (iii) registar as operações realizadas para suportar acções de monitorização activa e auditoria, (iv) garantir que os dados em trânsito na Internet, e guardados em bases de dados, não são facilmente violáveis, (v) defender a infra-estrutura e aplicações contra situações que provoquem a sua indisponibilidade e quebra de desempenho, e, finalmente, (vi) capacitar as organizações de meios de recuperação após a eventual ocorrência - possível - de incidentes de segurança graves ou desastres.

[caption]Nome da imagem[/caption]
Apesar do esforço colocado no desenvolvimento destes controlos, um esforço reconhecido (!), e da evolução que podemos observar na qualidade das aplicações web, ainda conseguimos encontrar, infelizmente, muitas soluções cujos mecanismos de controlo são vulneráveis, são ultrapassáveis, e podem ser subvertidos para permitir o acesso e manipulação de sistemas, aplicações e informação confidencial.

A OWASP, no âmbito do seu trabalho, desta feita na componente de divulgação e consciencialização para estes problemas, identificou e classificou um conjunto de 10 riscos nas aplicações web actualmente activas, associados a vulnerabilidades nestes controlos. Os próximos parágrafos irão apresentá-los, sucintamente, com o objectivo de alertar para a necessidade de reforçar os controlos de segurança e, assim, mitigar ou eliminar os riscos consequentes. Os 10+ são os seguintes:


  1. Acesso e manipulação de sistemas e bases de dados, através da injecção directa de comandos enviados à aplicação. Algumas aplicações contêm falhas, ao nível da avaliação e filtragem dos dados que recebem, que permitem o envio de comandos que serão executados nos servidores que as suportam. Estes comandos podem ser dirigidos às bases de dados (injecção de comandos em Structured Query Language - SQL), aos directórios internos (comandos sobre Lightweight Directory Access Protocol - LDAP), ou directamente ao sistema operativo (através de comandos que serão executados por um interpretador, e.g. por uma shell). A execução destes comandos pode permitir a leitura e escrita de informação, e o controlo de serviços e sistemas, acções para as quais os atacantes não teriam autorização;
  2. Acesso e manipulação de sessões, pelo envio de comandos dirigidos aos browsers dos utilizadores, em nome da aplicação. Quando as aplicações não verificam e filtram adequadamente os dados que recebem e retransmitem, tornam possível uma classe de ataques designada por Cross-Site Scripting (XSS). Nestes cenários, os atacantes convidam os utilizadores a seguir uma referência dirigida à aplicação real (por exemplo, através de um email), mas o resultado que é apresentado pela aplicação vem adulterado porque, a referência que foi utilizada para aceder à página da aplicação foi manipulada para executar comandos no browser do utilizador (por exemplo, comandos em Javascript). A execução destas instruções no browser pode ser utilizada, por exemplo, para capturar e utilizar a sessão do utilizador. Como a referência utiliza a aplicação verdadeira, os utilizadores não se apercebem que estão a ser manipulados;
  3. Subversão dos mecanismos que controlam a autenticação e as sessões dos utilizadores. 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 algumas vezes realizadas incorrectamente e permitem, aos atacantes, comprometer passwords ou chaves de controlo de sessão e, dessa forma, assumir a identidade de outros utilizadores;
  4. Acesso directo a documentos por falha no controlo de acessos. Sempre que as aplicações expõem referências para objectos internos (e.g. documentos), sem terem controlos de acesso associados a essas referências, um atacante pode manipulá-las e ganhar acesso a informação, sem ter autorização. Dito de outra forma, quando o único mecanismo de controlo é o conhecimento do endereço para um destes objectos, uma vez que seja conhecida uma referência (ou a forma de construir essa referência), o controlo deixa de ser efectivo e o acesso torna-se indiscriminado;
  5. Manipulação dos utilizadores e execução de operações na aplicação, não confirmadas, em seu nome. Se uma aplicação aceita ordens de execução de operações sem confirmação dos utilizadores, aceitando apenas os controlos de sessão activos após a sua autenticação, pode ser alvo de um ataque do tipo Cross-Site Request Forgery (CSRF). Apenas como exemplo, se um utilizador abrir uma sessão numa aplicação e se dirigir, enquanto mantém a sessão activa, a uma página maliciosa que contenha uma referência que execute uma operação nessa aplicação, se o utilizador seguir essa referência, o comando irá ser executado, em seu nome, uma vez que a aplicação não solicita uma confirmação explícita;
  6. Acesso e manipulação de sistemas, serviços e bases de dados cujos controlos estejam mal parametrizados. A segurança de uma solução, como um todo, depende das configurações de segurança definidas para (i) a aplicação, (ii) os programas e bibliotecas que a suportam (a framework), (iii) o servidor web, (iv) o servidor aplicacional, e (v) o sistema operativo. Quando as parametrizações de segurança não são definidas, concretizadas e mantidas adequadamente, existe o risco de subversão dos controlos em alguma (ou em várias) destas componentes e ser possível aceder e manipular a informação e os sistemas;
  7. Acesso directo a documentos por ausência de controlo de acessos. Muitas aplicações web verificam o direito de acesso a um recurso antes de apresentarem referências e botões protegidos. No entanto, se as aplicações não realizarem um controlo de acessos equivalente quando estas páginas forem efectivamente acedidas, os atacantes podem forjar referências directas e, assim, aceder a estes recursos escondidos;
  8. Encaminhamento dos utilizadores para páginas maliciosas. As aplicações web encaminham e direccionam, com frequência, os utilizadores para outras páginas e sites, mas utilizam dados que não são fidedignos para determinar as páginas de destino. Sem uma validação adequada dos dados recebidos e retransmitidos, ao nível da aplicação, os atacantes podem aproveitar estas falhas para encaminhar as suas vítimas para sites de phishing ou código malicioso;
  9. Acesso a informação sensível que não esteja protegida por cifra (ou protegida por cifra inadequada) nas bases de dados. Muitas aplicações não protegem adequadamente dados sensíveis (e.g. números de cartões de crédito e credenciais para autenticação) com mecanismos criptográficos. Se um atacante conseguir ler estes dados, como estão mal protegidos, poderá conduzir ataques de roubo de identidade, fraudes com cartões de crédito, ou outros crimes; e, finalmente,
  10. Acesso a informação sensível que não seja protegida enquanto atravessa a Internet. Com frequência, as aplicações não cifram o tráfego na 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. A informação que é transmitida entre o browser dos utilizadores e a aplicação, se não for protegida por controlos criptográficos adequados, pode ser observada e manipulada enquanto viaja na Internet.

Esta lista não inclui a totalidade de problemas que podemos encontrar nas aplicações web, e que podem constituir riscos elevados para os indivíduos e para as organizações - inclui aqueles que, da perspectiva da OWASP, são os mais graves que podemos encontrar nas aplicações actuais.

A necessidade - cada vez mais urgente - de reforçar as aplicações e mitigar estes riscos é uma preocupação constante no espírito dos profissionais de segurança. A OWASP, sendo uma organização que visa promover a segurança nas aplicações web, tem patrocinado diversos projectos que vão ao encontro desta necessidade, incluindo, projectos que visam a detecção de vulnerabilidades, as boas práticas de segurança no desenvolvimento aplicacional, e as revisões do código-fonte das aplicações, entre outros.

A informação sobre estas iniciativas está disponível online e, naturalmente, a OWASP convida-os a consultarem os documentos e participarem nestes projectos. A referência? Por aqui: www.owasp.org.

(*) membro da OWASP (Open Web Application Security Project) e Consultor Independente de Serviços de Segurança da Informação
www.miguelalmeida.pt