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 Testes, 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 e ferrolhos de sobrepor podem ser usados para proteger uma porta de embutir pelo lado de fora. Alguns kits de corrente de seguranรงa tambรฉm permitem travamento externo com chave ou botรฃo giratรณrio. 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.

Resuma esta postagem com: