As aplicações (APPs) que todos usamos representam pontos de acesso que requerem quase sempre dados sensíveis dos utilizadores.
Preservar a segurança das aplicações deve ser uma preocupação permanente das organizações que as utilizam e desenvolvem. Para isso, é importante conhecer os seus pontos mais vulneráveis e estar alerta quanto a eventuais falhas.
Principais Vulnerabilidades da Segurança Aplicacional
1. Monitorização ou logging insuficientes
É sempre importante ter uma noção abrangente sobre como estão a ser usadas as APPs, respondendo a questões:
- Quem está?
- O que fez?
- Quando fez?
- Onde fez?
- De que forma fez?
Por outro lado, os mecanismos de logging e monitorização devem ser os adequados à criticidade das nossas soluções.
2. Cross-Site Scripting (XSS)
Significa que ao importar scripting de um website remoto para a nossa APP ele terá uma interação direta com o conteúdo da aplicação. Isto pode expor algumas áreas da aplicação de modo não controlado, o que aporta riscos significativos.
3. Injeção de código
Um dos maiores riscos de segurança a que hoje qualquer solução de software está sujeita é a injeção de código, quer seja em HTML, Javascript ou SQL.
4. Quebras na autenticação
Mecanismos que adulteram informação relacionada com os dados sensíveis do utilizador a partir do momento em que este acede à aplicação.
5. Quebras no controlo de acessos
Determinadas funcionalidades das aplicações podem ver o seu acesso comprometido por falhas na segurança.
6. Exposição de dados sensíveis
Exposição de informação em determinados pontos das APPs que não deveria estar visível, como credenciais de acesso ou algum tipo de dados pessoais do utilizador.
7. Entidades expostas em formato XML
Erros nas configurações de segurança podem expor entidades em formato XML que não deveriam estar acessíveis.
8. Falhas em configurações de segurança
Erros em certas definições podem constituir falhas graves de segurança.
9. Desserialização incorreta de dados
Ocorre quando as aplicações importam informação de forma incorreta e insegura, o que pode comprometer o seu normal funcionamento.
10. Componentes com vulnerabilidades conhecidas
Deve sempre haver cautela na utilização de componentes externos à nossa solução. Se forem identificadas vulnerabilidades, o ideal será não os usar ou acautelar essas situações para que não comprometam a aplicação.
Boas Práticas no Desenvolvimento Aplicacional
Conhecer as possíveis vulnerabilidades de uma APP é o ponto de partida essencial antes de avançar para a sua criação. Essas informações tornam-se valiosas para desenvolver as aplicações e reforçar a segurança aplicacional onde for mais necessário.
Na fase de desenvolvimento da aplicação, há algumas boas práticas que devem ser tidas em conta pelas equipas de desenvolvimento:
1. Aplicar os princípios gerais de segurança
Em termos de segurança de aplicações, sempre que recorram a uma base de dados para funcionar, o utilizador final deve ter um acesso limitado aos mesmos. Não deve conseguir criar nem eliminar dados, por exemplo.
É essencial manter um histórico de dados e de acessos para, em caso de problemas ou de perturbação desses dados, se identificar rapidamente a origem do problema.
2. Não confiar a 100% no utilizador
No acesso a uma APP, é importante confirmar se quem está a tentar aceder é de facto quem diz ser.
As credenciais básicas de username e password deixam de ser suficientes. A autenticação multifator é exigida em cada vez mais aplicações, principalmente nas que envolvem dados sensíveis.
3. Garantir o Profiling
No desenvolvimento de qualquer aplicação há que gerar uma hierarquia adaptada a cada situação para garantir (by design) que nem todos os utilizadores podem ver e aceder aos mesmos dados. Através de um método de profiling, cada utilizador deve ter um perfil e cada perfil só deve ter acesso a um determinado conjunto de funcionalidades da aplicação.
4. Manter um histórico
É importante que os sistemas que integram uma aplicação mantenham um registo dos acessos e ações dos utilizadores a cada momento.
Este cuidado é tanto mais importante quanto mais sensível ou confidencial for a natureza dos dados em questão. Assim, caso haja algum problema com essas informações será mais fácil identificar a origem do problema.
5. Prevenir o Cross-Site Scripting
O XSS é uma das mais frequentes vulnerabilidades de uma aplicação. Basicamente, para contornar um bloqueio principal, o utilizador altera o interface através da edição de dados numa página web específica. Dessa forma, consegue dar instruções às quais a aplicação não deveria responder.
Para evitar estas situações, há que perceber por onde os dados passam e prevenir estes trajetos alternativos.
Cumprir as boas práticas de segurança no desenvolvimento de APPs é o caminho certo para que, mais tarde, aquando da sua normal utilização, surjam menos problemas a este nível.