Tutorial de teste Fuzz (Fuzzing)

O que é teste Fuzz?

Teste Fuzz ou Fuzzing é uma técnica de teste de software que coloca dados inválidos ou aleatórios chamados FUZZ no sistema de software para descobrir erros de codificação e brechas de segurança. O objetivo do teste fuzz é inserir dados usando técnicas automatizadas ou semiautomáticas e testar o sistema para várias exceções, como travamento do sistema ou falha do código integrado, etc.

O teste Fuzz foi originalmente desenvolvido por Barton Miller na Universidade de Wisconsin em 1989. O teste Fuzz ou fuzzing é uma técnica de teste de software e é um tipo de Teste de Segurança.

Teste Fuzz

Por que fazer testes Fuzz?

  • Normalmente, o teste Fuzzy encontra a falha ou defeito de segurança mais sério.
  • O teste Fuzz fornece resultados mais eficazes quando usado com Preto Box Ensaios, testes beta e outros métodos de depuração.
  • O teste Fuzz é usado para verificar a vulnerabilidade do software. São técnicas de teste muito econômicas.
  • O teste Fuzz é uma das técnicas de teste de caixa preta. Fuzzing é um dos métodos mais comuns que os hackers usam para encontrar vulnerabilidades no sistema.

Como fazer testes Fuzz

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

Passo 1) Identifique o sistema alvo

Passo 2) Identificar entradas

Passo 3) Gerar dados difusos

Passo 4) Execute o teste usando dados difusos

Passo 5) Monitore o comportamento do sistema

Passo 6) Registrar defeitos

Exemplos de Fuzzers

  • Fuzzers baseados em mutação alterar amostras de dados existentes para criar novos dados de teste. Esta é uma abordagem muito simples e direta, começa com amostras válidas de protocolo e continua destruindo cada byte ou arquivo.
  • Fuzzers baseados em geração definir novos dados com base na entrada do modelo. Ele começa a gerar informações do zero com base na especificação.
  • Fuzzer BASEADO EM PROTOCOLO, o fuzzer de maior sucesso é ter conhecimento detalhado do formato do protocolo que está sendo testado. O entendimento depende da especificação. Envolve escrever uma matriz da especificação na ferramenta e, em seguida, usando a técnica de geração de teste baseada em modelo, passar pela especificação e adicionar irregularidades no conteúdo dos dados, sequência, etc. Isso também é conhecido como teste de sintaxe, teste gramatical, teste de robustez, etc. O Fuzzer pode gerar casos de teste a partir de um caso existente ou pode usar entradas válidas ou inválidas.

Existem duas limitações da difusão baseada em protocolo:

  1. O teste não pode prosseguir até que a especificação esteja madura.
  2. Muitos protocolos úteis são uma extensão de protocolos publicados. Se o teste fuzz for baseado em especificações publicadas, Cobertura de teste para novos protocolos será limitado.

A forma mais simples de técnica de difusão é enviar entradas aleatórias ao software como pacotes de protocolo ou como um evento. Essa técnica de passagem de entrada aleatória é muito poderosa para encontrar bugs em muitos aplicativos e serviços. Outras técnicas também estão disponíveis e são muito fáceis de implementar. Para implementar essas técnicas precisamos apenas alterar os insumos existentes. Podemos alterar a entrada apenas trocando os bits de entrada.

Tipos de bugs detectados pelo Fuzz Testing

  • Falhas de asserção e vazamentos de memória esta metodologia é amplamente utilizada para grandes aplicações onde bugs afetam a segurança da memória, o que é uma vulnerabilidade grave.
  • Entrada inválida No teste fuzz, os fuzzers são usados ​​para gerar uma entrada inválida que é usada para testar rotinas de tratamento de erros, e isso é importante para o software que não controla sua entrada. A difusão simples pode ser conhecida como uma forma de automatizar testes negativos.
  • Erros de correção A difusão também pode ser usada para detectar alguns tipos de bugs de “correção”. Como um banco de dados corrompido, resultados de pesquisa ruins, etc.

Ferramentas de teste Fuzz

Ferramentas usadas em segurança da web podem ser amplamente utilizadas em testes fuzz, como Burp Suite, Fuzzer de pêssego, etc.

  • Fuzzer de pêssego: Peach Fuzzer oferece cobertura mais robusta e segura do que um scanner. Outras ferramentas de teste podem pesquisar apenas threads conhecidos, enquanto o Peach Fuzzer permite que os usuários encontrem threads conhecidos e desconhecidos.
  • Proxy de pico: é uma ferramenta de nível profissional que procura vulnerabilidades em nível de aplicativo em aplicativos da web. O SPIKE Proxy cobre o básico, como SQL Injeção e script entre sites, mas é completamente aberto Python a infraestrutura. O proxy SPIKE está disponível para Linux Windows.
  • Webescaravelho: Webscarab está escrito em Java portanto portátil para muitas plataformas. Para analisar a aplicação, é utilizado o framework Webscarab que se comunica usando os protocolos HTTP e HTTPS.Ex: O Webscarab funciona como um proxy interceptador, permite ao operador revisar e modificar as solicitações criadas pelo navegador antes de serem recebidas pelo servidor. E permite revisar e atualizar a resposta gerada pelo servidor antes de ser recebida pelo navegador. Desta forma, caso o web scarab encontre alguma brecha, ele fará parte da lista dos problemas relatados.
  • OWASP WSFuzer: WSFuzzer é um programa GPL escrito em Python. GPL'd um programa atualmente tem como alvo os serviços da Web. Na versão atual do OWASPWSFuzzer baseado em HTTP Serviços SOAP são o alvo principal.

Vantagens do teste Fuzz

  • O teste Fuzz melhora o software Teste de Segurança.
  • Os bugs encontrados no fuzzing às vezes são graves e na maioria das vezes usados ​​por hackers, incluindo travamentos, vazamento de memória, exceção não tratada, etc.
  • Se algum dos bugs não for percebido pelos testadores devido à limitação de tempo e recursos, esses bugs também serão encontrados nos testes Fuzz.

Desvantagens do teste Fuzz

  • O teste Fuzz por si só não pode fornecer uma imagem completa de uma ameaça ou bug geral à segurança.
  • O teste Fuzz é menos eficaz para lidar com ameaças à segurança que não causam falhas no programa, como alguns vírus, worms, cavalos de Tróia, etc.
  • O teste Fuzz pode detectar apenas falhas ou ameaças simples.
  • Para ter um desempenho eficaz, será necessário um tempo significativo.
  • Definir uma condição de valor limite com entradas aleatórias é muito problemático, mas agora, usando algoritmos determinísticos baseados nas entradas dos usuários, a maioria dos testadores resolve esse problema.

Resumo

Na Engenharia de Software, o teste Fuzz mostra a presença de bugs em uma aplicação. A difusão não pode garantir a detecção completa de bugs em um aplicativo. Mas ao usar a técnica Fuzz, garante que o aplicativo seja robusto e seguro, pois essa técnica ajuda a expor a maioria das vulnerabilidades comuns.