Un fuzzer orienté sécurité, basé sur le feedback, évolutif et facile à utiliser avec des options d'analyse intéressantes. Voir le document d'utilisation pour une introduction à l'utilisation de Honggfuzz.
Dernière version stable : 2.6
Journal des modifications
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang make
C'est multi-processus et multi-thread : il n'est pas nécessaire d'exécuter plusieurs copies de votre fuzzer, car honggfuzz peut libérer le potentiel de tous vos cœurs de processeur disponibles avec une seule instance en cours d'exécution. Le corpus de fichiers est automatiquement partagé et amélioré entre tous les processus fuzzés.
C'est incroyablement rapide lorsque le mode de fuzzing persistant est utilisé. Une fonction LLVMFuzzerTestOneInput simple/vide peut être testée avec jusqu'à 1 mo d'itérations par seconde sur un processeur relativement moderne (par exemple i7-6700K).
Possède un solide historique de bogues de sécurité découverts : la seule (à ce jour) vulnérabilité dans OpenSSL avec la note critique a été découverte par honggfuzz. Voir le paragraphe Trophées pour le résumé des résultats à ce jour.
Utilise des interfaces de bas niveau pour surveiller les processus (par exemple ptrace sous Linux et NetBSD). Contrairement aux autres fuzzers, il découvrira et signalera les signaux détournés/ignorés provenant de crashs (interceptés et potentiellement cachés par un programme fuzzé).
Facile à utiliser, alimentez-le dans un simple répertoire de corpus (peut même être vide pour le fuzzing basé sur les commentaires), et il progressera en l'étendant en utilisant des métriques de couverture basées sur les commentaires.
Prend en charge plusieurs (plus que tout autre fuzzer basé sur la couverture) basés sur le matériel (CPU : comptage de branches/instructions, Intel BTS , Intel PT ) et les modes de fuzzing basés sur le logiciel. Consultez également le nouveau mode qemu pour le fuzzing binaire boîte noire.
Fonctionne (au moins) sous GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin et Android.
Prend en charge le mode fuzzing persistant (processus de longue durée appelant une API fuzzée à plusieurs reprises). Pour en savoir plus, cliquez ici.
Il est livré avec le répertoire d'exemples , composé de configurations fuzz réelles pour des logiciels largement utilisés (par exemple Apache HTTPS, OpenSSL, libjpeg, etc.).
Fournit un mode de minimisation du corpus .
Linux - La bibliothèque BFD (libbfd-dev) et libunwind (libunwind-dev/libunwind8-dev), clang-5.0 ou supérieur pour les modes de couverture logiciels
FreeBSD - gmake, clang-5.0 ou plus récent
NetBSD - gmake, clang, synthèse, libBlocksRuntime
Android -SDK/NDK Android. Consultez également cette documentation détaillée pour savoir comment le construire et l'exécuter
Windows -CygWin
Darwin/OS X -Xcode 10.8+
si Clang/LLVM est utilisé pour compiler honggfuzz - liez-le à la bibliothèque BlocksRuntime (libblocksruntime-dev)
Honggfuzz a été utilisé pour trouver quelques problèmes de sécurité intéressants dans les principaux progiciels ; Une liste incomplète :
Des dizaines de problèmes de sécurité via le projet OSS-Fuzz
Crash à distance de pré-autorisation dans OpenSSH
Apache HTTPD
Crash à distance dans mod_http2 • CVE-2017-7659
Utilisation après libération dans mod_http2 • CVE-2017-9789
Fuite de mémoire dans mod_auth_digest • CVE-2017-9788
Accès hors limites • CVE-2018-1301
Écrivez après libre en HTTP/2 • CVE-2018-1302
Lecture hors limite • CVE-2018-1303
Diverses bibliothèques SSL
Lecture OOB à distance dans OpenSSL • CVE-2015-1789
Utilisation à distance après libération (RCE potentiel, classé comme critique ) dans OpenSSL • CVE-2016-6309
Écriture OOB à distance dans OpenSSL • CVE-2016-7054
Lecture OOB à distance dans OpenSSL • CVE-2017-3731
Utilisation de mémoire non initialisée dans OpenSSL
Crash dans LibreSSL
Gratuit invalide dans LibreSSL
Utilisation de mémoire non initialisée dans BoringSSL
Corruption de la mémoire Adobe Flash • CVE-2015-0316
Plusieurs bugs dans la bibliothèque libtiff
Plusieurs bugs dans la bibliothèque librsvg
Plusieurs bugs dans la bibliothèque poppler
Plusieurs bugs exploitables dans IDA-Pro
DoS à distance dans Crypto++ • CVE-2016-9939
Interpréteurs de langage de programmation
PHP/Python/Rubis
PHPWDDX
PHP
Perl : #1, #2, #3
Double-libre dans LibXMP
Dépassement de tampon de tas dans SAPCAR • CVE-2017-8852
Crashes dans Libbass
LibreType 2 :
CVE-2010-2497
CVE-2010-2498
CVE-2010-2499
CVE-2010-2500
CVE-2010-2519
CVE-2010-2520
CVE-2010-2527
Problèmes de corruption de pile dans l'analyseur Windows OpenType : #1, #2, #3
Boucle infinie dans l'unité NGINX
Quelques problèmes dans la bibliothèque d'E/S de fichiers MATLAB MAT : #1, #2, #3, #4, #5
MSNA n°1, n°2, n°3, n°4, n°5, n°6, n°7, n°8, n°9, n°10
Samba tdbdump + tdbtool, #2, #3, #4, #5, #6 CVE-2019-14907 CVE-2020-10745 CVE-2021-20277 LPRng_time
Crash dans Djvulibre
Plusieurs crashs dans VLC
Débordement de tampon dans ClassiCube
Dépassement de tampon de tas (ou UAF) dans MPV
Débordement de tampon de tas dans picoc
Crashes dans OpenCOBOL : #1, #2
DoS dans ProFTPD : #1 • #2
Plusieurs problèmes de sécurité dans ImageIO (iOS/MacOS)
Corruption de la mémoire dans HTMLdoc
Corruption de la mémoire dans OpenDetex
Corruption de la mémoire dans Yabasic
Corruption de la mémoire dans Xfig
Corruption de la mémoire dans LibreOffice
Corruption de la mémoire dans ATasm
Corruption de la mémoire dans oocborrt • CVE-2020-24753
Corruption de la mémoire dans LibRaw
NULL-ptr deref dans peg-markdown
Valeur non initialisée dans MD4C • CVE-2020-26148
17 nouveaux bugs dans fwupd
Assertion dans libvips
[Crash dans libocispec )(https://github.com/containers/libocispec/commit/6079cd9490096cfb46752bd7491c71253418a02c)
Rouiller :
panic() dans les expressions régulières n°1, n°2, n°3
panique() dans h2 #1, #2, #3
panic() dans l'analyseur de sommeil n°1
panique() dans Lewton #1
panic()/DoS dans Ethereum-Parité #1
crash() dans Parts - un gestionnaire de partition GPT #1
crash dans rust-bitcoin/rust-lightning #1
... et plus encore
QuickFuzz par CIFASIS
OSS-Fuzz
Grenouille et duvet
interprètes fuzzing : par dyjakan
riufuzz : honggfuzz avec une interface utilisateur de type AFL
h2fuzz : fuzzing l'implémentation HTTP/2 d'Apache
honggfuzz-dharma : honggfuzz avec fuzzer de grammaire du dharma
Owl : un système de recherche d'attaques concurrentes
honggfuzz-docker-apps
FFW : Fuzzing pour les vers
honggfuzz-rs : fuzzer Rust avec Honggfuzz
assez dur
Monkey : un serveur HTTP
API Killerbeez : un framework de fuzzing modulaire
FuzzM : un framework de fuzzing basé sur un modèle de boîte grise
FuzzOS : par Mozilla Sécurité
Android : par OHA
QDBI : par Quarkslab
fuzzer-test-suite : par Google
DeepState : par Trail-of-Bits
Quiche-HTTP/3 : par Cloudflare
Bolero : framework de tests de fuzz et de propriétés
pwnmachine : un fichier vagrant pour le développement d'exploits sous Linux
Quick700 : analyser l'efficacité des fuzzers sur les navigateurs web et les serveurs web
python-hfuzz : coller honggfuzz et python3
go-hfuzz : coller du honggfuzz et c'est parti
Magma : un benchmark de fuzzing de vérité terrain
arbitraire-model-tests : une macro procédurale pour tester des modèles avec état
Clusterfuzz : le moteur de fuzzing derrière OSS-fuzz/Chrome-fuzzing
Serveur HTTP Apache
centos-fuzz
FLUFFI : Utilitaire entièrement localisé pour le fuzzing instantané par Siemens
Fluent Bit : un processeur de journaux rapide et un redirecteur pour Linux
Samba : un serveur PME
universal-fuzzing-docker : par nnamon
Canokey Core : principales implémentations d'une clé sécurisée open source
uberfuzz2 : un framework de fuzzing coopératif
TiKV : une base de données clé-valeur transactionnelle distribuée
moniteur de fuzz
libmutator : une bibliothèque C destinée à générer des cas de tests aléatoires en mutant des cas de tests légitimes
StatZone : un analyseur de fichiers de zones DNS
shub-fuzz/honggfuzz : image de singularité pour honggfuzz
Code Intelligence : fuzzing-as-a-service
SpecFuzz : fuzzing pour les vulnérabilités Spectre
rcc : un compilateur Rust C
EIP1962Fuzzing : tests flous de diverses implémentations EIP1962
wasm-fuzz : Fuzzing de wasmer, article de blog
propfuzz : Outils Rust pour combiner le fuzzing guidé par la couverture avec des tests basés sur les propriétés - de Facebook
Bitcoin Core : fuzzing
ESP32-Fuzzing-Framework : Un framework de Fuzzing pour les applications ESP32
Fuzzbench : analyse comparative Fuzzer en tant que service
rumpsyscallfuzz : Fuzzing du noyau NetBSD Rump
libnbd : fuzzer libnbd avec honggfuzz
EnsmallenGraph : bibliothèque Rust pour exécuter des marches aléatoires pondérées de type node2vec sur de très grands graphiques
Noyau d'Oasis
bp7-rs : Implémentation Rust du protocole 7 du bundle dtn
WHATWG : bibliothèque d'URL C++
Xaya Core / Chimera : Un système décentralisé d'enregistrement et de transfert d'informations open source
OpenWRT : Un système d'exploitation Linux ciblant les appareils embarqués
RcppDeepStateTools : un package R spécifique à Linux, avec des fonctions R pour exécuter le harnais de test DeepState
Materialise : Une base de données streaming pour applications temps réel
Rust-Bitcoin
Substrat : Un cadre de nouvelle génération pour l'innovation blockchain
Solana : Une blockchain rapide, sécurisée et résistante à la censure
fwupd : Un projet qui vise à rendre la mise à jour du firmware sous Linux automatique, sûre et fiable
polkadot : Implémentation d'un nœud https://polkadot.network dans Rust basé sur le framework Substrate
systemd : est testé par honggfuzz
freetype : est testé par honggfuzz
ghostscript : est testé par honggfuzz
Fuzzme : modèles de fuzzing pour langages de programmation et fuzzers
P0 : Fuzzing ImageIO
TrapFuzz : par P0
Le plus flou de Rust
et plusieurs projets Rust
Liste de diffusion des utilisateurs : [email protected], inscrivez-vous avec ce lien.
Ceci n'est PAS un produit Google officiel