Table of Contents
Fetching ...

Fuzz Smarter, Not Harder: Towards Greener Fuzzing with GreenAFL

Ayse Irmak Ercevik, Aidan Dakhama, Melane Navaratnarajah, Yazhuo Cao, Leo Fernandes

TL;DR

The paper addresses the carbon footprint and energy cost of continuous fuzzing campaigns. It introduces GreenAFL, energy-aware extensions to AFL++, incorporating energy into corpus minimisation and fuzzing loop heuristics via cppjoules and an LD_PRELOAD wrapper. An ablation study on OSS-Fuzz benchmarks shows that energy-aware corpus minimisation reduces energy consumption while maintaining or improving coverage; energy-guided fuzzing shows promise but needs tuning. The results indicate that energy-based strategies can increase coverage-per-watt and lower infrastructure costs, making greener fuzzing attractive for industrial-scale deployments.

Abstract

Fuzzing has become a key search-based technique for software testing, but continuous fuzzing campaigns consume substantial computational resources and generate significant carbon footprints. Existing grey-box fuzzing approaches like AFL++ focus primarily on coverage maximisation, without considering the energy costs of exploring different execution paths. This paper presents GreenAFL, an energy-aware framework that incorporates power consumption into the fuzzing heuristics to reduce the environmental impact of automated testing whilst maintaining coverage. GreenAFL introduces two key modifications to traditional fuzzing workflows: energy-aware corpus minimisation considering power consumption when reducing initial corpora, and energy-guided heuristics that direct mutation towards high-coverage, low-energy inputs. We conduct an ablation study comparing vanilla AFL++, energy-based corpus minimisation, and energy-based heuristics to evaluate the individual contributions of each component. Results show that highest coverage, and lowest energy usage is achieved whenever at least one of our modifications is used.

Fuzz Smarter, Not Harder: Towards Greener Fuzzing with GreenAFL

TL;DR

The paper addresses the carbon footprint and energy cost of continuous fuzzing campaigns. It introduces GreenAFL, energy-aware extensions to AFL++, incorporating energy into corpus minimisation and fuzzing loop heuristics via cppjoules and an LD_PRELOAD wrapper. An ablation study on OSS-Fuzz benchmarks shows that energy-aware corpus minimisation reduces energy consumption while maintaining or improving coverage; energy-guided fuzzing shows promise but needs tuning. The results indicate that energy-based strategies can increase coverage-per-watt and lower infrastructure costs, making greener fuzzing attractive for industrial-scale deployments.

Abstract

Fuzzing has become a key search-based technique for software testing, but continuous fuzzing campaigns consume substantial computational resources and generate significant carbon footprints. Existing grey-box fuzzing approaches like AFL++ focus primarily on coverage maximisation, without considering the energy costs of exploring different execution paths. This paper presents GreenAFL, an energy-aware framework that incorporates power consumption into the fuzzing heuristics to reduce the environmental impact of automated testing whilst maintaining coverage. GreenAFL introduces two key modifications to traditional fuzzing workflows: energy-aware corpus minimisation considering power consumption when reducing initial corpora, and energy-guided heuristics that direct mutation towards high-coverage, low-energy inputs. We conduct an ablation study comparing vanilla AFL++, energy-based corpus minimisation, and energy-based heuristics to evaluate the individual contributions of each component. Results show that highest coverage, and lowest energy usage is achieved whenever at least one of our modifications is used.

Paper Structure

This paper contains 10 sections, 2 figures, 1 table.

Figures (2)

  • Figure 1: Overview of GreenAFL’s energy-guided fuzzing loop. The green boxes with bold text highlight where our energy-aware heuristics are applied, ( , energy-aware score computation) and ( , airtime scheduling).
  • Figure 2: Edges found over time for jsoncpp. Each curve shows the mean across three repetition for a given configuration.