AFLplusplus / AFLplusplus/LibAFL

Support 128-bit AVX/SIMD comparison logging and mutation

Ouverte
#3,749 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
Rust
Étoiles
2.6k
Forks
481
Merge moyen
2 j 30 min
PR mergées (30 j)
16

Description

**Is your feature request related to a problem? Please describe.**
When fuzzing high-performance targets, modern codebases frequently use AVX/SIMD instructions for comparisons. Since libafl and libafl_targets cap comparison logging at 64-bit values, the fuzzer is completely blind to 128-bit, 256-bit, and 512-bit vector comparisons significantly limiting mutation effectiveness on these code paths.

**Describe the solution you'd like**
To add native 128-bit comparison support to CmpLog and the mutation framework, with room to extend to 256/512-bit later. The main changes would be: adding a U128 variant to CmpValues, widening CmplogBytes, fixing up the CmpMap dictionary extraction to properly reconstruct u128 halves, and hooking it all into havoc_mutations::dict_insert()

**Describe alternatives you've considered**
CmpValues::Bytes sort of works but loses the semantic aware mutations that make CmpLog actually useful. Manual per-target hooking is another option, but it's messy putting this in the core CmpMap means every CmpLog-enabled target gets the benefit automatically.

**Additional context**
Without this, achieving deep coverage in cryptographic routines, vectorized string parsers, and multimedia libraries remains substantially harder, as magic bytes and equality conditions hidden behind SIMD optimizations go unresolved.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.