Top Banner
Smart card attacks Weaknesses detection Code securing Software Countermeasures for Control Flow Integrity of Smart Card C Codes Jean-Fran¸ cois Lalande Karine Heydemann – Pascal Berthom´ e Inria / Sup´ elec (IRISA) – INSA CVL / Univ. Orl´ eans (LIFO) UPMC - (LIP6) ESORICS 2014 September 7-11, Wroclaw, Poland 1 / 28 J.-F. Lalande – K. Heydemann – P. Berthom´ e Software Countermeasures for Control Flow Integrity
59

Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Mar 03, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Software Countermeasures for Control FlowIntegrity of Smart Card C Codes

Jean-Francois LalandeKarine Heydemann – Pascal Berthome

Inria / Supelec (IRISA) – INSA CVL / Univ. Orleans (LIFO)UPMC - (LIP6)

ESORICS 2014September 7-11, Wroclaw, Poland

1 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 2: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Introduction: 1 smart card attacks

Smart card are subject to physical attacks

Security is of main importance for the card industry

Physical attacks:

Means: laser beam, clock glitch, electromagnetic pulse, . . .

Goal: disrupting execution of smartcard programs, producinga faulty execution

See this Do this

2 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 3: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Introduction: 1 smart card attacks

Smart card are subject to physical attacks

Security is of main importance for the card industry

Physical attacks:

Means: laser beam, clock glitch, electromagnetic pulse, . . .

Goal: disrupting execution of smartcard programs, producinga faulty execution

See this Do this2 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 4: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Attack model

At low level, physical attacks can:

induce a bit flip

overwrite a bit/byte with controlled values

overwrite a bit/byte with random bits

At program level, physical attacks can have different impacts:

Disturb the value of some variables

Modify the control flow by overwriting instructions whenfetched:

Change a branch directionExecute some NOPsExecute an unconditional JMP

We focus on attacks that result in a jump, called a jump attack

3 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 5: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Attack example

Let us consider such an authentication code:

1 uint user tries = 0; // initialization of the number of tries for this session2 uint max tries = 3; // max number of tries3 while (...) /∗ card life cycle: ∗/4 {5 incr tries(user tries);6 res = get pin from terminal(); // receives 12347 pin = read secret pin(); // read real pin: 00008 if (compare(res, pin))9 { dec tries(user tries);

10 do stuff(); }11 if (user tries >= max tries)12 { killcard(); }13 }

Simplified authentication code with pin check

4 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 6: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Attack example

Let us consider such an authentication code:

1 uint user tries = 0; // initialization of the number of tries for this session2 uint max tries = 3; // max number of tries3 while (...) /∗ card life cycle: ∗/4 {5 incr tries(user tries);6 res = get pin from terminal(); // receives 12347 pin = read secret pin(); // read real pin: 00008 if (compare(res, pin)) ⇒ NOP ... NOP9 { dec tries(user tries);

10 do stuff(); }11 if (user tries >= max tries)12 { killcard(); }13 }

Simplified authentication code with pin check

4 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 7: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Physical attacksGoals

Security problems and contributions

Several questions appear:

How to deal with low level attacks when working at sourcecode level?

Use a high level model of attacks

How to identify harmful attacks?

Simulate attacks and distinguish weaknesses

How to implement countermeasures?

Protect code at source level using counters

Are the proposed countermeasures effective?

Study formally and experimentally their effectiveness

5 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 8: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Outline

2 Weaknesses detection? Attack simulation ? Distinguisher ? Analysis result

Secured Csource

code

Control Flow SecuringCountermeasure Injection

Csource

code

Attack simulation

Classificationbad

good errorkillcard

Visualization

Weaknessesdetection

Distinguisher

CodeSecuring

6 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 9: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 10: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 goto dest;241 while (i−−)242 {243 dest:buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 11: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 goto dest;241 while (i−−)242 {243 buf[i] ˆ= key[i];244 dest:cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 12: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 goto dest;241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 dest:cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 13: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 goto dest;241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 dest:}247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 14: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 goto dest;241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 dest:;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 15: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 dest:241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ; goto dest;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 16: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 dest:buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ; goto dest;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 17: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 dest:cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 }247 ; goto dest;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 18: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 dest:cpk[16+i] = key[16 + i];246 }247 ; goto dest;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 19: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i];245 cpk[16+i] = key[16 + i];246 dest:}247 ; goto dest;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Simulation by insertion of jump attack

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 20: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 dest:241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i]; goto dest; // 16 6= triggering times245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 21: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240 dest:241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i]; if (trigger time) goto dest; // 16 6= triggerring times245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 22: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 dest:buf[i] ˆ= key[i];244 cpk[i] = key[i]; if (trigger time) goto dest; // 16 6= triggerring times245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 23: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 dest:cpk[i] = key[i]; if (trigger time) goto dest; // 16 6= triggerring times245 cpk[16+i] = key[16 + i];246 }247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 24: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i]; if (trigger time) goto dest; // 16 6= triggerring times245 cpk[16+i] = key[16 + i];246 dest:}247 ;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 25: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Simulation of jump attacks

