Um fuzzer orientado à segurança, orientado por feedback, evolutivo e fácil de usar, com opções de análise interessantes. Consulte o documento de uso para obter uma introdução sobre o uso do Honggfuzz.
Última versão estável: 2.6
Registro de alterações
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang make
É multiprocesso e multithread : não há necessidade de executar várias cópias do seu fuzzer, pois o honggfuzz pode desbloquear o potencial de todos os núcleos de CPU disponíveis com uma única instância em execução. O corpus do arquivo é automaticamente compartilhado e melhorado entre todos os processos difusos.
É extremamente rápido quando o modo de difusão persistente é usado. Uma função LLVMFuzzerTestOneInput simples/vazia pode ser testada com até 1 mês de iterações por segundo em uma CPU relativamente moderna (por exemplo, i7-6700K).
Tem um histórico sólido de bugs de segurança descobertos: a única vulnerabilidade (até o momento) no OpenSSL com pontuação crítica foi descoberta pelo honggfuzz. Veja o parágrafo Troféus para o resumo das descobertas até o momento.
Usa interfaces de baixo nível para monitorar processos (por exemplo, ptrace em Linux e NetBSD). Ao contrário de outros fuzzers, ele descobrirá e reportará sinais sequestrados/ignorados de travamentos (interceptados e potencialmente ocultos por um programa difuso).
Fácil de usar, alimente-o com um diretório de corpus simples (pode até estar vazio para a difusão orientada por feedback) e ele subirá, expandindo-o utilizando métricas de cobertura baseadas em feedback.
Suporta vários (mais do que qualquer outro fuzzer acionado por feedback baseado em cobertura) modos de fuzzing baseados em hardware (CPU: contagem de ramificação/instrução, Intel BTS , Intel PT ) e baseados em software. Além disso, veja o novo modo qemu para difusão binária de caixa preta.
Funciona (pelo menos) em GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin e Android.
Suporta o modo difuso persistente (processo de longa duração que chama repetidamente uma API difusa). Mais sobre isso pode ser encontrado aqui.
Ele vem com o diretório de exemplos , que consiste em configurações de fuzz do mundo real para software amplamente utilizado (por exemplo, Apache HTTPS, OpenSSL, libjpeg etc.).
Fornece um modo de minimização de corpus .
Linux - A biblioteca BFD (libbfd-dev) e libunwind (libunwind-dev/libunwind8-dev), clang-5.0 ou superior para modos de cobertura baseados em software
FreeBSD - gmake, clang-5.0 ou mais recente
NetBSD - gmake, clang, capstone, libBlocksRuntime
Android - Android SDK/NDK. Veja também este documento detalhado sobre como construí-lo e executá-lo
Windows -CygWin
Darwin/OS X -Xcode 10.8+
se Clang/LLVM for usado para compilar o honggfuzz - vincule-o à biblioteca BlocksRuntime (libblocksruntime-dev)
O Honggfuzz tem sido usado para encontrar alguns problemas de segurança interessantes nos principais pacotes de software; Uma lista incompleta:
Dezenas de problemas de segurança através do projeto OSS-Fuzz
Falha remota de pré-autenticação no OpenSSH
ApacheHTTPD
Falha remota no mod_http2 • CVE-2017-7659
Use-após-livre em mod_http2 • CVE-2017-9789
Vazamento de memória no mod_auth_digest • CVE-2017-9788
Acesso fora do limite • CVE-2018-1301
Escreva gratuitamente em HTTP/2 • CVE-2018-1302
Leitura fora do limite • CVE-2018-1303
Várias bibliotecas SSL
Leitura OOB remota em OpenSSL • CVE-2015-1789
Uso remoto após livre (RCE potencial, classificado como crítico ) em OpenSSL • CVE-2016-6309
Gravação OOB remota em OpenSSL • CVE-2016-7054
Leitura OOB remota em OpenSSL • CVE-2017-3731
Uso de mem não inicializado no OpenSSL
Falha no LibreSSL
Grátis inválido no LibreSSL
Uso de mem não inicializado no BoringSSL
Corrupção de memória Adobe Flash • CVE-2015-0316
Vários bugs na biblioteca libtiff
Vários bugs na biblioteca librsvg
Vários bugs na biblioteca poppler
Vários bugs exploráveis no IDA-Pro
DoS remoto em Crypto++ • CVE-2016-9939
Intérpretes de linguagem de programação
PHP/Python/Rubi
PHP WDDX
PHP
Perl: #1, #2, #3
Duplamente livre em LibXMP
Estouro de buffer de heap no SAPCAR • CVE-2017-8852
Falhas no libbass
Tipo Livre 2 :
CVE-2010-2497
CVE-2010-2498
CVE-2010-2499
CVE-2010-2500
CVE-2010-2519
CVE-2010-2520
CVE-2010-2527
Problemas de corrupção de pilha no analisador OpenType do Windows: #1, #2, #3
Loop infinito na unidade NGINX
Alguns problemas na biblioteca de E/S de arquivos MATLAB MAT : #1, #2, #3, #4, #5
NASM #1, #2, #3, #4, #5, #6, #7, #8, #9, #10
Samba tdbdump + tdbtool, #2, #3, #4, #5, #6 CVE-2019-14907 CVE-2020-10745 CVE-2021-20277 LPRng_time
Crash no djvulibre
Várias falhas no VLC
Estouro de buffer no ClassiCube
Heap buffer-overflow (ou UAF) em MPV
Estouro de buffer de heap em picoc
Falhas no OpenCOBOL : #1, #2
DoS no ProFTPD : #1 • #2
Vários problemas de segurança no ImageIO (iOS/MacOS)
Corrupção de memória em htmldoc
Corrupção de memória no OpenDetex
Corrupção de memória em Yabasic
Corrupção de memória no Xfig
Corrupção de memória no LibreOffice
Corrupção de memória no ATasm
Corrupção de memória em oocborrt • CVE-2020-24753
Corrupção de memória em LibRaw
NULL-ptr deref em peg-markdown
Valor não inicializado em MD4C • CVE-2020-26148
17 novos bugs no fwupd
Asserção em libvips
[Falha no libocispec )(https://github.com/containers/libocispec/commit/6079cd9490096cfb46752bd7491c71253418a02c)
Ferrugem :
panic() na regex #1, #2, #3
pânico() em h2 #1, #2, #3
panic() no analisador de sono #1
pânico() em lewton #1
panic()/DoS em Ethereum-Paridade #1
crash() em partes - um gerenciador de partição GPT nº 1
trava em ferrugem-bitcoin/ferrugem-relâmpago #1
... e mais
QuickFuzz por CIFASIS
OSS Fuzz
Sapo e penugem
intérpretes fuzzing : por dyjakan
riufuzz : honggfuzz com UI semelhante a AFL
h2fuzz : difunde a implementação HTTP/2 do Apache
honggfuzz-dharma : honggfuzz com fuzzer gramatical do dharma
Coruja : um sistema para encontrar ataques simultâneos
honggfuzz-docker-apps
FFW : Fuzzing para Worms
honggfuzz-rs : confundindo Rust com Honggfuzz
áspero-fuzz
Macaco : um servidor HTTP
API Killerbeez : uma estrutura modular de difusão
FuzzM : uma estrutura de fuzzing baseada em modelo de caixa cinza
FuzzOS : por Mozilla Security
Android : por OHA
QDBI : por Quarkslab
fuzzer-test-suite : do Google
DeepState : por trilha de bits
Quiche-HTTP/3 : por Cloudflare
Bolero : estrutura de teste de fuzz e propriedades
pwnmachine : um vagrantfile para desenvolvimento de exploits no Linux
Quick700 : analisando a eficácia dos fuzzers em navegadores e servidores web
python-hfuzz : colando honggfuzz e python3
go-hfuzz : colando honggfuzz e pronto
Magma : um benchmark de difusão de verdade
testes de modelo arbitrário : uma macro processual para testar modelos com estado
Clusterfuzz : o mecanismo de difusão por trás do OSS-fuzz/Chrome-fuzzing
Servidor HTTP Apache
centos-fuzz
FLUFFI : utilitário totalmente localizado para difusão instantânea da Siemens
Fluent Bit : um processador e encaminhador de log rápido para Linux
Samba : um servidor SMB
universal-fuzzing-docker : por nnamon
Canokey Core : implementações principais de uma chave segura de código aberto
uberfuzz2 : uma estrutura de difusão cooperativa
TiKV : um banco de dados de valores-chave transacional distribuído
monitor fuzz
libmutator : uma biblioteca C destinada a gerar casos de teste aleatórios através da mutação de casos de teste legítimos
StatZone : um analisador de arquivos de zona DNS
shub-fuzz/honggfuzz : imagem de singularidade para honggfuzz
Inteligência de código : fuzzing como serviço
SpecFuzz : fuzzing para vulnerabilidades do Spectre
rcc : um compilador Rust C
EIP1962Fuzzing : Teste difuso de várias implementações EIP1962
wasm-fuzz : Fuzzing de wasmer, postagem no blog
propfuzz : ferramentas Rust para combinar fuzzing guiado por cobertura com testes baseados em propriedades - do Facebook
Núcleo Bitcoin : confusão
ESP32-Fuzzing-Framework : Uma estrutura Fuzzing para aplicações ESP32
Fuzzbench : Benchmarking do Fuzzer como serviço
rummsyscallfuzz : Fuzzing do kernel Rump do NetBSD
libnbd : difundindo libnbd com honggfuzz
EnsmallenGraph : Biblioteca Rust para executar passeios aleatórios ponderados semelhantes a node2vec em gráficos muito grandes
Núcleo Oásis
bp7-rs : Implementação Rust do protocolo de pacote dtn 7
WHATWG : biblioteca URL C++
Xaya Core / Chimera : Um sistema descentralizado de registro e transferência de informações de código aberto
OpenWRT : um sistema operacional Linux voltado para dispositivos embarcados
RcppDeepStateTools : um pacote R específico para Linux, com funções R para executar o equipamento de teste DeepState
Materialize : um banco de dados de streaming para aplicações em tempo real
Ferrugem-Bitcoin
Substrato : Uma estrutura de próxima geração para inovação em blockchain
Solana : um blockchain rápido, seguro e resistente à censura
fwupd : Um projeto que visa tornar a atualização de firmware no Linux automática, segura e confiável
polkadot : Implementação de um nó https://polkadot.network em Rust baseado na estrutura Substrate
systemd : é testado por honggfuzz
freetype : é testado por honggfuzz
ghostscript : é testado por honggfuzz
Fuzzme : modelos de difusão para linguagens de programação e fuzzers
P0 : Fuzzing ImageIO
TrapFuzz : por P0
Fuzztest de Rust
e vários projetos Rust
Lista de discussão de usuários: [email protected], inscreva-se com este link.
Este NÃO é um produto oficial do Google