Skip to main content
Background Image

Research Project: AID(L)ing the Fuzzer

Semester thesis at EPFL in spring 2025, conducted in the HexHive group under Philipp Mao and Prof. Mathias Payer. A really cool research group with really nice people - always nice to bump into them again at CTFs in Lausanne, or at the parties afterwards ;)

Android system services talk to each other through Binder IPC, with their interfaces formally specified in AIDL. Google’s existing fuzzing setup for these services is the binder-parcel fuzzer, which treats every transaction as an opaque byte stream and lets the fuzzer rediscover method codes, argument layouts and parcelable boundaries by chance. The result: 40-80 % of inputs die at parsing or validation before ever reaching service logic. The thesis project, AID(L)ing the Fuzzer, plugs into the upstream AIDL compiler with a new “fuzz-harness” backend that emits C++ libFuzzer harnesses with type-safe argument packing, custom mutators, and deterministic handling of Binder objects and file descriptors. Across six AOSP services the autogenerated harnesses hit 85 % - and often 99 % - successful transactions, reaching service logic almost immediately.

I was honored to be offered an internship to keep building this out, but unfortunately wasn’t able to take it due to time constraints. Maybe next time.

Emanuel Mairoll
Author
Emanuel Mairoll
Forward & Reverse Engineer