Avatar is a research framework that enables complex dynamic analysis of embedded devices by orchestrating the execution of an emulator together with real hardware. It is built on top of S2E/Qemu, KLEE and LLVM and its main goal is to enable advanced security analysis of pristine ARM source-less firmware,
eg. through dynamic tracing or symbolic execution.
This talk will show key features of S2E in enabling runtime binary analysis (using Qemu virtualization and KLEE/LLVM symbolic execution) and how Avatar uses it to orchestrate analysis and execution at the emulator<->device edge.
To address the growing concerns about the security of embedded
systems, it is important to perform accurate analysis of
firmware binaries, even when the source code or the hardware
documentation are not available. Unlike static analysis, dynamic
analysis relies on the ability to execute software in a controlled
environment, which is however difficult due the lack of documentation
and the large variety of subtly different hardware on the market.
In this talk we present Avatar, a framework that enables such complex
analysis of embedded devices. In particular we will introduce S2E,
a C++ project which leverages several components to do binary emulation,
including:
* Qemu for machine virtualization
* LLVM as the IR of choice
* KLEE for symbolic execution of LLVM IR
* S2E plugins for hooking into data and control flow
Then we show the Avatar framework, which acts as an analysis driver,
context switcher and memory forwarder. Avatar is currently written
in Python and on top of basic features, it includes several
techniques to improve the system's performance as well as heuristics
to help in vulnerability discovery.
Both project are FLOSS. S2E is a research project from EPFL, while
Avatar is under development at Eurecom.