Prefere ouvir a versão em áudio deste artigo? Utilize o player abaixo:
Não é incomum que durante conversas com clientes tenhamos que explicar a diferença entre Scan de Vulnerabilidades e Penetration Testing, dentre outros serviços que são executados por nossos analistas. Isso é algo normal, e muitas vezes esperado, considerando a especificidade da natureza desses serviços.
Pensando nisso, já fizemos alguns artigos explicando a diferença e quando usar alguns destes serviços, ou mesmo a diferença entre diversos tipos de pentests, ferramentas de SAST e DAST, tipos de code review etc.
Neste artigo vamos explicar qual é a diferença entre o Scan de Vulnerabilidades e o Penetration Testing, dois serviços que por vezes podem despertar dúvidas. Esperamos, com isso, contribuir com um melhor entendimento sobre o tema.
Entendendo o Pentest
É frequente encontrarmos com o pensamento de que os testes de intrusão (Pentest), sozinhos, resolverão todos os problemas de segurança das aplicações web. Ou ainda que a realização periódica desses testes garantiria a segurança a longo prazo.
Porém, em nosso artigo sobre a Continuous AppSec Vs Pentest, mostramos como o processo de desenvolvimento seguro pode ser bem melhor e mais eficiente frente ao uso somente de Penetration Testings periódicos.
Em outro post, agora falando sobre Tipos de Pentests — White, Gray e Black Box, mostramos a diferença entre os vários tipos de testes que podem ser realizados e como cada um pode ser usado.
Agora chegou a vez de explicarmos os benefícios da realização de Scan de Vulnerabilidades e Pentest em conjunto, e quais são as características de cada um.
Como sabemos que o Pentest já é um conceito familiar para os profissionais que atuam com Segurança de Informação, não vamos nos estender neste tópico.
Mas se você quiser entender melhor os testes de intrusão, te convidamos a fazer uma leitura nos nossos artigos indicados acima. Acreditamos que com essas informações e comparações com outros serviços, ficará mais fácil o entendimento sobre o tema.
E claro, Pentests e Scan de Vulnerabilidades são serviços diferentes, mas por guardarem certas similaridades sempre trazem algumas dúvidas.
Vamos ver agora um pouco mais sobre os Scans de Vulnerabilidade.
Scan de Vulnerabilidades e Penetration Testing
O scan de vulnerabilidades é um processo automatizado que utiliza ferramentas para buscar vulnerabilidades de segurança já conhecidas em seus sistemas.
A partir disso, o Scan gera um relatório extenso de possíveis vulnerabilidades que podem ameaçar os sistemas.
Já o teste de intrusão, por sua vez, é composto por processos manuais, que aproveitam as informações encontradas em relatórios de vulnerabilidades gerados pelos Scans. Dessa forma, o pentester pode explorar essas vulnerabilidades e obter acesso a dados confidenciais.
O uso de Scan de Vulnerabilidades de forma periódica ajuda a criar uma baseline do seu sistema, permitindo que, em caso de mudanças anormais, as vulnerabilidades possam ser identificadas com mais facilidade.
Normalmente, esse tipo de teste é realizado para validar as medidas de segurança de um sistema ou de uma rede e, por ser um processo automatizado, não precisa de tanto envolvimento de membros do time.
Além disso, os Scans de Vulnerabilidade são muito importantes para ajudar a verificar as configurações de segurança que são usadas.
Isso porque, mesmo que o serviço seja automatizado e dependa mais da tecnologia do que do indivíduo, ainda precisamos de analistas experientes para validar as conclusões que podem ser apresentadas nos relatórios.
E, além das análises de relatórios, é importante que os analistas tenham total conhecimento sobre a estrutura e os processos dentro do escopo escolhido. Dessa forma, eles poderão ajudar a ter mais eficiência e a não gerar impacto no processo.
Dois tipos de Scans de Vulnerabilidades
No entanto, precisamos lembrar que os Scans de vulnerabilidade possuem suas categorias: existem dois tipos de scans que podem ser usados.
O primeiro é o scan de vulnerabilidades usando características de usuários ou sistemas autenticados. E, como podemos imaginar, o segundo modelo tem característica de scan com sistemas ou usuários não autenticados.
Um scan de vulnerabilidades autenticado pode ser mais profundo, pois parte de uma informação de acesso já garantida, o que permite explorar mais estruturas dentro do sistema.
Já o scan de vulnerabilidades não autenticado, por outro lado, só pode atuar a partir de informações já conhecidas — ou publicamente disponíveis.
De forma geral os dois modelos são importantes mas apresentam funções diferentes e podem ser usados cada um com seu objetivo. O scan de vulnerabilidades não autenticado é, geralmente, usado para identificar a postura de segurança do sistema.
Como as ferramentas validam as vulnerabilidades?
É interessante saber que as ferramentas de scan de vulnerabilidades funcionam com uma lista de vulnerabilidades publicadas e atualizadas regularmente, vulnerabilidades, estas, que por características de assinatura devem já ser conhecidas.
Uma característica das ferramentas é que as assinaturas de vulnerabilidades só são adicionadas às listas depois que estas vulnerabilidades já possuem correções conhecidas.
Essa característica tem um valor positivo, pois não permite que sejam usadas por atacantes maliciosos em busca de sistemas vulneráveis. Por outro lado, também apresentam um problema, já que identificam as vulnerabilidades somente quando esta já possui uma correção. Ou seja, por um tempo, os sistemas que contam apenas com esta ferramenta para identificar as vulnerabilidades, acabam ficando vulneráveis.
Portanto, essa característica sozinha já demonstra que a realização de serviços de scan de vulnerabilidades não podem ser usados como base única para se garantir a segurança de um sistema, uma vez que já tem um banco de dados de vulnerabilidades, no mínimo não apresentando as vulnerabilidades mais novas.
Onde buscar por boas práticas sobre Scan de Vulnerabilidades e Pentest?
O CIS (Center for Internet Security) tem um documento interessante intitulado 20 foundational security controls, e estes controles ajudam a definir prioridades e periodicidades para estes dois tipos de testes que estamos discutindo.
Segundo este documento, no seu controle #3, que fala sobre as ferramentas de scan de vulnerabilidades, dois pontos podem nos ajudar a entender como melhor ajustar estes testes.
O primeiro ponto é a indicação do uso de ferramentas automatizadas para a execução de testes de scan de vulnerabilidades, e como descreve o documento:
“Utilize sempre uma ferramenta automatizada de verificação de vulnerabilidades compatíveis com o processo de validação SCAP, para que sejam verificados automaticamente todos os sistemas em períodos semanais, e caso seu sistema seja crítico com mais frequência para identificar vulnerabilidades em potencial.”
A verificação automatizada regular é importante para manter-se informado sobre novas vulnerabilidades, assim como alterações introduzidas nos sistemas.
A utilização de verificações periódicas e automatizadas fornecem informações valiosas sobre o real estado de todos os sistemas, isso ajuda a priorizar e ajustar os processos de correção.
No segundo ponto, o documento do CIS trata da indicação de realização de testes automatizados e autenticados nos sistemas, tanto com a realização de testes locais quanto remotos.
Verificação de vulnerabilidades autenticadas X não autenticadas
A realização de verificações de vulnerabilidades autenticadas produz resultados de auditoria muito mais precisos, porque se resumem a dados e informações.
Já as verificações não autenticadas, por sua vez, coletam apenas dados relacionados ao que a ferramenta de verificação pode “ver” da parte externa do sistema.
Portanto, como falamos acima, quando realizadas de forma autenticada, as verificações permitem que a ferramenta tenha mais profundidade nos resultados.
Claro que os dados coletados nos dois tipos de testes são importantes, mas sabemos que os dados coletados por meio de verificações autenticadas trazem bem mais informações.
O controle #20 trata dos testes de intrusão, e da mesma forma temos os dois primeiros pontos com relação ao nosso artigo.
O primeiro ponto do controle #20 diz que um programa de testes de intrusão deve ser implementado e mantido, com um escopo de testes que englobe ataques mais críticos para sistemas web.
Isso porque a criação e manutenção de um programa ajuda a identificar vulnerabilidades críticas em sistemas expostos à Internet, e isso reduz a possibilidade de comprometimento de dados e sistemas.
No entanto, como colocamos em posts anteriores, somente executar testes de intrusão em sistemas não garante a segurança, ele apenas nos auxilia a identificar vulnerabilidades que já estão no sistema.
O segundo ponto do controles nos leva a identificar a necessidade de termos dentro do programa de testes uma periodicidade, permitindo, dessa forma, que se mantenha uma janela de tempo aceitável entre um teste e outro.
Esta janela de tempo deve ser determinada de acordo com a criticidade e a importância de cada sistema. O importante é manter os testes, e buscar fazer ambos tipos: Scan de Vulnerabilidades e Penetration Testing.
O que concluímos sobre scan de vulnerabilidades & pentest?
É interessante ver que muitos dos testes que realizamos e encontramos no mercado são complementares em suas atuações, mas, curiosamente, poucos percebem isso.
Temos notado que há uma grande parcela dos profissionais que não se atentam para a importância e o momento de cada teste, continuando a buscar soluções como ferramentas ou mesmo testes que não são os indicados ou necessários em um determinado cenário.
A realização do Scan de Vulnerabilidades de forma massiva, atuando em conjunto com o Penetration Testing regularmente, é a melhor maneira de garantir que as vulnerabilidades sejam identificadas o quanto antes, minimizando os riscos da aplicação.
Isso tem raízes bem profundas: na rápida migração para modelos de desenvolvimento onde todos os profissionais realizam várias atividades, mas, por algum motivo, não foram adequadamente instruídos em seus novos objetivos.
Portanto, isso nos mostra que ainda se faz necessário a realização de mais treinamentos e mais disseminação do conhecimento. Dessa forma conseguiremos esclarecer cada vez mais cada um destes modelos de testes.
E você: como entende estes testes?