237 void aes addRoundKey cpy(uint8 t ∗buf, uint8 t ∗key, uint8 t ∗cpk)238 {239 register uint8 t i = 16;240241 while (i−−)242 {243 buf[i] ˆ= key[i];244 cpk[i] = key[i]; if (trigger time) goto dest; // 16 6= triggerring times245 cpk[16+i] = key[16 + i];246 }247 dest:;248 } /∗ aes addRoundKey cpy ∗/

Function of an implementation of AES

Full coverage of attacks simulation by using gcov information

7 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 26: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Harmful and harmless attacks classification

How to evaluate the effect of (simulated) attacks?

define a functional scenario (with fixed inputs/outputs):be able to distinguish unexpected from expected outputs

Secured Csource

code

Control Flow SecuringCountermeasure Injection

Csource

code

Attack simulation

Classificationbad

good errorkillcard

Visualization

Weaknessesdetection

Distinguisher

CodeSecuring

8 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 27: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Attacks classification

Considered scenario

Encryption of a fixed input by AES (Levin 07), SHA andBlowfish (Guthaus et al. 01)

Distinguisher classes (harmful/harmless):

bad: during execution a benefit has been obtained by theattacker;

bad j>1: (jumpsize ≥ 2 lines) the encryption output is wrong;bad j=1: (jumpsize = 1 line) the encryption output is wrong;

good: output is unchanged

error or timeout: error, crash, infinite loop;

killcard: attack detected: the card is turned out of service!

9 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 28: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Attacks classification

Considered scenario

Encryption of a fixed input by AES (Levin 07), SHA andBlowfish (Guthaus et al. 01)

Distinguisher classes (harmful/harmless):

bad: during execution a benefit has been obtained by theattacker;

bad j>1: (jumpsize ≥ 2 lines) the encryption output is wrong;bad j=1: (jumpsize = 1 line) the encryption output is wrong;

good: output is unchanged

error or timeout: error, crash, infinite loop;

killcard: attack detected: the card is turned out of service!

9 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 29: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Attacks classification

Considered scenario

Encryption of a fixed input by AES (Levin 07), SHA andBlowfish (Guthaus et al. 01)

Distinguisher classes (harmful/harmless):

bad: during execution a benefit has been obtained by theattacker;

bad j>1: (jumpsize ≥ 2 lines) the encryption output is wrong;bad j=1: (jumpsize = 1 line) the encryption output is wrong;

good: output is unchanged

error or timeout: error, crash, infinite loop;

killcard: attack detected: the card is turned out of service!

9 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 30: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Attacks classification

Considered scenario

Encryption of a fixed input by AES (Levin 07), SHA andBlowfish (Guthaus et al. 01)

Distinguisher classes (harmful/harmless):

bad: during execution a benefit has been obtained by theattacker;

bad j>1: (jumpsize ≥ 2 lines) the encryption output is wrong;bad j=1: (jumpsize = 1 line) the encryption output is wrong;

good: output is unchanged

error or timeout: error, crash, infinite loop;

killcard: attack detected: the card is turned out of service!

9 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 31: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Weaknesses detection results

bad bad good error totalj > 1 j = 1

c jump attacks Attacking all functions at C level for all transient rounds

AES 7786 1104 17372 108 26370

29% 4.2% 65% 0.4% 100%

SHA 32818 1528 8516 412 43274

75% 3.5% 19% 1.0% 100%

Blowfish 70086 3550 134360 5725 213721

32% 1.7% 62% 2.7% 100%

bad j>1: (jumpsize ≥ 2 lines) the encryption output is wrong;

bad j=1: (jumpsize = 1 line) the encryption output is wrong;

10 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 32: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Attack simulationDistinguisherAnalysis result

Weaknesses visualization

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

238 240 242 244 246 248 250

238

240

242

244

246

248

250

bad (j=1)

killcard

error

good

bad (j>1)

out−aes_addRoundKey_cpy.datu

Visualization of weaknesses for aes addRoundKey cpy

11 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 33: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Outline

3 Code securing? Securing control flow constructs ? Verifying countermeasuresrobustness ? Experimental results

Secured Csource

code

Control Flow SecuringCountermeasure Injection

Csource

code

Attack simulation

Classificationbad

good errorkillcard

Visualization

Weaknessesdetection

Distinguisher

CodeSecuring

12 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 34: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Goals

Code securing techniques for Control Flow Integrity often rely on:

Modified assembly codes (Abadi et al. 05)

Modified JVM (Iguchi-cartigny et al. 11, Lackner et al. 13)

Signature techniques of each basic block (Oh et al. 02,Nicolescu et al. 03)

We aim at keeping the assembly code intact:

A certified compiler enable to certify the secured program

⇒ CFI countermeasures to be compiled by a certified compiler

Checks often performed at entry/exit of basic blocks:

CFI countermeasures should also check the flow inside basicblocks

13 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 35: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing principle

Straight-line flow

of statements

f

g

Countermeasures

with counter cnt f

Countermeasures

with counter cnt g

Func

Countermeasures

1 counter by function

between two statements

Check of counter values

cnt = (cnt == val+N ?cnt +1 : killcard());

14 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 36: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 37: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 38: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

attack

attack

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 39: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

attack

attack

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

DECL_INIT(cnt_g, val)

&cnt_g

DECL_INIT(cnt_g, val)

&cn

t_g

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 40: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

attack

attack

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

DECL_INIT(cnt_g, val)

&cnt_g

DECL_INIT(cnt_g, val)

&cn

t_g

cnt = (cnt == val+N? cnt +1 : killcard());

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 41: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

DECL_INIT(cnt_g, val)

&cnt_g

DECL_INIT(cnt_g, val)

&cn

t_g

attack

attack

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 42: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

DECL_INIT(cnt_g, val)

&cnt_g

DECL_INIT(cnt_g, val)

&cn

t_g

attack

attack

CHECK_INCR_FUNC(

cnt_g, val + N+1, CHECK_INCR_FUNC(

cnt_g, val + N+1,

*cnt_f, val_f + 2)

*cnt_f, val_f + 2)

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 43: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing details

L8:

L7:

L1:

...

Source codevoid f(){

}

void g( ){

stmt1;

stmt2;

L6+N:

L7+N:

stmtN;

return;}

L4:

L3:

L2: g( );

L7

L7+N

L8

...

L2

L3

L4

L6+N

stmt1

stmt2

stmtN

return

Flow

ca

ll to

g(

)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

CHECK_INCR(*cnt_g, val)

CHECK_INCR(*cnt_g, val + 1)

CHECK_INCR(*cnt_g, val + 2)

CHECK_INCR(*cnt_g, val + N−1)

CHECK_INCR(*cnt_g, val + N)

DECL_INIT(cnt_g, val)

&cnt_g

DECL_INIT(cnt_g, val)

&cn

t_g

attack

attack

CHECK_INCR_FUNC(

cnt_g, val + N+1, CHECK_INCR_FUNC(

cnt_g, val + N+1,

*cnt_f, val_f + 2)

*cnt_f, val_f + 2)

Nesting checks and coun-ters updates are the key !

15 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 44: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing loops and conditional constructs

Countermeasures also designed for while/if constructs

f counter

cnt f

counter

while

while

then

else

counter

else

counter

then

f

16 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 45: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Countermeasure robustness?

Are these countermeasures effective for all possible jump attacks?

of course not, for a jump size equal to 1 C line!

what about attacks with jump size ≥ 2 C lines?

We model a Control Flow Construct (CFC) with a transitionsystem to verify countermeasure robustness and flow correctness

Modelfor aCFC

Model forits secured

version+ Attacks

All possibleinputs

control flowsequivalent ?

or

attackdetection

17 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 46: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Countermeasure robustness?

Are these countermeasures effective for all possible jump attacks?

of course not, for a jump size equal to 1 C line!

what about attacks with jump size ≥ 2 C lines?

We model a Control Flow Construct (CFC) with a transitionsystem to verify countermeasure robustness and flow correctness

Modelfor aCFC

Model forits secured

version+ Attacks

All possibleinputs

control flowsequivalent ?

or

attackdetection

17 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 47: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Formal verification of robustness

Modelfor aCFC

Model forits secured

version+ Attacks

All possibleinputs

control flowsequivalent ?

or

attackdetection

Our securing scheme for if, loops and sequential control flowconstructs verify:

any jump attack of more than 2 C lines is detected

or the control flow is correct

Verification performed with VIS model checker

18 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 48: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Experimental results I

Jump attacks simulated in the secured source code

bad bad good killcard error totalj > 1 j = 1

c jump attacks Attacking all functions at C level for all transient rounds

AES 29% 4.2% 65% 0.4% 26370

AES + CM 0% 0.2% 5.3% 94% 0.0% 337516

SHA 75% 3.5% 19% 1.0% 43274

SHA + CM 0% 0.3% 1.2% 98% 0.1% 427690

Blowfish 32% 1.7% 62% 2.7% 213721

Blowfish + CM 0% 0.2% 23% 75% 0.4% 1400355

Jump attacks simulated at C level

100% of harmfull attacks jumping more than 2 C lines are captured

19 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 49: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Experimental results II

Simulation of jump attacks at assembly level

ASM attacks injected on the fly using an ARM simulator

bad bad good killcard error totalj > 1 j = 1

asm jump att. Attacking the aes encrypt function at ASM level for the first transient round

aes encrypt 82.8% 1.9% 9.4% 5.9% 1892

aes encrypt + CM 0.2% ∼0% 20.2% 78.4% 0.7% 305255

Jump attacks simulated at ASM level

Reduction: 60% of harmfull attack are detected

Remaining attacks are harder to perform (82.8% ⇒ 0.2%)

20 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 50: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Experimental results III

Simulation of function call attacks

ASM attacks injected on the fly using an ARM simulator

bad bad good killcard error totalj > 1 j = 1

asm call att. Attacking all function calls at ASM level for the first transient round

AES 59.3% 33.1% 5% 420

AES + CM 0% 5% 94.8% 0.2% 420

SHA 48.7% 18% 33.3% 72

SHA + CM 0% 11.1% 84.7% 4.2% 72

Blowfish 21.4% 42.9% 35.7% 42

Blowfish + CM 0% 42.9% 40.5% 16.6% 42

Jump attacks simulated at ASM level

21 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 51: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Experimental results IV

100% of harmfull attacks are captured

22 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 52: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Weaknesses visualization

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

238 240 242 244 246 248 250

238

240

242

244

246

248

250

bad (j=1)

killcard

error

good

bad (j>1)

out−aes_addRoundKey_cpy.datu

Visualization of weaknesses for aes addRoundKey cpy

23 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 53: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Weaknesses visualization with CFI

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

Source line number

Destination lin

e n

um

ber

385 390 395 400 405 410 415 420 425

385

390

395

400

405

410

415

420

425

bad (j=1)

killcard

error

good

bad (j>1)

out−aes_addRoundKey_cpy.datu

Visualization of weaknesses for the secured version

24 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 54: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Securing code overheads - x86 and arm-v7m

Size (bytes)

AES SHA Blowfish

0

10000

20000

30000

40000

50000 x86 CFI overhead arm−v7m CFI overhead

Time (ms)

Overhead for 1ms of computation

AES SHA Blowfish

0

1

2

3

4

5

6x86 CFI overhead arm−v7m CFI overhead

25 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 55: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Securing control flow constructsVerifying countermeasures robustnessExperimental results

Demo

Demo: graphical tool for navigating into attacks !

http://dai.ly/x205n3x

26 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 56: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Conclusion

Software coutermeasures for control flow integrity

Software-only effective countermeasures

Protection for jump attacks than more than 1 C statement

Secured Csource

code

Control Flow SecuringCountermeasure Injection

Csource

code

Attack simulation

Classificationbad

good errorkillcard

Visualization

Weaknessesdetection

Distinguisher

CodeSecuring

27 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 57: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Future work

New problems remain to be addressed

Reduce overhead!

Deal with jump attack of size one

And new challenges

Is this suitable for javacard apps?

Can we design software countermeasures for attacksimpacting variable values?

28 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 58: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Thank you!

(Diode Laser Station from Riscure)

Thank you!

...

29 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity

Page 59: Software Countermeasures for Control Flow Integrity of …people.rennes.inria.fr/Jean-Francois.Lalande/talks/cfi...Smart card attacks Weaknesses detection Code securing Software Countermeasures

Smart card attacksWeaknesses detection

Code securing

Thank you!

(Diode Laser Station from Riscure)

Thank you!

Question?

29 / 28 J.-F. Lalande – K. Heydemann – P. Berthome Software Countermeasures for Control Flow Integrity