Melhores práticas de segurança em aplicações web

Melhores Práticas de Segurança em Aplicações Web

 

Se você está lendo este artigo, provavelmente está bem ciente da importância da segurança em aplicações web. É possível que você já tenha colocado em prática algumas medidas mencionadas aqui. Mas, como muitos proprietários de websites, apps e lojas virtuais, provavelmente não fez o suficiente para cobrir todas as áreas necessárias.

 

Se o seu site já foi afetado por algum tipo de ataque DDoS, ou se você leu a respeito do grande ataque quem a empresa Dyn sofreu no final de 2016 derrubando milhares de sites relevantes, então você sabe que esta é uma grande preocupação. Como mostrado no gráfico abaixo, o número de ataques DDoS têm crescido consistentemente ao longo dos últimos anos e a tendência é que isso continue piorando.

 

ddos evolutionfonte

 

Quer saber o tamanho do problema? Tem um site que monitora os DDoS em tempo real:

http://www.digitalattackmap.com/#anim=1&color=0&country=ALL&list=0&time=17273&view=map

 

Ataques DDoS ocorrem na camada de rede, são por natureza volumétricos (em sua maioria) e dependem do seu provedor de hospedagem ou datacenter para serem apropriadamente mitigados. Normalmente, quando ocorrem, os provedores de infraestrutura tomam as providências necessárias para restabelecer o serviço.

Subindo alguns níveis no modelo OSI, voltemos à camada de aplicação. Embora não haja maneira de garantir 100% de segurança, pois é impossível prever tudo, existem medidas que podem ser utilizadas para reduzir as chances de ocorrência de problemas de segurança em aplicativos web. Quanto mais destas medidas forem tomadas simultâneamente, mais protegida estará sua aplicação.

 

 

Criar um plano de segurança para aplicações web

 

O primeiro passo para assegurar-se que você está utilizando as melhores práticas de segurança para aplicações web é ter um plano traçado. Com frequência as empresas adotam uma abordagem desorganizada para esta situação e acabam realizando muito pouco. Sente-se com sua equipe de segurança de TI para desenvolver um plano de segurança detalhado e acionável. É importante que este plano esteja alinhado com os objetivos da sua organização.

 

Por exemplo, talvez você queira melhorar seu compliance, ou talvez você precise proteger sua marca. É necessário priorizar quais aplicativos devem ser protegidos primeiro e como eles serão testados. Você pode optar por fazê-lo manualmente, através de uma solução em nuvem, através de software específico, de um provedor de serviços gerenciados ou por outros meios.

 

Embora o plano de segurança e a lista de verificação de cada empresa sejam diferentes e dependam da arquitetura de sua infraestrutura, é importante que você defina especificamente quais os requisitos de segurança a serem atendidos e os critérios para avaliação. A OWASP (Open Web Application Security Project), grupo especializado em segurança online, criou um checklist bem detalhado que você pode utilizar como base para a sua avaliação – link.

 

Além disso, se sua organização é grande o suficiente, seu plano deve relacionar os indivíduos dentro da organização que serão responsáveis pela manutenção contínua dessas melhores práticas. Finalmente, não se esqueça de levar em conta os custos em que sua organização incorrererá ao engajar essas atividades, pois este pode ser um fator decisivo na hora de priorizar.

 

Realizar um inventário das suas aplicações web

 

É provável que você não tenha uma ideia muito clara sobre quais aplicativos web sua empresa utiliza. Na verdade, a maioria das organizações tem muitos aplicativos “rogue” rodando sem saber, até que algo dê errado. Você não pode esperar manter uma boa política de segurança em aplicações web sem mapear detalhadamente quais aplicativos sua empresa utiliza.

 

Quantos são? Onde estão localizados? Executar esse inventário pode ser uma tarefa trabalhosa e é provável que leve algum tempo até sua conclusão. Ao fazê-lo, anote a finalidade de cada aplicação. Quanto maior a organização, maiores as chances de encontrar aplicações redundantes ou até mesmo inúteis. O inventário virá a calhar para as próximas sugestões, por isso invista o tempo necessário e certifique-se de obter os detalhes de cada aplicação utilizada.

 

