Fuzz testing ou Fuzzing é uma técnica de teste de software Black Box, que consiste basicamente em encontrar bugs de implementação usando injeção de dados malformados/semi-malformados em uma tarefa automatizada.

Essa análise é uma técnica de teste de software usada por desenvolvedores e testadores de penetração para testar seus aplicativos em relação a conjuntos inesperados, inválidos e aleatórios de entrada de dados. A resposta será então notada em termos de uma exceção ou uma falha lançada pelo aplicativo. Esta atividade nos mostra algumas das principais vulnerabilidades do aplicativo, que não são possíveis de descobrir de outra forma. Isso abrange estouros de buffer, strings de formato, injeções de código, ponteiros pendentes, condições de corrida, condições de negação de serviço e muitos outros tipos de vulnerabilidades.

A análise difusa é uma solução relativamente simples e eficaz que pode ser incorporada aos processos de garantia de qualidade e testes de segurança. É por isso que a análise difusa também é chamada de teste de robustez ou teste negativo às vezes.

História do Fuzz

O teste de fuzz clássico foi desenvolvido na Universidade de Wisconsin Madison em 1989 pelo professor Barton Miller e alunos. Seu trabalho (continuado) pode ser encontrado aqui . É principalmente orientado para fuzzing de linha de comando e interface do usuário, e mostra que os sistemas operacionais modernos são vulneráveis ​​a até mesmo fuzzing simples.

Tipos de ataque em Fuzzing

Comumente um Fuzzer (programa para fuzzing) tentaria combinações de ataques em:

  • números (inteiros com sinal/sem sinal/float etc).
  • chars (urls, entradas de linha de comando).
  • metadados : texto de entrada do usuário (tag id3).
  • sequências binárias puras.

Uma abordagem comum para fuzzing é definir listas de ” valores conhecidos por serem perigosos ” (vetores fuzz) para cada tipo e injetá-los ou recombinações.

  • Para números inteiros: zero, possivelmente números negativos ou muito grandes.
  • Para caracteres: caracteres/instruções de escape, interpretáveis ​​(ex: Para solicitações SQL, citações/comandos etc).
  • Para binários: aleatórios.
  • Para caracteres: caracteres/instruções de escape, interpretáveis ​​(ex: Para solicitações SQL, citações/comandos etc).

Existem diferentes classes de fuzzers disponíveis no Kali Linux, que podem ser usados ​​para testar os formatos de arquivo, protocolos de rede, entradas de linha de comando, variáveis ​​ambientais e aplicativos da web. Qualquer fonte não confiável de entrada de dados é considerada insegura e inconsistente. Por exemplo, um limite de confiança entre o aplicativo e o usuário da Internet é imprevisível. Assim, todas as entradas de dados devem ser difusas e verificadas em relação a vulnerabilidades conhecidas e desconhecidas. Em nosso artigo posterior, aprenderemos sobre Fuzzers em nosso sistema Kali Linux.

Por que o Fuzzing é importante nos testes de segurança?

O propósito de fuzzing é baseado na suposição de que existem bugs dentro de cada programa, que estão esperando para serem descobertos. Então, uma abordagem sistemática deve encontrá-los mais cedo ou mais tarde.

Fuzzing pode adicionar outra perspectiva às técnicas clássicas de teste de software (revisão manual de código, depuração) por ser uma abordagem não humana. Não os substitui, mas é um complemento razoável, graças ao trabalho limitado necessário para colocar o procedimento em prática.

Deixe um comentário
Shares: