A execução de pentests periódicos garante a segurança das aplicações?
Continuous AppSec Vs Pentest: afinal de contas, quais as vantagens de cada um deles e qual é melhor para manter as aplicações seguras?
Se você já se fez esta pergunta, trazemos aqui algumas reflexões importantes para considerar antes de buscar a resposta definitiva.
Prefere ouvir a versão em áudio deste artigo? Utilize o player abaixo:
Podemos dizer que hoje a grande maioria dos negócios tem seu core fortemente baseado em software.
Então, não é nenhuma surpresa que quando existe um problema de segurança em uma aplicação, são grandes os impactos em um determinado negócio.
Em tempos de leis, normas e outras regulamentações que exigem mais segurança nas aplicações, ainda temos muita dúvida pairando sobre assuntos relacionados a segurança de aplicações.
Uma destas discussões é quando falamos na adoção de modelos de Continuous Application Security em substituição ao uso de testes pontuais, como por exemplo os pentests.
Vamos entender um pouco mais sobre cada um deles.
O que é Continuous Application Security
O conceito de Continuous Application Security traz fortemente consigo o pensamento de integração de ferramentas de segurança no processo de CI/CD.
Quando falamos sobre CI/CD, nos referimos ao pipeline de desenvolvimento com Continuous Integration/Continous Development. Ou seja, trata-se de um modelo de desenvolvimento que requer um olhar mais cuidadoso para gerenciar o desenvolvimento, considerando que é um ciclo de desenvolvimento que se dá de maneira mais rápida e dinâmica.
O processo de hardening de CI/CD envolve rastrear as mudanças de ponta a ponta, o que pode ser bastante desafiador quando se trata de softwares que já se encontram em produção.
Então, o que acaba acontecendo é que quanto mais soluções são colocadas na esteira de desenvolvimento – como containers, microsserviços e outros – mais precisamos automatizar os processos e integrar as ferramentas.
Sem estes cuidados estamos fadados a encontrar em nossos processos de desenvolvimento pontos que com certeza serão considerados gargalos, colocando em cheque a agilidade que o desenvolvimento necessita hoje.
Por fim, quando partimos para cenários mais amplos, podemos considerar que o uso de processos de segurança em equipes já integradas à metodologia de DevOps, temos o uso de DevSecOps como modelo de desenvolvimento.
E quando falamos em processos de segurança, nos referimos tanto a ferramentas automatizadas quanto a etapas executadas manualmente por analistas e desenvolvedores.
Então, é justo neste ponto temos que ter atenção redobrada para fazer a relação entre os processos escolhidos para promover a segurança do software.
Isso porque o uso de ferramentas de segurança para analisar e corrigir a aplicação por si só, com o objetivo de adicionar segurança no processo de desenvolvimento, não pode ser considerado o mesmo que DevSecOps.
Usar a abordagem DevSecOps vai muito além do uso de ferramentas para tornar aplicações mais seguras: é preciso uma mudança de postura e de cultura, e isso não se faz somente com ferramentas.
Análises SAST e DAST Vs Pentest
Podemos citar, como um comparativo similar entre Continuous AppSec Vs Pentest, os testes estáticos e dinâmicos realizado durante o processo de desenvolvimento, por exemplo.
Em um modelo onde há continuidade de etapas seguras dentro do processo de desenvolvimento, é importante a realização tanto do SAST (Static Application Security Tests) quanto do DAST (Dynamic Application Security Tests): eles acontecem em etapas distintas.
Enquanto o SAST é realizado para garantir a segurança do código, sendo feito diretamente no repositório, os testes DAST são realizados em uma fase mais avançada, onde a aplicação é colocada em operação para ser testada.
E isso vale também para quando pensamos em realizar um Pentest. Estes dois tipos de testes não podem ser considerados como soluções isoladas para o problema de segurança de uma aplicação.
O uso destes testes, assim como outros recursos, torna o processo de desenvolvimento mais seguro, mas separados são apenas pontos isolados que ajudam mas não resolvem.
Afinal, tanto no caso do Pentest quanto no caso do uso de ferramentas de análise automatizada, são gerados apontamentos de vulnerabilidades que precisam ser validadas e corrigidas. E este processo pode levar meses para acontecer, ou pode ainda nunca acontecer.
E isso para não mencionar que no caso dos scans de vulnerabilidade os resultados apontados podem ser em números altos e repletos de falsos-positivos e até mesmo falsos negativos – que são bem mais graves.
Ou seja, trabalhar no desenvolvimento seguro desde a raiz do desenvolvimento sempre é a alternativa que apresenta melhor custo-benefício se considerarmos os resultados a longo prazo.
O uso de Continuous Application Security é um processo, um conjunto de recursos que quando implementados trazem uma mudança na forma como os desenvolvedores trabalham.
O resultado da implementação de um processo de Continuous Application Security é um software mais maduro, mais seguro desde o seu nascimento.
Mas afinal, o que é um Pentest?
Muito se romantiza a respeito da realização deste tipo de teste, e é preciso reconhecer que ele pode sim gerar um impacto positivo, desde que executado dentro de um processo definido e organizado.
No entanto, o Pentest pode também acabar levando as empresas a uma falsa sensação de segurança quando realizado como um teste que poderá mostrar todas as fragilidades de uma aplicação.
Então, podemos entender que cada tipo de teste tem sua importância e seus benefícios e é necessário entender como cada um age para ter um aproveitamento mais produtivo e eficiente e saber o momento certo de aplicar cada tipo de teste.
É importante ressaltar que quando fazemos a comparação de Continuous AppSec Vs Pentest ambos estão, na verdade, relacionados.
Isso porque O Pentest é um tipo de teste que deve ser executado preferencialmente dentro do processo de Continuous Application Security, idealmente em fases finais, de forma que seja possível observar a segurança de uma aplicação já em produção.
Ao realizarmos testes de intrusão (Pentests), temos como premissa que a aplicação a ser testada já está operacional e que podemos verificar se os requisitos de segurança planejados e implementados estão sendo eficientes para manter a aplicação segura.
Testes de intrusão podem ser executados de forma totalmente manual. Normalmente estes testes são realizados com o auxílio de ferramentas, que são usadas para dar suporte ao analista de forma que ele possa ganhar escala e a ter uma execução mais eficiente.
Mas veja: as ferramentas devem ser encaradas como suporte, apoio ao processo. Afinal, é a perícia e o conhecimento do analista que irão determinar o sucesso ou não do teste.
Conheça os 3 tipos de Pentests
Quando falamos em modalidades de Pentests, podemos considerar que os testes de intrusão são realizados de 3 formas básicas, as quais explicaremos abaixo.
A primeira forma é chamada de white box, e neste tipo de teste o analista que realizará o teste recebe todas informações com privilégio de administrador para a realização do teste como URL, login e senha.
Este tipo de teste tem como finalidade, além de identificar as vulnerabilidades que podem estar presentes na aplicação, ir de forma mais profunda no alvo, pois já possui as informações relevantes para fazer login, sem precisar inferi-las.
Um segundo modelo de teste é o black box, onde o atacante não possui informação alguma sobre o alvo. Neste tipo de teste o atacante irá se comportar de forma similar a um atacante real, buscando descobrir suas fragilidades sem qualquer informação.
O terceiro tipo de teste é o gray box, um misto entre os dois modos anteriores. Neste o atacante possui algumas informações e pode seguir alguns caminhos já conhecidos. Isso pode ajudar na avaliação de partes específicas da aplicação.
O importante é entendermos que cada um destes tipos de Pentest possui vantagens e desvantagens. É preciso que o teste seja realizado dentro do um padrão que traga as informações e visões desejadas pela empresa.
E claro, é necessário destacar que a realização dos testes deve ser feita por uma equipe com o conhecimento técnico adequado e que esteja livre de interferências das equipes de desenvolvimento.
Quais os benefícios de Continuous AppSec Vs Pentest?
Vimos acima as principais diferenças entre Continuous Application Security e testes de segurança com uso de ferramentas suportando analistas a fazerem tentativas de ataque (Penetration Testing).
Mas para que possamos entender melhor quais são os benefícios de cada um, temos que entender em que situação devemos usar cada um deles.
Bom, você já deve ter percebido que quando falamos de Continuous Application Security estamos falando de um modelo bem maior, que inclusive aborda a realização de pentests.
Se já entendemos isso, fica mais fácil percebermos as vantagens.
O principal e mais básico benefício do uso de um processo de Continuous Application Security é que este é bem mais estruturado e distribuído durante todo o processo de desenvolvimento, e não somente no final do pipeline.
Como processo, ele precisa ser suportado por uma série de ações, recursos e – no caso de desenvolvimento – ferramentas que possibilitem a automação de grande parte do processo.
Essa automação e uso de ações relacionada a segurança em todo o processo trazem como resultado final um produto mais maduro e seguro, pois passou por avaliações em todo o seu ciclo de desenvolvimento.
Aderir a um programa de Continuous Application Security é garantir que a segurança da aplicação será tomada como prioridade desde o surgimento dela.
E isso não significa que o Pentest não tenha o seu valor: a realização de testes de segurança também têm sua importância e seu momento.
Quando pensamos em realizar Pentests, ou testes de intrusão, pensamos em avaliar uma aplicação que está na etapa final de seu processo de desenvolvimento.
Isso porque a realização de pentests mostra não só para os desenvolvedores, mas também para todos os envolvidos no processo de desenvolvimento e segurança da aplicação, quais vulnerabilidades podem ser identificadas na finalização da aplicação.
Então podemos entender que o pentest tem sua importância, mas não pode ser considerado um substituto de um processo mais estruturado como o de Continuous Application Security.
Continuous AppSec Vs Pentest: afinal, qual realizar?
Como ponderamos no tópico acima, a questão principal a ser entendida é que o Pentest, ou teste de intrusão, assim como qualquer outro teste, é componente de um processo de Continuous Application Security.
O processo, no entanto, é bem maior que a realização de testes pontuais. E infelizmente muitas empresas acabam tendo a falsa impressão de que investir unicamente em testes isolados e periódicos pode entregar a suas equipes de desenvolvimento uma visão mais ampla de como a segurança de suas aplicações está.
O Pentest é nada mais que uma fotografia de como está a sua aplicação naquele momento em que ele foi realizado: ou seja, a partir do momento que são realizados deploys e atualizações, aquela fotografia já não condiz com a realidade da aplicação.
Isso quer dizer que ainda que as vulnerabilidades apontadas pelo Pentest sejam corrigidas e validadas, após mudanças que possam ter sido realizadas mesmo para fins de correção de vulnerabilidades, novas vulnerabilidades podem surgir, e aquela realidade do momento do pentest já não existe mais.
Outro ponto importante a se considerar quando falamos em maturidade de modelos de Desenvolvimento e Segurança Contínua de Aplicações, é investir no conhecimento da sua equipe. Fazer testes de segurança pode mostrar a sua equipe que eles estão criando códigos vulneráveis, mas não se esqueça de ensiná-los como melhorar!
Neste caso, vale a pena pensar em um cronograma de Treinamentos periódicos em Desenvolvimento Seguro e em um programa de Security Champions para que a pauta dos conhecimentos em Segurança seja sempre difundida e estimulada entre as equipes.
Então, na verdade, quando falamos de Continuous AppSec Vs Pentest é preciso entender que não existe um atalho: especialmente quando se fala em entregas cada vez mais rápidas.
Portanto, ou a segurança de uma aplicação se faz com a construção de um processo estruturado e bem realizado, ou não se alcança um real nível de segurança nos aplicativos criados e entregues.
Links de referência deste artigo:
Continuous Security Testing in a DevOps World
Penetration Testing at DevSecOps Speed
Web Application Security Testing Sast Dast or Iast
The Importance of Penetration Testing and Vulnerability Assessments for Web Applications
