Un fuzzer orientado a la seguridad, basado en retroalimentación, evolutivo y fácil de usar con interesantes opciones de análisis. Consulte el documento de uso para obtener información básica sobre el uso de Honggfuzz.
Última versión estable: 2.6
Registro de cambios
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang make
Es multiproceso y multiproceso : no es necesario ejecutar varias copias de su fuzzer, ya que honggfuzz puede desbloquear el potencial de todos los núcleos de CPU disponibles con una sola instancia en ejecución. El corpus del archivo se comparte y mejora automáticamente entre todos los procesos difusos.
Es increíblemente rápido cuando se utiliza el modo de fuzzing persistente. Una función LLVMFuzzerTestOneInput simple/vacía se puede probar con hasta 1 mes de iteraciones por segundo en una CPU relativamente moderna (por ejemplo, i7-6700K).
Tiene un sólido historial de errores de seguridad descubiertos: la única vulnerabilidad (hasta la fecha) en OpenSSL con la puntuación crítica fue descubierta por honggfuzz. Consulte el párrafo Trofeos para ver el resumen de los hallazgos hasta la fecha.
Utiliza interfaces de bajo nivel para monitorear procesos (por ejemplo, ptrace en Linux y NetBSD). A diferencia de otros fuzzers, descubrirá e informará señales secuestradas/ignoradas de fallas (interceptadas y potencialmente ocultas por un programa fuzzer).
Fácil de usar, aliméntelo con un directorio de corpus simple (incluso puede estar vacío para la confusión basada en comentarios) y irá ascendiendo, ampliándolo mediante el uso de métricas de cobertura basadas en comentarios.
Admite varios (más que cualquier otro fuzzer basado en retroalimentación basado en cobertura) modos de fuzzing basados en hardware (CPU: conteo de ramas/instrucciones, Intel BTS , Intel PT ) y software. Consulte también el nuevo modo qemu para fuzzing binario de caja negra.
Funciona (al menos) bajo GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin y Android.
Admite el modo de fuzzing persistente (proceso de larga duración que llama repetidamente a una API fuzzed). Puede encontrar más información sobre esto aquí.
Viene con el directorio de ejemplos , que consta de configuraciones fuzz del mundo real para software ampliamente utilizado (por ejemplo, Apache HTTPS, OpenSSL, libjpeg, etc.).
Proporciona un modo de minimización de corpus .
Linux : la biblioteca BFD (libbfd-dev) y libunwind (libunwind-dev/libunwind8-dev), clang-5.0 o superior para modos de cobertura basados en software
FreeBSD : gmake, clang-5.0 o posterior
NetBSD : gmake, clang, capstone, libBlocksRuntime
Android : SDK/NDK de Android. Consulte también este documento detallado sobre cómo compilarlo y ejecutarlo.
Windows -CygWin
Darwin/OS X -Xcode 10.8+
si se utiliza Clang/LLVM para compilar honggfuzz, vincúlelo con la biblioteca BlocksRuntime (libblocksruntime-dev)
Honggfuzz se ha utilizado para encontrar algunos problemas de seguridad interesantes en los principales paquetes de software; Una lista incompleta:
Decenas de problemas de seguridad a través del proyecto OSS-Fuzz
Fallo remoto previo a la autenticación en OpenSSH
Apache HTTPD
Fallo remoto en mod_http2 • CVE-2017-7659
Uso después de la liberación en mod_http2 • CVE-2017-9789
Pérdida de memoria en mod_auth_digest • CVE-2017-9788
Acceso fuera de límites • CVE-2018-1301
Escribir después de forma gratuita en HTTP/2 • CVE-2018-1302
Lectura fuera de límite • CVE-2018-1303
Varias bibliotecas SSL
Lectura OOB remota en OpenSSL • CVE-2015-1789
Uso remoto después de la liberación (RCE potencial, clasificado como crítico ) en OpenSSL • CVE-2016-6309
Escritura OOB remota en OpenSSL • CVE-2016-7054
Lectura OOB remota en OpenSSL • CVE-2017-3731
Uso de memoria no inicializada en OpenSSL
Fallo en LibreSSL
Gratis no válido en LibreSSL
Uso de memoria no inicializada en BoringSSL
Corrupción de la memoria Adobe Flash • CVE-2015-0316
Múltiples errores en la biblioteca libtiff
Múltiples errores en la biblioteca librsvg
Múltiples errores en la biblioteca poppler
Múltiples errores explotables en IDA-Pro
DoS remoto en Crypto++ • CVE-2016-9939
Intérpretes de lenguajes de programación
PHP/Python/Rubí
PHP WDDX
PHP
Perl: #1, #2, #3
Doble libre en LibXMP
Desbordamiento del buffer del montón en SAPCAR • CVE-2017-8852
Se bloquea en libbass
LibreTipo 2 :
CVE-2010-2497
CVE-2010-2498
CVE-2010-2499
CVE-2010-2500
CVE-2010-2519
CVE-2010-2520
CVE-2010-2527
Problemas de corrupción de pila en el analizador OpenType de Windows: #1, #2, #3
Bucle infinito en la unidad NGINX
Un par de problemas en la biblioteca de E/S de archivos 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
Fallo en djvullibre
Múltiples fallos en VLC
Desbordamiento de búfer en ClassiCube
Desbordamiento de búfer de montón (o UAF) en MPV
Desbordamiento del búfer del montón en picoc
Fallos en OpenCOBOL : #1, #2
DoS en ProFTPD : #1 • #2
Múltiples problemas de seguridad en ImageIO (iOS/MacOS)
Corrupción de la memoria en htmldoc
Corrupción de la memoria en OpenDetex
Corrupción de la memoria en Yabasic
Corrupción de la memoria en Xfig
Corrupción de la memoria en LibreOffice
Corrupción de la memoria en ATasm
Corrupción de la memoria en oocborrt • CVE-2020-24753
Corrupción de la memoria en LibRaw
NULL-ptr deref en rebaja de vinculación
Valor no inicializado en MD4C • CVE-2020-26148
17 nuevos errores en fwupd
Afirmación en libvips
[Bloqueo en libocispec ) (https://github.com/containers/libocispec/commit/6079cd9490096cfb46752bd7491c71253418a02c)
Óxido :
pánico() en expresiones regulares #1, #2, #3
pánico() en h2 #1, #2, #3
pánico() en el analizador de sueño #1
pánico() en lewton #1
pánico()/DoS en Ethereum-Paridad #1
crash() en Partes: un administrador de particiones GPT n.° 1
se bloquea en Rust-bitcoin/rust-lightning #1
... y más
QuickFuzz de CIFASIS
OSS-Fuzz
rana y pelusa
intérpretes confusos : por dyjakan
riufuzz : honggfuzz con interfaz de usuario similar a AFL
h2fuzz : desdibujando la implementación HTTP/2 de Apache
honggfuzz-dharma : honggfuzz con fuzzer de gramática dharma
Owl : un sistema para encontrar ataques de concurrencia
aplicaciones-docker-honggfuzz
FFW : Fuzzing para gusanos
honggfuzz-rs : fuzzing Rust con Honggfuzz
pelusa bastante áspera
Mono : un servidor HTTP
Killerbeez API : un marco de fuzzing modular
FuzzM : un marco de fuzzing basado en modelos de caja gris
FuzzOS : por Mozilla Seguridad
Android : por OHA
QDBI : por Quarkslab
conjunto de pruebas-fuzzer : por Google
Estado profundo : por Trail-of-Bits
Quiche-HTTP/3 : por Cloudflare
Bolero : marco de pruebas de propiedad y fuzz
pwnmachine : un archivo vagabundo para el desarrollo de exploits en Linux
Quick700 : análisis de la eficacia de los fuzzers en navegadores y servidores web
python-hfuzz : pegado de honggfuzz y python3
go-hfuzz : pegando honggfuzz y listo
Magma : un punto de referencia de fuzzing de la verdad sobre el terreno
pruebas de modelos arbitrarios : una macro de procedimiento para probar modelos con estado
Clusterfuzz : el motor de fuzzing detrás de OSS-fuzz/Chrome-fuzzing
Servidor HTTP Apache
centos-fuzz
FLUFFI : utilidad totalmente localizada para fuzzing instantáneo de Siemens
Fluent Bit : un rápido procesador y reenviador de registros para Linux
Samba : un servidor SMB
universal-fuzzing-docker : por nnamon
Canokey Core : implementaciones principales de una clave segura de código abierto
uberfuzz2 : un marco de fuzzing cooperativo
TiKV : una base de datos transaccional distribuida de valores clave
monitor fuzz
libmutator : una biblioteca C destinada a generar casos de prueba aleatorios mediante la mutación de casos de prueba legítimos.
StatZone : un analizador de archivos de zona DNS
shub-fuzz/honggfuzz : imagen de singularidad para honggfuzz
Inteligencia de código : fuzzing como servicio
SpecFuzz : búsqueda de vulnerabilidades de Spectre
rcc : un compilador de Rust C
EIP1962Fuzzing : pruebas difusas de varias implementaciones de EIP1962
wasm-fuzz : Fuzzing de wasmer, publicación de blog
propfuzz : herramientas de Rust para combinar fuzzing guiado por cobertura con pruebas basadas en propiedades - de Facebook
Núcleo de Bitcoin : fuzzing
ESP32-Fuzzing-Framework : un marco Fuzzing para aplicaciones ESP32
Fuzzbench : Evaluación comparativa de Fuzzer como servicio
rumpsyscallfuzz : Fuzzing de NetBSD Rump Kernel
libnbd : difuminando libnbd con honggfuzz
EnsmallenGraph : biblioteca Rust para ejecutar paseos aleatorios ponderados similares a node2vec en gráficos muy grandes
Núcleo del oasis
bp7-rs : Implementación Rust del protocolo 7 del paquete dtn
WHATWG : Biblioteca URL C++
Xaya Core / Chimera : un sistema descentralizado de registro y transferencia de información de código abierto
OpenWRT : un sistema operativo Linux dirigido a dispositivos integrados
RcppDeepStateTools : un paquete R específico de Linux, con funciones R para ejecutar el arnés de prueba DeepState
Materialise : una base de datos de streaming para aplicaciones en tiempo real
Rust-Bitcoin
Sustrato : un marco de próxima generación para la innovación blockchain
Solana : una cadena de bloques rápida, segura y resistente a la censura
fwupd : Un proyecto que tiene como objetivo hacer que la actualización del firmware en Linux sea automática, segura y confiable
polkadot : Implementación de un nodo https://polkadot.network en Rust basado en el marco Substrate
systemd : es probado por honggfuzz
freetype : está probado por honggfuzz
Ghostscript : probado por honggfuzz
Fuzzme : plantillas de fuzzing para lenguajes de programación y fuzzers
P0 : Imagen borrosaIO
TrapFuzz : por P0
La prueba de fuzz de Rust
y múltiples proyectos de Rust
Lista de correo de usuarios: [email protected], regístrese con este enlace.
Este NO es un producto oficial de Google.