O que são testes de segurança de aplicações?

O desenvolvimento de aplicações, sejam elas internas ou produtos e desenvolvidas para desktop, web ou mobile têm cada vez mais ênfase em segurança. E algumas empresas ou organizações têm também necessidades específicas. Bancos, fintechs e empresas de comércio eletrônico por exemplo, tem grande regulação e precisam seguir rígidas normas de segurança devido à quantidade e natureza dos dados que armazenam. Os testes de segurança de aplicações são realizados para determinar se uma aplicação é vulnerável à ataques. São executados através de técnicas manuais e automatizadas utilizando diferentes metodologias. Entre as mais utilizadas temos:

SAST - Static Application Security Testing

O Teste de Segurança de Aplicação Estático é classificado como um teste de caixa branca. Neste tipo de teste temos acesso ao código fonte da aplicação, o que não é possível na maioria dos ataques reais. As ferramentas de SAST podem ter integração com o SDLC (ciclo de vida de desenvolvimento de sistemas) ou outras ferramentas de CI/CD (integração contínua / entrega contínua), geralmente são simples de implantar e requerem poucos ajustes e customizações. Por se tratar de uma abordagem muito mais teórica do que pratica, ferramentas de SAST produzem mais casos de falsos positivos, geram muitos alertas para pequenas falhas e detectam vulnerabilidades inexploráveis, porém são parte importante no ciclo de desenvolvimento seguro. Integradas no ambiente de desenvolvimento, essas ferramentas podem prevenir que desenvolvedores cometam erros que produziriam falhas de segurança, ajudando-os a evitar os mesmos erros no futuro. As melhores ferramentas de SAST oferecem feedback que ajuda os desenvolvedores a utilizar padrões seguros de desenvolvimento e evitar bibliotecas inseguras ou pouco atualizadas, além de explicar como corrigir vulnerabilidades em potencial. Pela facilidade de uso, as ferramentas de análise estática ajudam desenvolvedores a detectar vulnerabilidades com mais agilidade e garantir conformidade com diretrizes internas de desenvolvimento antes da aplicação ser implantada. E o lugar mais barato para detectar vulnerabilidades é no início do ciclo de desenvolvimento seguro.

DAST - Dynamic Application Security Testing

Simulando um ataque real, temos o Teste de Segurança Dinâmico. Nesta técnica de teste de caixa preta o código da aplicação e os detalhes da aplicação não são fornecidos. Por ser uma abordagem mais prática, seus resultados geralmente rendem menos falsos positivos quando comparados ao SAST, entretanto uma base de conhecimentos de segurança é necessária para a interpretação dos resultados. Ferramentas de análises dinâmicas oferecem vantagens para as equipes de segurança ao trazerem agilidade na detecção de vulnerabilidades exploráveis. DAST é algo aplicado quando se tem uma versão executável do seu produto ou serviço, por isso grupos de desenvolvimento e equipes de segurança podem construir uma fase pre-release para executar testes dinâmicos e detectar vulnerabilidades exploráveis antes que elas cheguem em produção. O objetivo aqui não é apontar todas as vulnerabilidades, mas sim as que são potencialmente exploráveis já que nem todas as vulnerabilidades estão disponíveis para os atacantes e algumas vulnerabilidades não são ameaças. Testes podem levar algum tempo para serem realizados, interpretar os resultados destes testes e produzir relatórios que expliquem e ajudem os desenvolvedores a resolver os problemas encontrados pode levar ainda mais tempo. E tempo é um fator importante para grupos seguindo DevOps como modelo de desenvolvimento e entrega.

IAST - Interactive Application Security Testing

As ferramentas de Teste de Segurança de Aplicação Interativas combinam as características das ferramentas estáticas e dinâmicas. IAST também se utiliza de agentes e bibliotecas adicionais para coletar e analisar dados enquanto a aplicação é executada, podendo assim revelar vulnerabilidades conhecidas, tipos de licenças, utilização de componentes de código aberto ou de terceiros além de outros riscos em potencial. Modificando a aplicação em tempo de execução, a análise interativa pode analisar os efeitos que o DAST exerce sobre a aplicação e detectar vulnerabilidades que uma análise dinâmica sozinha não conseguiria. Devido a sua natureza invasiva, IAST não deve ser usado em ambientes de produção, mas assim como o SAST, pode ser integrado ao SDLC, apresenta resultados em tempo real e a detecção contínua possibilita o uso com as práticas de DevOps. Ainda que não seja um substituto para as análises dinâmicas ou aos testes de invasão, é um grande aliado para encontrar vulnerabilidades nas primeiras fases do desenvolvimento, onde é mais fácil, rápido e barato de corrigi-las.  

Desenvolvimento Seguro

Tradicionalmente, a segurança de uma aplicação só é verificada quando o desenvolvimento já está concluído, o que gera atrasos e pode aumentar muito os custos de desenvolvimento. Porém a facilidade de se automatizar os testes de segurança permite o DevSecOps. Com a segurança sendo levada em conjunto do desenvolvimento ao invés de ser acionada apenas no final do ciclo, aplicações podem ser entregues com mais segurança e agilidade.