Priorize suas aplicações web

 

Depois de concluir o inventário de seus aplicativos web, classificá-los em ordem de prioridade é o próximo passo lógico. Sem priorizar quais aplicativos focar primeiro, você terá dificuldade em fazer qualquer progresso significativo.

 

Classifique as aplicações em três categorias:

 

  • Crítico
  • Importante
  • Normal

 

As aplicações críticas são principalmente aquelas que podem ser acessadas externamente e contém informações de clientes. Estas são as aplicações que devem ser geridas em primeiro lugar, pois são as mais suscetíveis como alvos a serem exploradas por hackers. As aplicações importantes podem ser de uso interno ou externo e podem conter algumas informações confidenciais. Aplicações normais têm muito menos exposição, mas devem ser incluídas em testes por precaução, mesmo que em um segundo momento.

 

Categorizando suas aplicações assim você pode focar testes extensivos nas aplicações críticas e usar testes menos complexos (e caros) nas demais. Isso permite que você faça o uso mais eficaz dos recursos da empresa ao mesmo tempo em que pode alcançar resultados significativos com maior velocidade.

 

Priorizar Vulnerabilidades

 

Conforme você avalia sua lista de aplicativos web antes de testá-los, é necessário decidir quais vulnerabilidades valem a pena eliminar e quais não são tão preocupantes. A maioria das aplicações web tem muitas vulnerabilidades. Por exemplo, dê uma olhada no relatório abaixo, que avaliou e categorizou 9000 sites infectados:

 

hacked appsfonte

 

Eliminar todas as vulnerabilidades de todas as aplicações web não só não é possível como nem mesmo vale o seu tempo.

 

Mesmo depois de categorizar suas aplicações de acordo com a importância, será necessário um investimento considerável de recursos para analisá-las. Limitando os testes apenas às vulnerabilidades mais ameaçadoras, você economizará muito tempo e fará o trabalho muito mais rápido. Quanto à determinação das vulnerabilidades a serem focadas, isso realmente depende das aplicações que você está usando. Existem algumas medidas de segurança padrão que devem ser implementadas (discutidas mais adiante), porém vulnerabilidades específicas de aplicativos precisam ser pesquisadas e analisadas.

 

Mantenha em mente também que, à medida que o teste evolui, você pode perceber que ignorou certas questões importantes. Não tenha medo de interromper os testes para redefinir prioridades ou focar em vulnerabilidades adicionais. Lembre-se que no futuro este trabalho será muito mais fácil, pois será iterativo, o esforço inicial é o mais trabalhoso.

 

Executar aplicativos usando o mínimo de privilégios

 

Mesmo depois que todas as suas aplicações web forem avaliadas, testadas e sanitizadas contra as vulnerabilidades mais problemáticas, você não está a salvo. Cada aplicativo web possui privilégios específicos em computadores locais e remotos. Esses privilégios podem, e devem, ser ajustados para aumentar a segurança. Sempre use as configurações menos permissivas para todas as aplicações web. Isso significa que as aplicações devem ser “amarradas”. Somente pessoas com autorizações de alto nível devem poder fazer alterações no nível de sistema.

Este é um fator a ser considerado em suas avaliações iniciais, caso contrário você terá que repassar toda a lista ajustando as permissões de acordo. Para a vasta maioria das aplicações apenas os administradores de sistemas necessitam de acesso completo. A maioria dos outros usuários pode realizar o necessário com configurações minimamente permissivas. No caso improvável em que privilégios são ajustados incorretamente para um aplicativo e certos usuários não podem acessar os recursos de que precisam, o problema pode ser tratado pontualmente. É muito melhor ser demasiado restritivo nesta situação do que ser demasiado permissivo.

 

Proteja-se mesmo durante o processo de avaliação

 

