O que é o Teste de Fuzz?

O Teste de Fuzz é considerado o tipo de teste em que as técnicas de teste automatizadas ou semi-automatizadas são necessárias para descobrir erros na codificação, bem como as brechas na segurança no software ou nos sistemas operacionais, fornecendo a entrada de dados aleatórios para o sistema. Esses dados aleatórios são chamados de FUZZ. Afinal, isso ocorre, o sistema é verificado quanto a diferentes tipos de exceções, como o sistema sendo travado ou mesmo o código interno falha e muito mais. Isso foi originalmente desenvolvido por alguém chamado Barton Miller, da Universidade de Wisconsin. Também é chamado de difusão e é considerado o tipo de teste de segurança.

Por que precisamos de testes de fuzz?

  • Geralmente, o teste do Fuzz tem a capacidade de descobrir as falhas de segurança mais graves do sistema.
  • Ele fornece resultados muito mais eficazes quando o usamos junto com o Black Box Testing, Beta Testing ou diferentes métodos de depuração.
  • Também é necessário verificar a vulnerabilidade do software. É também uma técnica de teste realmente econômica.
  • É considerado uma técnica de teste de caixa preta. É também um dos hackers de métodos mais usados ​​que encontra a vulnerabilidade do sistema.

Como é realizado o Teste Difuso?

As etapas para testes difusos incluem as etapas básicas de teste -

Etapa 1 : Reconhecimento do sistema de destino.

Etapa 2 : reconhecimento das entradas.

Etapa 3 : Geração de dados confusos.

Etapa 4 : Teste a execução usando dados difusos.

Etapa 5 : Monitoramento do comportamento do sistema.

Etapa 6 : Registro de defeitos.

Exemplos de Fuzzers

Existem muitos fuzzers como abaixo:

  • Fuzzers baseados em mutações: Esses fuzzers alteram as amostras de dados existentes para criar novos dados de teste. Isso é bastante fácil, assim como o método direto, ele começa com um protocolo razoável e continua misturando todos os bytes ou mesmo como um arquivo.
  • Fuzzers baseados em geração: eles definem dados novos, dependendo da entrada do modelo. Inicia a geração de entrada do zero, dependendo da especificação.
  • Fuzzer baseado em protocolo: é considerado o fuzzer com maior sucesso e que possui um conhecimento bastante explicado sobre o formato do protocolo que deve ser testado. Esse entendimento depende da especificação. Ele inclui a gravação de uma matriz de especificações dentro da ferramenta e, em seguida, utiliza a técnica baseada em modelo. Também é conhecido como teste de sintaxe ou gramática ou teste de robustez.

Temos duas limitações dessa difusão baseada em protocolo, conforme abaixo:

  1. Não podemos prosseguir com o teste até e a menos que a especificação esteja madura.
  2. Existem muitos protocolos que são uma extensão dos protocolos publicados. Caso o teste de fuzz seja baseado nessas especificações publicadas, a cobertura do teste para esses novos protocolos será limitada.

Existe a forma mais simples de teste de difusão, que é o envio da entrada aleatória para o software na forma de pacotes de protocolo ou mesmo na forma de um evento. Essa maneira particular de passar entradas aleatórias é considerada bastante poderosa para localizar bugs em vários aplicativos e serviços. Existem outras técnicas também disponíveis e também são fáceis de implementar.

Tipos de bug detectados pelo teste do Fuzz

  • Vazamentos de memória e falhas de declaração: Esse método é amplamente utilizado em aplicações amplas, nas quais os bugs afetam a segurança da memória, considerada uma vulnerabilidade grave.
  • Entrada inválida: Os difusores são necessários para gerar a entrada inválida necessária no teste das rotinas de tratamento de erros no teste de difusão. Além disso, é bastante necessário para o software que não controla a entrada. A difusão é considerada uma maneira de automatizar o teste negativo.
  • A correção dos bugs: o uso de fuzz é necessário para detectar alguns tipos de bugs de "correção", como um banco de dados corrompido ou os resultados ruins da pesquisa e muito mais.

Ferramentas de teste do Fuzz

As ferramentas que são bastante úteis em segurança na web também podem ser amplamente utilizadas em testes de fuzz ou fuzzy. Por exemplo, Puzz Fuzzer, Burp Suite, etc.

1. Fuzzer de pêssego

Essa ferramenta oferece cobertura muito mais robusta e de segurança, em comparação com o scanner. Se falarmos sobre outras ferramentas de teste, elas, no entanto, têm a capacidade de pesquisar apenas as ameaças conhecidas. Mas o Peach Fuzzer faz com que os usuários descubram ameaças conhecidas e desconhecidas.

2. Proxy Spike

O Spike é considerado a ferramenta de nível profissional que pesquisa vulnerabilidades no nível do aplicativo em vários aplicativos da Web. O Proxy SPIKE considera apenas o básico, como SQL Injection ou cross-site-scripting. No entanto, é totalmente uma infraestrutura aberta do Python. O SPIKE Proxy está presente para Linux e Windows.

Vantagens

  • Os erros descobertos nos testes de fuzz são geralmente considerados graves e, principalmente, são usados ​​pelos hackers que consistem em falhas, vazamento de memória ou uma exceção não tratada e muito mais.
  • Se algum erro ou bug falhar em ser descoberto pelos testadores devido à limitação de tempo e recursos, esses erros poderão ser descobertos no teste do Fuzz.

Desvantagens

  • Sozinho, o teste de fuzz sozinho não tem a capacidade de fornecer o cenário geral de todas as ameaças à segurança.
  • Além disso, o teste de fuzz é considerado não muito eficaz ao lidar com bugs de segurança que não causam falhas no programa, como vírus, worms etc.
  • Ele tem a capacidade de detectar apenas ameaças simples.
  • Para fornecer um desempenho eficaz, é necessário um tempo significativo.

Conclusão

Assim, podemos concluir que, na engenharia de software, esse teste, ou seja, o teste do Fuzz demonstra a presença dos bugs em qualquer aplicativo. Este teste não garante a detecção de erros de maneira completa em qualquer aplicativo. No entanto, se usarmos essa técnica do Fuzz, ele garantirá que o aplicativo seja bastante robusto e seguro, porque o teste do fuzz ajuda bastante na exposição de muitas vulnerabilidades comuns.

Artigos recomendados

Este é um guia para o Fuzz Testing. Aqui discutimos o que é o teste de fuzz? ferramentas de teste, vantagens e desvantagens, respectivamente. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Teste de referência
  2. Tipos de teste de software
  3. O que é teste de usabilidade?
  4. Teste estático