Secure Coding against Hardware Attacks
Project ID:
P10_23
Email:
Co-Principal Investigator(s):
Dr. J. M. Emmert, Dr. Nan Niu
Principal Investigator:
Dr. Boyang Wang
Topic Areas:
Side-Channel Attacks
Abstract
This project proposes to develop a new method to automatically detect lines in C code (and assembly code) that are vulnerable under hardware attacks, including side-channel attacks and fault injection attacks. The overarching goal is to promote the security and resilience of embedded systems against hardware attacks by minimizing vulnerabilities at the software level. This will be a multi-year project in which the entire framework eventually will be able to perform automatic detection and repair over C and assembly code against side-channel attacks and fault-injection attacks. Programmers will be able to leverage this framework to minimize hardware-related vulnerabilities in source code at the development stage. In Year 1, the team will focus on detecting lines that are vulnerable under fault injection attacks.
A fault injection attack is a physical attack on data and behavior of an embedded device by changing the voltage, temperature or electromagnetic radiation. To mitigate fault injection attacks, one effective way at the software level is to write secure code that is more resilient against the attacks. For instance, the value of a Boolean variable (e.g., flag) in an if statement (e.g., if (flag == 1)) can be easily modified by fault injection attacks while using non-trivial numerical values (e.g., if (flag == 0x3CA5)) can make the attacks more difficult (modifying a single bit v.s. modifying multiple bits).
The team has previously developed and published a method [1] which can automatically detect 3 out of 9 insecure coding patterns defined in Riscure whitepaper [2, 3]. In this project, the team will extend the research (1) to detect the remaining 6 insecure coding patterns in C and 2 to detect the previous 3 insecure coding patterns that we have examined in assembly. Our main idea is to (1) parse code with static program analysis tools (e.g., ANTLR and Joem) or customized parsers; (2) detect insecure lines with string matching and Natural Language Processing. Datasets, source code, and publications will be shared with CHEST partners.