Embedded devices typically offer weak hardware and software security and yet they are often used to achieve critical tasks. Several attacks (such as buffer overflow) can bypass the default program's behaviour and lead to arbitrary code execution. To tackle this problem, CFI (Control Flow Integrity) can be used at the cost of a significant overhead, which may not fit the embedded world's constraints. In this paper we discuss EE-CFI, an Externalized and Embedded CFI solution. EE-CFI is based on the instrumentation of source-code to produce a trace of its execution path. This trace is validated by an external monitor, responsible for verifying that the code path is legitimate with regard to the CFG (Control Flow Graph) extracted at compilation time. This solution uses LLVM and is designed to be compatible with embedded constraints and adaptable to the heterogeneity of embedded devices.
展开▼