Mesmo uma empresa pequena e simples pode levar semanas – ou até meses – para listar seus aplicativos web e fazer as alterações necessárias. Durante esse período o negócio pode estar vulnerável a ataques, portanto é crucial utilizar as ferramentas adequadas para evitar maiores problemas. Para isso existem algumas opções:

 

  • Remover funcionalidades de determinados aplicativos: se a funcionalidade torna o aplicativo mais vulnerável a ataques pode valer a pena restringir o seu uso.
  • Use um WAF (Web Application Firewall) para proteção contra as vulnerabilidades mais preocupantes.

como funciona wafO firewall de aplicação web filtra e obstrui tráfego HTTP indesejável e ajuda a blindar contra XSS, SQL injection e muito mais.

 

Durante todo o processo as aplicações web existentes devem ser monitoradas continuamente, para assegurar que não estão sendo violadas por terceiros. Se sua empresa, ou site, sofre um ataque durante este período, identifique o ponto fraco e faça a correção antes de continuar com o processo de checagem e sanitização. Você deve adquirir o hábito de documentar cuidadosamente as vulnerabilidades e como elas devem ser tratadas, para que as ocorrências futuras possam ser solucionadas de forma mais rápida e eficaz.

 

Use cookies de forma segura

 

Outra área que muitas organizações não aborda cuidadosamente é o uso de cookies. Os cookies são incrivelmente convenientes, tanto para empresas quanto para usuários. Eles permitem que os usuários sejam lembrados pelos sites que visitam, para que visitas futuras sejam mais rápidas e, em muitos casos, mais personalizadas. No entanto, cookies também podem ser manipulados por hackers para obter acesso a áreas protegidas. Apesar de não ser necessário interromper completamente o uso de cookies – o que seria um grande retrocesso em muitos aspectos – é necessário fazer ajustes a fim de minimizar o risco de ataques.

 

  1. Nunca use cookies para armazenar informações altamente sensíveis ou críticas, por exemplo não use cookies para lembrar as senhas dos usuários, pois isso facilita muito aos hackers a obtenção de acesso não autorizado.
  2. Você também deve ser conservador ao definir o prazo de expiração para os cookies. Claro, é bom saber que um cookie permanecerá válido para um usuário por meses, mas a realidade é que cada cookie representa um risco de segurança e quanto mais tempo durar, maior o tempo de exposição ao risco.
  3. Finalmente, considere criptografar as informações armazenadas nos cookies que você usa, isto já vai dificultar muito o uso de forma maliciosa.

 

Implementar as seguintes sugestões de segurança web

 

Além do que já mencionamos, existem algumas outras sugestões de segurança de aplicações mais “imediatas” que você pode implementar:

 

  • Utilize HTTPS e redirecione todo o tráfego HTTP para HTTPS;
  • Evite ataques de cross-site-script (XSS) usando o cabeçalho de segurança x-xss-security;
  • Implemente uma política de segurança de conteúdo;
  • Nunca é demais lembrar, use senhas fortes que empregam uma combinação de letras minúsculas e maiúsculas, números e símbolos especiais, etc.

 

Conduzir Treinamentos para Conscientização de Segurança em Aplicações Web

 

Em uma empresa, são grandes as chances de que apenas um punhado de pessoas compreenda a importância da segurança em aplicações web. A maioria dos usuários tem apenas a compreensão mais básica do problema e isso pode torná-los descuidados. Usuários sem instrução não conseguem identificar apropriadamente os possíveis riscos de segurança. Em essência, educar a todos sobre segurança em aplicações web é uma ótima maneira de envolver a organização no ato de encontrar e eliminar vulnerabilidades. Com isso em mente, considere a possibilidade de trazer um especialista em segurança de aplicativos web para conduzir treinamentos de conscientização aos seus funcionários. Isso é muito importante para ajudar na implementação e manutenção das melhores práticas.

Manter as melhores práticas de segurança em aplicativos web é um esforço de equipe. Sua segurança como um todo é limitada ao elo mais fraco, seja sistema ou membro da equipe. Mantenha isso em mente e busque identificar constantemente o elo mais fraco a fim de fortalecê-lo.