Segurança é hoje uma das principais preocupações em TI, especialmente em desenvolvimento de software. Isso criou um grande mercado de ferramentas e produtos: USM, SOC, Firewall, IDS, Backup & Recovery, etc. Você sabe qual a falha de segurança em aplicações web mais comum? E como mitigá-la?

Tudo isso é muito importante e pode realmente ajudar a manter sua infraestrutura de tecnologia mais segura, mas não é suficiente. Quando falamos de desenvolvimento de software, especialmente o desenvolvimento de aplicações web, há algo muito mais importante e mais difícil de lidar: a qualidade dos seus algoritmos.

Vamos começar pelo básico: o ranking OWASP Top Ten. A OWASP é uma organização sem fins lucrativos que faz um trabalho fantástico em apoiar desenvolvedores web de todo o mundo na tarefa de construir aplicações seguras. De tempos em tempos, eles publicam um ranking com os 10 tipos mais comuns de falha de segurança em aplicações web. Se você tem desenvolvedores de software, ou fornecedores desenvolvendo software para você, olhar para esse ranking é uma excelente maneira de entender qual o grau de maturidade da sua empresa nesse tema.

A falha de segurança em aplicações web mais comum

Por exemplo, vamos olhar para o tipo mais comum de falha de segurança em aplicações web, a top 1: Broken Access Control. O que é isso? É uma falha de algoritmo que permite o acesso inseguro a seus dados, sua aplicação ou partes dela. Veja, por exemplo, a aplicação a seguir. Ao tentarmos acessar, é exibida uma tela de login:

Vamos fazer login com nossas credenciais de usuário:

Após o login, é exibida a seguinte tela:

Observando o endereço dessa tela, na barra de endereços do navegador, vemos que nosso nome de usuário faz parte do endereço:

Vamos simplesmente tentar trocar o nome de usuário no endereço:

Com isso, qualquer usuário do sistema poderia ver as imagens de todos os outros usuários. Vamos ver se o problema é ainda pior, clicamos em uma imagem com o botão direito do mouse e exibimos em outra aba:

Em seguida copiamos o endereço dessa imagem e abrimos em uma aba anônima:

Veja, a imagem carregou, sem nenhuma autenticação. Ou seja, um usuário do sistema não só pode ver as imagens de todos os outros usuários, mas também pode publicar em outros lugares a lista dessas imagens de maneira que qualquer um possa ter acesso.

Perceba que foi muito fácil explorar a falha de segurança nesse caso. Na maioria das vezes é um pouco mais complicado, envolvendo o uso do console do navegador e de ferramentas específicas. Mas não se esqueça que essa é a falha de segurança em aplicações web mais comum. Logo, é muito importante se assegurar de que os softwares desenvolvidos para sua empresa não são vulneráveis.

A questão é que não há uma ferramenta que efetivamente automatize a detecção de Broken Access Control. Nem que detecte uma intrusão explorando essa falha ou a bloqueie. Por quê? Broken Access Control é uma falha no próprio funcionamento do software, o algoritmo está quebrado.

E as ferramentas de análise de código? Sim, ferramentas de análise de código, estática ou dinâmica, vão detectar padrões e problemas comuns. Essas ferramentas vão ajudar para que sua equipe não deixe passar nada muito óbvio por distração. Mas não vão detectar um algoritmo quebrado.

Investir em ferramentas de segurança enquanto você tem um software com um algoritmo com problemas de segurança é como ter paredes e portas super resistentes em sua casa mas entregar a chave da porta ao ladrão.

Falamos só do primeiro item do OWASP Top Ten. Mas o problema se repete nas falhas 2, 3, 4, 7 e 10, todas elas são falhas de algoritmo. Ferramentas de análise de código até podem ajudar nos itens 3, 7 e 10, mas o trabalho especializado humano ainda é a única maneira de mitigar ou eliminar esses riscos.

O que fazer, então?

Em primeiro lugar, conscientização. Times de desenvolvimento vivem sob a pressão de prazos e escopo. É papel do líder conscientizar e conduzir o time nesse assunto. Sua mensagem tem que ser clara: segurança é importante e não podemos abrir mão dela, mesmo sob a pressão dos prazos.

Em seguida, treinamento. Uma das maiores contribuições da OWASP para os desenvolvedores é o Application Security Verification Standard, conhecido como ASVS. Trata-se de um documento com 14 seções, com recomendações e dezenas de checklists para equipes de desenvolvimento de software. É um livro com 71 páginas, com recomendações e checagens que dificilmente podem ser automatizadas.

Por isso, assegure-se de que seus times de desenvolvimento têm treinamento em segurança. Esse treinamento:

  • Precisa ser prático. Como estamos falando de algoritmos, de nada adianta um treinamento em recomendações de segurança ministrado por alguém que não é programador. É preciso que o treinamento seja feito mostrando e escrevendo código, de preferência no stack de tecnologia com que seu time trabalha.
  • Precisa ser profundo. O ASVS tem 71 páginas. Você não vai garantir segurança em suas aplicações com um treinamento de duas horas uma vez por trimestre.
  • Precisa ser periódico. Novos membros precisam ser treinados ao entrar no time. O time também precisa receber atualizações com frequência, especialmente dos problemas de segurança descobertos nas tecnologias com que trabalham.
  • Precisa ser técnico. Separe o treinamento gerencial e o técnico. Todos os seus colaboradores devem conhecer as políticas de senha, acesso e compartilhamento de conteúdo. Todos os colaboradores da área de TI devem receber treinamento sobre gestão de acessos e recursos, configurações e práticas recomendadas e o uso das suas ferramentas de segurança. Mas esses treinamentos não devem se confundir com o treinamento prático e profundo dos programadores, focado na produção de código seguro.

Por fim, invista em processos para garantir a segurança de suas aplicações. Conduza o time para a criação de processos formais de revisão e checagem de código. Promova periodicamente auditoria de código e pentests (black box e white box). É importante que os pentests, mesmo que usem ferramentas automatizadas, sejam conduzidos manualmente por um especialista capaz de entender os algoritmos dos seus sistemas e testar seus limites.

Em resumo, para ter algoritmos seguros só existe uma maneira: investir nas pessoas.

Esse texto foi útil para você? Assine nossa lista e seja avisado sempre que publicarmos algo novo, além de receber conteúdos exclusivos.