You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ut_SG560D/UM.9.14/external/honggfuzz
quectel 55794fdde8 QCM6490:Alyssa:upload QCM6490 android12 base code.
Change-Id: If3e3c4e01b19443714d880ae669aaa8b39edfff7
4 years ago
..
docs QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
examples QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
hfuzz_cc QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
includes QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
libhfcommon QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
libhfnetdriver QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
libhfuzz QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
linux QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
mac QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
netbsd QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
posix QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
socketfuzzer QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
third_party QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
tools QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
Android.bp QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
CHANGELOG QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
CONTRIBUTING QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
COPYING QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
Dockerfile QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
LICENSE QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
METADATA QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
MODULE_LICENSE_APACHE2 QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
Makefile QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
NOTICE QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
OWNERS QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
README.md QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
arch.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
cmdline.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
cmdline.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
display.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
display.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
fuzz.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
fuzz.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
honggfuzz.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
honggfuzz.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
input.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
input.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
mangle.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
mangle.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
report.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
report.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
sanitizers.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
sanitizers.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
screenshot-honggfuzz-1.png QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
socketfuzzer.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
socketfuzzer.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
subproc.c QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago
subproc.h QCM6490:Alyssa:upload QCM6490 android12 base code. 4 years ago

README.md

honggfuzz

Description

A security oriented, feedback-driven, evolutionary, easy-to-use fuzzer with interesting analysis options. See USAGE for the description of command-line options.

  • It's multi-process and multi-threaded: no need to run multiple copies of your fuzzer, as honggfuzz can unlock potential of all your available CPU cores with a single supervising process. The file corpus is automatically shared and improved between the fuzzing threads and fuzzed processes.
  • It's blazingly fast when in the persistent fuzzing mode). A simple/empty LLVMFuzzerTestOneInput function can be tested with up to 1mo iterations per second on a relatively modern CPU (e.g. i7-6700K)
  • Has a solid track record of uncovered security bugs: the only (to the date) vulnerability in OpenSSL with the critical score mark was discovered by honggfuzz. See the Trophies paragraph for the summary of findings to the date
  • Uses low-level interfaces to monitor processes (e.g. ptrace under Linux and NetBSD). As opposed to other fuzzers, it will discover and report hijacked/ignored signals from crashes (intercepted and potentially hidden by a fuzzed program)
  • Easy-to-use, feed it a simple corpus directory (can even be empty) and it will work its way up expanding it utilizing feedback-based coverage metrics
  • Supports several (more than any other coverage-based feedback-driven fuzzer) hardware-based (CPU: branch/instruction counting, Intel BTS, Intel PT) and software-based feedback-driven fuzzing methods known from other fuzzers (libfuzzer, afl)
  • Works (at least) under GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin and Android
  • Supports the persistent fuzzing mode (long-lived process calling a fuzzed API repeatedly) with libhfuzz/libhfuzz.a. More on that can be found here
  • It comes with the examples directory, consisting of real world fuzz setups for widely-used software (e.g. Apache and OpenSSL)


Code

Requirements

  • Linux - The BFD library (libbfd-dev) and libunwind (libunwind-dev/libunwind8-dev), clang-4.0 or higher for software-based coverage modes
  • FreeBSD - gmake, clang-3.6 or newer (clang-devel/4.0 suggested)
  • NetBSD - gmake, clang, capstone, libBlocksRuntime
  • Android - Android SDK/NDK. Also see this detailed doc on how to build and run it
  • Windows - CygWin
  • Darwin/OS X - Xcode 10.8+
  • if Clang/LLVM is used to compile honggfuzz - link it with the BlocksRuntime Library (libblocksruntime-dev)

Trophies

Honggfuzz has been used to find a few interesting security problems in major software packages; An incomplete list:

Projects utilizing Honggfuzz

Examples

The examples directory contains code demonstrating (among others) how to use honggfuzz to find bugs in the OpenSSL library and in the Apache HTTPD web server.

Other

This is NOT an official Google product