Fuzzing PostgreSQL
summary
Shows applying fuzzing to Postgres’ client library libpq, building minimal harnesses that feed mutated protocol inputs directly into library entry points, and running AFL and honggfuzz; an experiment hits ~40 execs/sec with full coverage instrumentation versus a faster run at ~7,000 execs/sec. Describes practical pitfalls: PostgreSQL is stateful with one-process-per-connection, TCP setup slows fuzzing, and hardcoded length parameters must be included in fuzzer input to reach deeper branches. Prior work finds a few real bugs; continuous fuzzing on PG remains an open effort.
AI-written summary · about
chapters (12)
- 0:00Music & introduction
- 0:47Speaker intro: security and systems background
- 1:39What is fuzzing? From random to coverage feedback
- 5:00Toy C program: 6 branches to a hidden crash
- 8:28Fuzzers in action: AFL and Honggfuzz
- 10:36Pulling JPEGs out of thin air: fuzzers as learners
- 11:56Testing is polite, fuzzing is rude
- 13:37Why fuzz PostgreSQL? An attack-surface map
- 16:33Networking protocol and libpq as the high-value target
- 17:00Prior talks and the challenges of fuzzing Postgres
- 20:21A simpler harness approach and live demo
- 22:20Lessons learned and what's next
related talks
50mHacking on Postgres: An Overview
13mWingFuzz: Implementing Continuous Fuzzing for DBMSs
53mFuzz Testing for Fun and Profit
45mFuzzing with AFL
51mHow does PostgreSQL actually work
18mAccelerating Fuzzing through Prefix-Guided Execution
48mWho's the Fairest of Them All? Postgres Interface Performance
53mFuzzing 101
