InsectACIDE is the first kernel-level CFI for embedded and real-time systems that does not require binary instrumentation and is real-time friendly.
The results of this project were published in the paper entitled "[InsectACIDE: Debugger-Based Holistic Asynchronous CFI for Embedded System]" in the IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS) 2024. If you want to cite our paper in your work, please use the following BibTeX entry.
@inproceedings{wang2024insectacide,
title = {InsectACIDE: Debugger-Based Holistic Asynchronous CFI for Embedded System},
author = {Wang, Yujie and Mack, Cailani Lemieux and Tan, Xi and Zhang, Ning and Zhao, Ziming and Baruah, Sanjoy and Ward, Bryan C.},
booktitle = {IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)},
year = {2024},
}
This repository is organized into three main directories:
-
code\Sherloc-Cortex-M-CFVD\Sherloc_runtime: InsectACIDE implementation based on Sherloc.
-
code\Sherloc-Cortex-M-CFVD\Example\Sherloc_FreeRTOS_MPU_S_NS\FreeRTOS_MPU_ns: example protection target.
-
code\Sherloc-Cortex-M-CFVD\host_tool: tools for static analysis for InsectACIDE.
-
Environment prerequisites
-
Hardware: MPS2+ board
-
System: Windows. We have tested on Windows 11. Windows 10 may also work.
-
Software: licensed Keil uVision5, python3, Jupyter notebook
-
Required Python libraries: please refer to
code\Sherloc-Cortex-M-CFVD\host_tools\evaluation\requirements.txt
-
Knowledge prerequisites
-
C and Python programming languages.
-
Keil uVision5 IDE.
-
Cortex-M33 architecture.
This folder contains the InsectACIDE implementation and is organized into the following sub-folders:
-
src: source code for InsectACIDE.
-
inc: header files for InsectACIDE.
-
src: source files for InsectACIDE.
-
freertos: FreeRTOS kernel code.
-
Configure the board loading files.
-
Find the file system of this board, usually the drive name is
V2M_MPS2
. -
Using
AN505
FPGA Image. -
Set the environment variables ( e.g., compiler toolchain path) in
scripts\auto_run.ps1
.
- execute the script
scripts\auto_run.ps1
. This script will compile and copy the compiled images to the boardE:\SOFTWARE
.
- Place your task in
task1.cpp
, and your task name into the filecode\Sherloc-Cortex-M-CFVD\host_tools\evaluation\rtos\task.json
.
InsectACIDE is released under the Apache License.