150 likes | 376 Views
On-Chip Control Flow Integrity Check for Real Time Embedded Systems. Fardin Abdi Taghi Abad, Joel Van Der Woude , Yi Lu, Stanley Bak , Marco Caccamo, Lui Sha , Renato Mancuso , Sibin Mohan. Rethinking Embedded System Security. Traditional Embedded Systems
E N D
On-Chip Control Flow Integrity Check forReal Time Embedded Systems Fardin Abdi Taghi Abad, Joel Van Der Woude, Yi Lu, Stanley Bak, Marco Caccamo, Lui Sha , Renato Mancuso, Sibin Mohan
Rethinking Embedded System Security Traditional Embedded Systems • Physically isolated environment • Limited capability • Use of specialized protocols Smart Grid • Smarter, butless secure Smart Car Smart Phones Modern Embedded Systems • More networked • Increased capability • Open, standard platform • Sensitive/privacy information • More vulnerable to security attacks Smart Appliances
Challenges in Embedded System Security Limitations in Existing Approaches
Our Solution Check the run-time control flow with a dedicated hardware unit Time Store the control flow graph on dedicated hardware Extract the control Flow graph from executable
Why It Works • Malicious • Code Block If malicious code gets executed, the control flow graph mutates Time ...and detection is performed At inspection time, the dedicated core validates the execution flow.
Architecture Processor On-Chip Control Flow Monitoring Module (OCFMM) Monitoring Module Isolated OCFMM Memory Block ID Program Counter Instruction Register Block Info
Control Flow Example 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 main: instr_1 instr_2 lbl_2: instr_3 JEQlbl_1 instr_4 instr_5 instr_6 JMP lbl_2 lbl_1: instr_7 instr_8 CALL func_1 instr_9 JMP lbl_2 func_1: instr_f1 instr_f2 RET n = 3 pc = instr_f1 n = 4 pc = instr_1 n = 2 pc = instr_9 n = 4 pc = instr_4 E A D B No block A Yes/No Yes For each block, we store: Block ID Address of first instruction Number of instructions Yes-Block No-Block n = 3 pc = instr_7 C Yes/No block B block C Yes/No block D block E Yes/No
Inspection n = 4 pc = instr_1 n = 4 pc = instr_4 A B 1. Check that PC is between instr_1 + n n = 3 pc = instr_7 C Yes 2. If not, fetch Yes/No Blocks C & B from OCFMM memory No 3. If execution is not at instr_7 nor at instr_4, raise detection flag Suppose that the execution is in block A
Predictable Overhead Overhead(blockk) = • ei is the minimum execution time of ith instruction in the block • m is the access time for OCFMM memory • nk is the number of instructions in kth block Overhead is paid in short blockswhere integrity check is longer than block execution time.
Experiments • Code replacement attack • one of the jump destinations is different from the expected address resulting • Return address overwriting in stack • jump to a different return address
Limitations • Need for ad-hoc platform • The proposed approach is hardware-based. Custom hardware needed • Unable to detect attacks that do not alter the CFG • Still attacking the platform is significantly harder
Question? Thank You