3 ms·
Differential analysis of x86-64 instruction decoders (2021) [pdf]
- peter_d_sherman 3y ago>"MISHEGOS is a differential fuzzer for x86-64 instruction decoders. Instead of relying on a “golden” decoder or hardware decoder for ground truth within its difference oracle, MISHEGOS runs multiple unreliable decoders in parallel on an instruction candidate and uses their consensus or disagreement to mark the input as likely erroneous. As of writing, nine x86-64 instruction decoders written in a variety of languages can be fuzzed by MISHEGOS: • GNU libopcodes (C) [21] (https://www.gnu.org/software/binutils/ https://www.gnu.org/software/binutils/) • Capstone (C++) [22] (https://github.com/capstone-engine/capstone https://github.com/capstone-engine/capstone) • DynamoRIO (C and C++) [2] (https://github.com/DynamoRIO/dynamorio https://github.com/DynamoRIO/dynamorio) • fadec (C) [23] (https://github.com/aengelke/fadec https://github.com/aengelke/fadec) • Udis86 (C) [24] (https://github.com/vmt/udis86 https://github.com/vmt/udis86) • Intel XED (C) [25] (https://github.com/intelxed/xed https://github.com/intelxed/xed) • Zydis (C) [26] (https://github.com/zyantific/zydis https://github.com/zyantific/zydis) • bddisasm (C) [27] (https://github.com/bitdefender/bddisasm https://github.com/bitdefender/bddisasm) • Iced (Rust) [28] (https://github.com/icedland/iced https://github.com/icedland/iced)" (Related software that contains x86[-64] assemblers and/or disassemblers: gas, masm, dumpbin, nasm, ndisasm, fasm, tasm, yasm, etc.)