BackFlow: Backward Edge Control Flow Enforcement for Low End ARM Microcontrollers

Cyril Bresch1,a, Roman Lysecky2 and David Hély1,b

1Univ. Grenoble Alpes Grenoble INP LCIS F-26000 Valence France
acyril.bresch@lcis.grenoble-inp.fr
bdavid.hely@lcis.grenoble-inp.fr
2Dept of Electrical and Computer Engineering University of Arizona USA
rlysecky@ece.arizona.edu

ABSTRACT

This paper presents BackFlow, a compiler-based toolchain that enforces indirect backward edge control flow integrity for low-end ARM Cortex-M microprocessors. BackFlow is implemented within the Clang/LLVM compiler and supports the ARM instruction set and its subset Thumb. The control flow integrity generated by the compiler relies on a bitmap, where each set bit indicates a valid pointer destination. The efficiency of the framework is benchmarked using an STM32 NUCLEO F446RE microcontroller. The obtained results show that the control flow integrity solution incurs an execution time overhead ranging from 1.5 to 4.5%.

Keywords: CFI, Memory Safety, Compiler.



Full Text (PDF)