Ji Shi, Zhun Wang, Zhiyao Feng, Yang Lan, Shisong Qin, Wei You, Wei Zou, Mathias Payer, Chao Zhang
6 min
Effective fuzzing requires high-quality inputs that can bypass sanity checks and reach deep code paths. While format-aware fuzzing is a proven strategy, existing reverse engineering techniques often struggle with accuracy, labor-intensive manual rules, or scalability issues. AIFORE addresses these challenges by automatically inferring input formats from the target program's execution behavior rather than relying on static specifications.
The approach consists of three main components:
AIFORE significantly outperforms state-of-the-art format-aware fuzzers and reverse engineering tools. In evaluations across 15 real-world programs and 15 different file formats, AIFORE achieved an average field boundary recognition accuracy of 84.06% and a field type prediction accuracy of 84.26% on untrained formats. In 24-hour fuzzing tests, AIFORE achieved higher basic block coverage than existing tools like ProFuzzer and WEIZZ, and successfully uncovered 20 bugs that were missed by other fuzzers.
By automating the extraction of semantic input formats, AIFORE reduces the need for manual effort in crafting input templates while simultaneously improving the efficiency of vulnerability discovery. Its ability to learn from program behavior—rather than relying on brittle, manually defined rules—makes it a robust solution for testing complex, real-world binary formats. The integration of a machine-learning-based type predictor and a format-aware power scheduler allows the fuzzer to adaptively explore program states that are otherwise difficult to reach.
Alex: What do the results actually support? Where's the load-bearing evidence?
Sam: The main finding is that AIFORE outperforms existing tools on both tasks — boundary identification and semantic classification — and that this translates into fuzzing performance. The headline result is twenty bugs discovered that other fuzzers missed. That's the number the central claim rests on, and it's meaningful because those aren't just additional crashes on the same code paths — they're bugs that were invisible to fuzzers without format awareness.
Alex: Twenty bugs is a concrete outcome, but how much of that gain comes from better boundaries versus better semantic types? Is there an ablation that separates those contributions?
Sam: The paper treats them as a pipeline — boundaries first, semantics second — and the evaluation supports that both matter. Better boundaries mean the fuzzer is mutating coherent fields rather than arbitrary byte ranges, which dramatically increases the chance of reaching deep parsing logic. The semantic types then let the fuzzer generate inputs that are structurally plausible — valid checksums, correct length values — so the program doesn't reject them before reaching the vulnerable code. Strip either component and you'd expect the bug count to drop, but the paper doesn't give you a clean ablation that quantifies exactly how much each contributes in isolation.
Alex: That's a gap a careful reviewer would flag.
Sam: It is. And there are harder constraints worth naming. AIFORE is entirely dependent on dynamic taint analysis, which means it can only learn about fields the program actually processes during the observed execution. If the parser is lazy, or if certain fields are only accessed under conditions that don't appear in your seed inputs, those fields stay invisible. The tool has no mechanism for inferring structure it never sees exercised.
Alex: And I'd imagine encrypted or obfuscated inputs break the whole approach.
Sam: Completely. The execution patterns AIFORE relies on are precisely what encryption and obfuscation are designed to hide. If the binary decrypts the input before parsing it, taint analysis sees the decrypted bytes, not the format you care about. There's also a granularity limitation — the current implementation works at byte level, so bit-packed fields common in custom hardware protocols are outside its scope.
Alex: So it's a specialized instrument, not a universal binary analysis tool.
Sam: That's the right framing. It's optimized for binary formats with byte-aligned structures — network protocols, document parsers, media formats. For that class of targets, the approach is well-suited. The natural extensions would be integrating symbolic execution to handle encrypted inputs, or pushing the granularity down to bit level for hardware-adjacent targets.
Alex: Stepping back — what's the methodological contribution that matters most here?
Sam: I'd say it's the shift in what you use as ground truth. Instead of trying to recover the programmer's intent from static analysis, you use the binary's own execution behavior as the oracle. That's a more reliable signal, and it scales to proprietary formats where you have no documentation and no source code. The twenty bugs are evidence that the approach is practically useful, not just theoretically cleaner.
Alex: A meaningful step toward automating what used to be entirely manual work. Thanks for walking us through it, Sam.
Sam: Thanks for listening to ResearchPod.