Teste Fuzz
Fuzz Testing ou Fuzzing é uma técnica de teste de software para colocar 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 falha do sistema ou falha de código integrado, etc.
O teste de difusão foi originalmente desenvolvido por Barton Miller na Universidade de Wisconsin em 1989. O teste de difusão ou difusão é uma técnica de teste de software e é um tipo de Teste de segurança .
Por que fazer o Fuzz Testing?
- 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 o Teste Black Box, Teste Beta e outros métodos de depuração.
- O teste de difusão é usado para verificar a vulnerabilidade do software. É técnicas de teste muito econômicas.
- O teste fuzz é uma das técnicas de teste da caixa preta. Fuzzing é um dos métodos mais comuns usados pelos hackers para descobrir a vulnerabilidade do sistema.
Como fazer Fuzz Testing
As etapas para o teste fuzzy incluem as etapas básicas de teste
Etapa 1) Identificar o sistema de destino
Etapa 2) Identificar entradas
Etapa 3) Gerar dados difusos
Etapa 4) Execute o teste usando dados fuzzy
Etapa 5) Monitore o comportamento do sistema
Etapa 6) Log de defeitos
Exemplos de Fuzzers
-
Fuzzers baseados em mutação alteram amostras de dados existentes para criar novos dados de teste. Esta é uma abordagem muito simples e direta, que começa com exemplos válidos de protocolo e continua mutilando cada byte ou arquivo.
-
Fuzzers baseados em geração definem novos dados com base na entrada do modelo. Ele começa a gerar dados 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, percorrer a especificação e adicionar irregularidade no conteúdo dos dados, sequência, etc. Isso também é conhecido como teste de sintaxe, teste de gramática, teste de robustez, etc. O Fuzzer pode gerar casos de teste a partir de um existente ou podem usar entradas válidas ou inválidas.
Existem duas limitações de difusão baseada em protocolo:
- O teste não pode prosseguir até que a especificação esteja madura.
- Muitos protocolos úteis são uma extensão dos protocolos publicados. Se o teste fuzz for baseado em especificações publicadas, a cobertura do teste para novos protocolos será limitada.
A forma mais simples de técnica de difusão é o envio de dados aleatórios para o software como pacotes de protocolo ou como um evento. Esta 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 as entradas 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 essa metodologia é amplamente usada para grandes aplicativos em que bugs estão afetando a segurança da memória, o que é uma vulnerabilidade grave.
- Entrada inválida
No teste de fuzzing, 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. O fuzzing simples pode ser conhecido como uma forma de automatizar o teste negativo.
- 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 que são usadas em segurança web podem ser amplamente usadas em testes de fuzzing, como Burp Suite, Peach Fuzzer, etc.
- Peach Fuzzer
O Peach Fuzzer oferece cobertura mais robusta e de segurança do que um scanner. Outras ferramentas de teste podem pesquisar apenas tópicos conhecidos, enquanto o Peach Fuzzer permite que os usuários encontrem tópicos conhecidos e desconhecidos.
- Spike Proxy
É uma ferramenta de nível profissional que procura vulnerabilidades de nível de aplicativo em aplicativos da web. O SPIKE Proxy cobre o básico, como SQL Injection e cross-site-scripting, mas é uma infraestrutura Python completamente aberta. O SPIKE Proxy está disponível para Linux e Windows.
- Webscarab
Webscarab é escrito em Java, portanto, portátil para muitas plataformas. Para análise de aplicativos, utiliza-se o framework Webscarab que se comunica usando protocolos HTTP e HTTPS.
Ex: o Webscarab funciona como um proxy de interceptação, pois permite ao operador revisar e modificar as solicitações criadas pelo navegador antes de serem recebidas pelo servidor. E permite revisar e atualizar as respostas geradas pelo servidor antes de recebidas pelo navegador. Dessa forma, se o escaravelho da web encontrar alguma brecha, ele fará a lista dos problemas relatados.
- OWASP WSFuzzer
WSFuzzer é um programa GPL escrito em Python. GPL tinha um programa atualmente voltado para Web Services. Na versão atual do OWASPWSFuzzer, os serviços SOAP baseados em HTTP são o alvo principal.
Vantagens do Fuzz Testing
- O teste de difusão melhora o teste de segurança de software.
- Bugs encontrados em 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 são encontrados no teste Fuzz.
Desvantagens do Fuzz Testing
- O teste de difusão por si só não pode fornecer uma imagem completa de uma ameaça de segurança geral ou bugs.
- O teste de difusão é menos eficaz para lidar com ameaças de segurança que não causam falhas no programa, como alguns vírus, worms, Trojan, etc.
- O teste de difusão pode detectar apenas falhas ou ameaças simples.
- Para ter um desempenho eficaz, isso exigirá um tempo significativo.
- Definir uma condição de valor limite com entradas aleatórias é muito problemático, mas agora usando algoritmos determinísticos com base nas entradas do usuário, a maioria dos testadores resolve esse problema.
Resumo:
Em Engenharia de Software, o teste Fuzz mostra a presença de bugs em um aplicativo. A difusão não pode garantir a detecção completa de bugs em um aplicativo. Porém, ao usar a técnica Fuzz, ele garante que o aplicativo seja robusto e seguro, pois essa técnica ajuda a expor a maioria das vulnerabilidades comuns.
Este artigo é uma contribuição de Priyanka Kothe