Harness Scaffolds
Fuzz any library
Drop-in libFuzzer / AFL++ harness scaffolds for 60+ of the most-fuzzed open-source libraries. Each page shows the entry point, common bug classes, and recommended sanitizers.
Image
libpngC
The reference PNG decoder — heavily fuzzed, yet bugs keep surfacing.
Read guide
libjpeg-turboC
SIMD-accelerated JPEG codec — performance optimisations add uncommon code paths.
Read guide
libwebpC
Google's WebP codec — a single critical bug here puts billions of devices at risk.
Read guide
libtiffC
TIFF's flexibility is its attack surface — hundreds of tag/codec combinations rarely all get tested.
Read guide
giflibC
GIF's vintage LZW decoder is deceptively tricky to implement without boundary errors.
Read guide
libheifC++
HEIF is the iPhone default image format — and libheif parses deeply nested container boxes.
Read guide
OpenJPEGC
JPEG 2000's wavelet decoder has integer-overflow-prone arithmetic at every resolution level.
Read guide
libvipsC
libvips parallelises image processing via a lazy pipeline — race-prone and worth fuzzing.
Read guide
Codec
FFmpegC
The universal media Swiss-army knife — every container format is an attack surface.
Read guide
x264C
The most widely deployed H.264 encoder — encoder bugs can corrupt every transcoded stream.
Read guide
x265C++
HEVC's coding-tree architecture multiplies the buffer-sizing complexity versus H.264.
Read guide
libopusC
Opus blends two codecs in one bitstream — SILK and CELT have separate bug surfaces.
Read guide
libvorbisC
Vorbis's VQ codebooks and floor curves involve arithmetic that is easy to overflow.
Read guide
LAME (libmp3lame)C
Decades of MP3 encoder tuning leave corner cases in psychoacoustic model arithmetic.
Read guide
Crypto
OpenSSLC
Heartbleed proved that a single OOB read in OpenSSL breaks the entire internet.
Read guide
libsodiumC
libsodium trades footprint for correctness — fuzzing validates those guarantees hold.
Read guide
Mbed TLSC
The embedded TLS stack — resource constraints mean less overflow headroom.
Read guide
wolfSSLC
A FIPS-certified TLS library for RTOS and automotive — correctness claims demand verification.
Read guide
NettleC
GnuTLS's crypto backend — a bug here silently undermines every GnuTLS session.
Read guide
libgcryptC
GnuPG's cryptographic heart — its S-expression parser processes untrusted key material.
Read guide
BoringSSLC
Chrome and Android's TLS stack — security regressions here are patched globally within hours.
Read guide
LibTomCryptC
A portable crypto toolkit common in embedded firmware — wide deployment, niche test coverage.
Read guide
Compression
zlibC
zlib is in everything — a single inflate bug surfaces in PNG, HTTP, Git, and thousands more.
Read guide
Zstandard (zstd)C
zstd's FSE entropy coder has non-trivial table arithmetic that rewards fuzzing.
Read guide
LZ4C
LZ4's speed comes from minimal safety checks — a single length miscalculation overflows.
Read guide
BrotliC
Chrome ships brotli for HTTPS compression — a decode bug reaches every web user.
Read guide
SnappyC++
Google's speed-first compressor — used in LevelDB, Cassandra, and Hadoop.
Read guide
bzip2C
bzip2 is aging and under-fuzzed — its BWT state machine has never had a full audit.
Read guide
xz-utilsC
After the 2024 backdoor incident, xz-utils is the most scrutinised compression library in existence.
Read guide
Parser
libxml2C
The most widely used XML parser in existence — a bug here affects every Linux system.
Read guide
ExpatC
Python's xml.parsers.expat wraps this — a single overflow cascades into the interpreter.
Read guide
libyamlC
YAML's indentation-sensitivity makes its scanner a rich target for stack-blowing inputs.
Read guide
JsonCppC++
A popular C++ JSON library — deeply nested arrays can exhaust the call stack.
Read guide
yaml-cppC++
yaml-cpp's recursive emitter and parser share fragile depth assumptions.
Read guide
protobuf-cC
Protobuf's wire format is compact but its C deserializer has manual length arithmetic.
Read guide
tomlc99C
TOML config files are user-supplied — any parser that trusts them needs fuzzing.
Read guide
jqC
jq processes untrusted JSON from the network — its query compiler is a hidden attack surface.
Read guide
Archive
libarchiveC
One library, 30 archive formats — each is a separate bug surface with shared allocation logic.
Read guide
libzipC
ZIP64 extensions double the integer surface — oversized field values corrupt allocations.
Read guide
UnRARC++
RAR's proprietary format means limited independent auditing — fuzzing fills the gap.
Read guide
p7zipC++
7-Zip's Linux port processes dozens of formats — each format reader is a distinct bug surface.
Read guide
Network
libcurlC
Billions of devices use libcurl — a URL parse bug here is a universal vulnerability.
Read guide
nghttp2C
nghttp2 powers nginx and curl HTTP/2 — HPACK decompression is a compact integer-overflow surface.
Read guide
libsshC
A server-side SSH implementation in C — a parse bug here means pre-auth remote code execution.
Read guide
libssh2C
PHP and curl use libssh2 for SFTP — a channel overflow here is remotely exploitable.
Read guide
c-aresC
Node.js and curl use c-ares for DNS — a crafted DNS response can corrupt the heap.
Read guide
GnuTLSC
GnuTLS is the TLS stack for GNOME and glib-networking — certificate parsing bugs affect the desktop.
Read guide
Database
SQLiteC
SQLite is in every smartphone, browser, and OS — a query parser bug is universally exploitable.
Read guide
LMDBC
LMDB maps the database file directly into memory — a corrupt file can write anywhere.
Read guide
LevelDBC++
Chrome's IndexedDB and many blockchain nodes use LevelDB — a corrupt SSTable crashes both.
Read guide
RocksDBC++
MySQL, MongoDB, and TiKV embed RocksDB — SST corruption in any of them triggers this code.
Read guide