Overview
Arithmetic Mutation is a fuzzing mutation technique described in the context of American Fuzzy Lop (AFL). AFL is characterized as an out-of-process, coverage-guided grey-box fuzzer. Within AFL’s set of mutations, arithmetic mutation modifies inputs by adding or subtracting integers. [Arithmetic mutation behavior]
Role in AFL
AFL uses multiple mutation strategies to discover new behaviors in the software under test. The evidence identifies three notable examples:
- Bitflip mutation, which flips varying numbers of bits.
- Arithmetic mutation, which adds or subtracts integers.
- Havoc mutation, which combines many individual mutations and applies them at random positions. [AFL notable mutations]
AFL detects new behaviors using edge coverage. In this setting, arithmetic mutation is one of the mechanisms that can generate altered test vectors whose execution may expose new coverage. [AFL behavior discovery]
Execution context
The cited source describes AFL as an out-of-process fuzzer. In contrast to in-process fuzzers, this means AFL resets the whole process, and the software under test does not require a custom reset function. The same source also notes that AFL uses a trim mutation to reduce test-vector size without changing measured coverage, since smaller test vectors tend to execute faster. [AFL execution model]
Technical characterization
From the provided evidence, the defining technical property of Arithmetic Mutation is simple and numeric: it changes an input by performing integer addition or subtraction. The evidence does not specify the exact integer widths, byte ordering, operand selection rules, or scheduling policy used for arithmetic mutation; therefore, those implementation details are not asserted here.