SlideShare a Scribd company logo
Bypassing Secure Boot using Fault Injection
Niek Timmers
timmers@riscure.com
(@tieknimmers)
Albert Spruyt
spruyt@riscure.com
November 4, 2016
What are the contents of this talk?
Keywords – fault injection, secure boot, bypasses, mitigations,
practicalities, best practices, demo(s) ...
Who are we?
Albert & Niek
• (Senior) Security Analysts at Riscure
• Security testing of different products and technologies
Riscure
• Services (Security Test Lab)
• Hardware / Software / Crypto
• Embedded systems / Smart cards
• Tools
• Side channel analysis (passive)
• Fault injection (active)
• Offices
• Delft, The Netherlands / San Francisco, USA
Combining services and tools for fun and profit!
Who are we?
Albert & Niek
• (Senior) Security Analysts at Riscure
• Security testing of different products and technologies
Riscure
• Services (Security Test Lab)
• Hardware / Software / Crypto
• Embedded systems / Smart cards
• Tools
• Side channel analysis (passive)
• Fault injection (active)
• Offices
• Delft, The Netherlands / San Francisco, USA
Combining services and tools for fun and profit!
Who are we?
Albert & Niek
• (Senior) Security Analysts at Riscure
• Security testing of different products and technologies
Riscure
• Services (Security Test Lab)
• Hardware / Software / Crypto
• Embedded systems / Smart cards
• Tools
• Side channel analysis (passive)
• Fault injection (active)
• Offices
• Delft, The Netherlands / San Francisco, USA
Combining services and tools for fun and profit!
Fault Injection – A definition...
”Introducing faults in a target to alter its intended behavior.”
...
if( key_is_correct ) <-- Glitch here!
{
open_door();
}
else
{
keep_door_closed();
}
...
How can we introduce these faults?
Fault Injection – A definition...
”Introducing faults in a target to alter its intended behavior.”
...
if( key_is_correct ) <-- Glitch here!
{
open_door();
}
else
{
keep_door_closed();
}
...
How can we introduce these faults?
Fault Injection – A definition...
”Introducing faults in a target to alter its intended behavior.”
...
if( key_is_correct ) <-- Glitch here!
{
open_door();
}
else
{
keep_door_closed();
}
...
How can we introduce these faults?
Fault Injection – A definition...
”Introducing faults in a target to alter its intended behavior.”
...
if( key_is_correct ) <-- Glitch here!
{
open_door();
}
else
{
keep_door_closed();
}
...
How can we introduce these faults?
Fault injection techniques1
clock voltage e-magnetic laser
Remark
• All techniques introduce faults externally
1
The Sorcerers Apprentice Guide to Fault Attacks. – Bar-El et al., 2004
Fault injection techniques1
clock voltage e-magnetic laser
Remark
• All techniques introduce faults externally
1
The Sorcerers Apprentice Guide to Fault Attacks. – Bar-El et al., 2004
Voltage fault injection
• Pull the voltage down at the right moment
• Not ’too soft’ ; Not ’too hard’
Source: http://www.limited-entropy.com/fault-injection-techniques/
Fault models
Faults that affect hardware
• Registers
• Buses
Faults that affect hardware that does software2 3 4
• Instruction corruption
• Data corruption
The true fault model is hard to predict or prove!
2
Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015
3
High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015
4
Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
Fault models
Faults that affect hardware
• Registers
• Buses
Faults that affect hardware that does software2 3 4
• Instruction corruption
• Data corruption
The true fault model is hard to predict or prove!
2
Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015
3
High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015
4
Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
Fault models
Faults that affect hardware
• Registers
• Buses
Faults that affect hardware that does software2 3 4
• Instruction corruption
• Data corruption
The true fault model is hard to predict or prove!
2
Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015
3
High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015
4
Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
Fault models
Faults that affect hardware
• Registers
• Buses
Faults that affect hardware that does software2 3 4
• Instruction corruption
• Data corruption
The true fault model is hard to predict or prove!
2
Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015
3
High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015
4
Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Fault Models – ”Our” choice ...
When presented with code: instruction corruption.
Simple (MIPS)
addi $t1, $t1, 8 00100001001010010000000000001000
addi $t1, $t1, 0 00100001001010010000000000000000
Complex (ARM)
ldr w1, [sp, #0x8] 10111001010000000000101111100001
str w7, [sp, #0x20] 10111001000000000010001111100111
Remarks
• Limited control over which bit(s) will be corrupted
• May or may not be the true fault model
• Other fault model behavior covered
Why is there Secure Boot?
Remarks
• Integrity and confidentiality of flash contents are not assured!
• A mechanism is required for this assurance: secure boot
Why is there Secure Boot?
Remarks
• Integrity and confidentiality of flash contents are not assured!
• A mechanism is required for this assurance: secure boot
Why is there Secure Boot?
Remarks
• Integrity and confidentiality of flash contents are not assured!
• A mechanism is required for this assurance: secure boot
Why is there Secure Boot?
Remarks
• Integrity and confidentiality of flash contents are not assured!
• A mechanism is required for this assurance: secure boot
Why is there Secure Boot?
Remarks
• Integrity and confidentiality of flash contents are not assured!
• A mechanism is required for this assurance: secure boot
Secure Boot – Generic Design
• Assures integrity (and confidentiality) of flash contents
• The chain of trust is similar to PKI5 found in browsers
• One root of trust composed of immutable code and key
5
Public Key Infrastructure
Secure Boot – Generic Design
• Assures integrity (and confidentiality) of flash contents
• The chain of trust is similar to PKI5 found in browsers
• One root of trust composed of immutable code and key
5
Public Key Infrastructure
Secure Boot – Generic Design
• Assures integrity (and confidentiality) of flash contents
• The chain of trust is similar to PKI5 found in browsers
• One root of trust composed of immutable code and key
5
Public Key Infrastructure
Secure Boot – Generic Design
• Assures integrity (and confidentiality) of flash contents
• The chain of trust is similar to PKI5 found in browsers
• One root of trust composed of immutable code and key
5
Public Key Infrastructure
Secure Boot – In reality ...
Source: http://community.arm.com/docs/DOC-9306
Secure Boot – In reality ...
Source: http://community.arm.com/docs/DOC-9306
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why use a hardware attack?
”Logical issues exist in secure boot implementations!!?”
Bootloader vulnerabilities
• S5L8920 (iPhone)6
• Amlogic S9057
However
• Small code base results in a small logical attack surface
• Implementations without vulnerabililties likely exist
Other attack(s) must be used when not logically flawed!
6
https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow
7
http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
Why (not) fault injection on secure boot?
Cons
• Invasive
• Physical access
• Expensive
Pros
• No logical vulnerability required
• Typical targets not properly protected
Especially relevant when assets are not available after boot!
Why (not) fault injection on secure boot?
Cons
• Invasive
• Physical access
• Expensive
Pros
• No logical vulnerability required
• Typical targets not properly protected
Especially relevant when assets are not available after boot!
Why (not) fault injection on secure boot?
Cons
• Invasive
• Physical access
• Expensive
Pros
• No logical vulnerability required
• Typical targets not properly protected
Especially relevant when assets are not available after boot!
Why (not) fault injection on secure boot?
Cons
• Invasive
• Physical access
• Expensive
Pros
• No logical vulnerability required
• Typical targets not properly protected
Especially relevant when assets are not available after boot!
Typical assets
Secure code
• Boot code (ROM8)
Secrets
• Keys (for boot code decryption)
Secure hardware
• Cryptographic engines
8
Read Only Memory
Typical assets
Secure code
• Boot code (ROM8)
Secrets
• Keys (for boot code decryption)
Secure hardware
• Cryptographic engines
8
Read Only Memory
Typical assets
Secure code
• Boot code (ROM8)
Secrets
• Keys (for boot code decryption)
Secure hardware
• Cryptographic engines
8
Read Only Memory
Typical assets
Secure code
• Boot code (ROM8)
Secrets
• Keys (for boot code decryption)
Secure hardware
• Cryptographic engines
8
Read Only Memory
Fault Injection – Intermezzo
Fault Injection – Tooling
Micah posted a very nice video using the ChipWhisperer-Lite9
By NewAE Technology Inc.10
9
https://www.youtube.com/watch?v=TeCQatNcF20
10
https://wiki.newae.com/CW1173_ChipWhisperer-Lite
Fault Injection – Tooling
Micah posted a very nice video using the ChipWhisperer-Lite9
By NewAE Technology Inc.10
9
https://www.youtube.com/watch?v=TeCQatNcF20
10
https://wiki.newae.com/CW1173_ChipWhisperer-Lite
Fault Injection – Setup
Target
• Digilent Zybo (Xilinx Zynq-7010 System-on-Chip)
• ARM Cortex-A9 (AArch32)
Fault Injection – Setup
Target
• Digilent Zybo (Xilinx Zynq-7010 System-on-Chip)
• ARM Cortex-A9 (AArch32)
Fault Injection – Setup
Characterization – Test application11
asm volatile
(
...
"add r1, r1, #1;"
"add r1, r1, #1;"
< repeat > <-- glitch here
"add r1, r1, #1;"
"add r1, r1, #1;"
...
);
Remarks
• Full control over the target
• Increasing a counter using ADD instructions
• Send counter back using the serial interface
11
Implemented as an U-Boot command
Characterization – Possible responses
Expected: ’too soft’
counter = 00010000
Mute: ’too hard’
counter =
Success: ’$$$’
counter = 00009999
counter = 00010015
counter = 00008687
Remarks
• Glitching ’too hard’ may damage the target permanently
Characterization – Possible responses
Expected: ’too soft’
counter = 00010000
Mute: ’too hard’
counter =
Success: ’$$$’
counter = 00009999
counter = 00010015
counter = 00008687
Remarks
• Glitching ’too hard’ may damage the target permanently
Characterization – Possible responses
Expected: ’too soft’
counter = 00010000
Mute: ’too hard’
counter =
Success: ’$$$’
counter = 00009999
counter = 00010015
counter = 00008687
Remarks
• Glitching ’too hard’ may damage the target permanently
Characterization – Possible responses
Expected: ’too soft’
counter = 00010000
Mute: ’too hard’
counter =
Success: ’$$$’
counter = 00009999
counter = 00010015
counter = 00008687
Remarks
• Glitching ’too hard’ may damage the target permanently
Characterization – Possible responses
Expected: ’too soft’
counter = 00010000
Mute: ’too hard’
counter =
Success: ’$$$’
counter = 00009999
counter = 00010015
counter = 00008687
Remarks
• Glitching ’too hard’ may damage the target permanently
DEMO 1
PARAMETER SEARCH
Glitch parameters
• Randomize glitch delay within the attack window
• Randomize the glitch voltage
• Randomize the glitch length
DEMO 1
PARAMETER SEARCH
Glitch parameters
• Randomize glitch delay within the attack window
• Randomize the glitch voltage
• Randomize the glitch length
DEMO 1
PARAMETER SEARCH
Glitch parameters
• Randomize glitch delay within the attack window
• Randomize the glitch voltage
• Randomize the glitch length
DEMO 1
PARAMETER SEARCH
Glitch parameters
• Randomize glitch delay within the attack window
• Randomize the glitch voltage
• Randomize the glitch length
That was the introduction ...
... let’s bypass secure boot: The Classics!
That was the introduction ...
... let’s bypass secure boot: The Classics!
Classic Bypass 00: Hash comparison
• Applicable to all secure boot implementations
• Bypass of authentication
if( memcmp( p, hash, hashlen ) != 0 )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
p += hashlen;
if( p != end )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
return( 0 );
Source: https://tls.mbed.org/
Classic Bypass 00: Hash comparison
• Applicable to all secure boot implementations
• Bypass of authentication
if( memcmp( p, hash, hashlen ) != 0 )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
p += hashlen;
if( p != end )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
return( 0 );
Source: https://tls.mbed.org/
Classic Bypass 00: Hash comparison
• Applicable to all secure boot implementations
• Bypass of authentication
if( memcmp( p, hash, hashlen ) != 0 )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
p += hashlen;
if( p != end )
return( MBEDTLS_ERR_RSA_VERIFY_FAILED );
return( 0 );
Source: https://tls.mbed.org/
Classic Bypass 00: Hash comparison
Multiple locations bypass the check with a single fault!
Classic Bypass 00: Hash comparison
Multiple locations bypass the check with a single fault!
Classic Bypass 00: Hash comparison
Multiple locations bypass the check with a single fault!
Classic Bypass 00: Hash comparison
Multiple locations bypass the check with a single fault!
Classic Bypass 00: Hash comparison
Multiple locations bypass the check with a single fault!
Classic Bypass 01: Signature check call
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
no_boot();
} else {
/* boot up the image */
boot();
}
Remarks
• Bypasses can happen on all levels
• Inside functions, inside the calling functions, etc.
Classic Bypass 01: Signature check call
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
no_boot();
} else {
/* boot up the image */
boot();
}
Remarks
• Bypasses can happen on all levels
• Inside functions, inside the calling functions, etc.
Classic Bypass 01: Signature check call
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
no_boot();
} else {
/* boot up the image */
boot();
}
Remarks
• Bypasses can happen on all levels
• Inside functions, inside the calling functions, etc.
Classic Bypass 02: Infinite loop
• What to do when the signature verification fails?
• Enter an infinite loop!
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
while(1);
} else {
/* boot up the image */
boot();
}
Classic Bypass 02: Infinite loop
• What to do when the signature verification fails?
• Enter an infinite loop!
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
while(1);
} else {
/* boot up the image */
boot();
}
Classic Bypass 02: Infinite loop
• What to do when the signature verification fails?
• Enter an infinite loop!
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
while(1);
} else {
/* boot up the image */
boot();
}
Classic Bypass 02: Infinite loop
• What to do when the signature verification fails?
• Enter an infinite loop!
/* glitch here */
if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) {
/* do not boot up the image */
while(1);
} else {
/* boot up the image */
boot();
}
Classic Bypass 02: Infinite loop
Remarks
• Timing is not an issue!
• Classic smart card attack 12
• Better to reset or wipe keys
12
https://en.wikipedia.org/wiki/Unlooper
Classic Bypass 02: Infinite loop
Remarks
• Timing is not an issue!
• Classic smart card attack 12
• Better to reset or wipe keys
12
https://en.wikipedia.org/wiki/Unlooper
Classic Bypass 02: Infinite loop
Remarks
• Timing is not an issue!
• Classic smart card attack 12
• Better to reset or wipe keys
12
https://en.wikipedia.org/wiki/Unlooper
Classic Bypass 02: Infinite loop
Remarks
• Timing is not an issue!
• Classic smart card attack 12
• Better to reset or wipe keys
12
https://en.wikipedia.org/wiki/Unlooper
Classic Bypass 02: Infinite loop
Remarks
• Timing is not an issue!
• Classic smart card attack 12
• Better to reset or wipe keys
12
https://en.wikipedia.org/wiki/Unlooper
Classic Bypass 03: Secure boot enable
• Secure boot often enabled/disabled based on OTP13 bit
• No secure boot during development; secure boot in the field
• Typically just after the CPU comes out of reset
13
One-Time-Programmable memory
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Fault Injection – Mitigations
Hardware countermeasures 14 15
• Detect the glitch or fault
Software countermeasures 16
• Lower the probability of a successful fault
• Do not address the root cause
You can lower the probability but not rule it out!
14
The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004
15
The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011
16
Secure Application Programming in the Presence of Side Channel Attacks – Witteman
Compiler optimizations
Why?
• ROM memory size is limited
• Compiler optimizations decrease code size
Compiler optimizes out intended code!
Compiler optimizations
Why?
• ROM memory size is limited
• Compiler optimizations decrease code size
Compiler optimizes out intended code!
Compiler optimizations
Why?
• ROM memory size is limited
• Compiler optimizations decrease code size
Compiler optimizes out intended code!
Compiler ’optimization’ – Double check
Example of a double check
unsigned int compare(char * input, int len)
{
if(memcmp(password, input, len) == 0) <-- 1st
{
if(memcmp(password, input, len) == 0) <-- 2nd
{
return TRUE;
}
}
return FALSE;
}
Compiler ’optimization’ – Double check
Compiled without optimizations
Compiler ’optimization’ – Double check
Compiled with optimizations
Compiler ’optimizations’ – Best practices
• Your compiler is smarter than you
• Use ’volatile’ to prevent compiler problems
• Read the output of the compiler!
Compiler ’optimizations’ – Best practices
• Your compiler is smarter than you
• Use ’volatile’ to prevent compiler problems
• Read the output of the compiler!
Compiler ’optimizations’ – Best practices
• Your compiler is smarter than you
• Use ’volatile’ to prevent compiler problems
• Read the output of the compiler!
Compiler ’optimizations’ – Best practices
• Your compiler is smarter than you
• Use ’volatile’ to prevent compiler problems
• Read the output of the compiler!
Compiler ’optimization’ – Pointer setup
Example of a double check using ’volatile’
int checkSecureBoot( ){
volatile int * otp_secure_boot = OTP_SECURE_BOOT;
if( (*otp_secure_boot >> 7) & 0x1 ){ <-- 1st
return 0;
}else{
if( (*otp_secure_boot >> 7) & 0x1 ){ <-- 2nd
return 0;
}else{
return 1;
}
}
}
Compiler ’optimization’ – Pointer setup
Compiled with optimizations
Compiler ’optimization’ – Pointer setup
Compiled with optimizations
Combined Attacks
Those were the classics and their mitigations ..
... the attack surface is larger!17
17
All attacks have been performed successfully on multiple targets!
Combined Attacks
Those were the classics and their mitigations ..
... the attack surface is larger!17
17
All attacks have been performed successfully on multiple targets!
Combined attack – Copy
• Introducing logical vulnerabilities using fault injection
• Build your own buffer overflow!
• Easy approach: change memcpy the size argument
Before corruption
memcpy(dst, src, 0x1000);
After corruption
memcpy(dst, src, 0xCEE5);
Remark
• Works when dedicated hardware is used
(e.g. DMA18 engines)
18
Direct Memory Access
Combined attack – Copy
• Introducing logical vulnerabilities using fault injection
• Build your own buffer overflow!
• Easy approach: change memcpy the size argument
Before corruption
memcpy(dst, src, 0x1000);
After corruption
memcpy(dst, src, 0xCEE5);
Remark
• Works when dedicated hardware is used
(e.g. DMA18 engines)
18
Direct Memory Access
Combined attack – Copy
• Introducing logical vulnerabilities using fault injection
• Build your own buffer overflow!
• Easy approach: change memcpy the size argument
Before corruption
memcpy(dst, src, 0x1000);
After corruption
memcpy(dst, src, 0xCEE5);
Remark
• Works when dedicated hardware is used
(e.g. DMA18 engines)
18
Direct Memory Access
Combined attack – Copy
• Introducing logical vulnerabilities using fault injection
• Build your own buffer overflow!
• Easy approach: change memcpy the size argument
Before corruption
memcpy(dst, src, 0x1000);
After corruption
memcpy(dst, src, 0xCEE5);
Remark
• Works when dedicated hardware is used
(e.g. DMA18 engines)
18
Direct Memory Access
Combined attack – Copy
• Introducing logical vulnerabilities using fault injection
• Build your own buffer overflow!
• Easy approach: change memcpy the size argument
Before corruption
memcpy(dst, src, 0x1000);
After corruption
memcpy(dst, src, 0xCEE5);
Remark
• Works when dedicated hardware is used
(e.g. DMA18 engines)
18
Direct Memory Access
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack – Copy
Remark
• Targetting the copy function arguments
Combined attack - Controlling PC on ARM20
• Exploits an ARM32 characteristic
• PC19 register is directly accessible by most instructions
Multi-word copy
LDMIA r1!, {r3 - r10}
STMIA r0!, {r3 - r10}
Controlling PC using LDMIA
LDMIA r1!,{r3-r10} 11101000101100010000011111111000
LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000
• Variations possible on other architectures; code dependent
19
Program Counter
20
Controlling PC on ARM using Fault Injection – Timmers et al., 2016
Combined attack - Controlling PC on ARM20
• Exploits an ARM32 characteristic
• PC19 register is directly accessible by most instructions
Multi-word copy
LDMIA r1!, {r3 - r10}
STMIA r0!, {r3 - r10}
Controlling PC using LDMIA
LDMIA r1!,{r3-r10} 11101000101100010000011111111000
LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000
• Variations possible on other architectures; code dependent
19
Program Counter
20
Controlling PC on ARM using Fault Injection – Timmers et al., 2016
Combined attack - Controlling PC on ARM20
• Exploits an ARM32 characteristic
• PC19 register is directly accessible by most instructions
Multi-word copy
LDMIA r1!, {r3 - r10}
STMIA r0!, {r3 - r10}
Controlling PC using LDMIA
LDMIA r1!,{r3-r10} 11101000101100010000011111111000
LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000
• Variations possible on other architectures; code dependent
19
Program Counter
20
Controlling PC on ARM using Fault Injection – Timmers et al., 2016
Combined attack - Controlling PC on ARM20
• Exploits an ARM32 characteristic
• PC19 register is directly accessible by most instructions
Multi-word copy
LDMIA r1!, {r3 - r10}
STMIA r0!, {r3 - r10}
Controlling PC using LDMIA
LDMIA r1!,{r3-r10} 11101000101100010000011111111000
LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000
• Variations possible on other architectures; code dependent
19
Program Counter
20
Controlling PC on ARM using Fault Injection – Timmers et al., 2016
Combined attack - Controlling PC on ARM
Remark
• Targetting the copy function arguments
Combined attack - Controlling PC on ARM
Remark
• Targetting the copy function arguments
Combined attack - Controlling PC on ARM
Remark
• Targetting the copy function arguments
Combined attacks - Wild jungle jump21
• Start glitching while/after loading
the image but before decryption
• Lots of ’magic’ pointers around,
which point close to the code
• Get them from: stack, register,
memory
• The more magic pointers, the
higher the probability
21
Proving the wild jungle jump – Gratchoff, 2015
Combined attacks - Wild jungle jump21
• Start glitching while/after loading
the image but before decryption
• Lots of ’magic’ pointers around,
which point close to the code
• Get them from: stack, register,
memory
• The more magic pointers, the
higher the probability
21
Proving the wild jungle jump – Gratchoff, 2015
Combined attacks - Wild jungle jump21
• Start glitching while/after loading
the image but before decryption
• Lots of ’magic’ pointers around,
which point close to the code
• Get them from: stack, register,
memory
• The more magic pointers, the
higher the probability
21
Proving the wild jungle jump – Gratchoff, 2015
Combined attacks - Wild jungle jump21
• Start glitching while/after loading
the image but before decryption
• Lots of ’magic’ pointers around,
which point close to the code
• Get them from: stack, register,
memory
• The more magic pointers, the
higher the probability
21
Proving the wild jungle jump – Gratchoff, 2015
Combined attacks - Wild jungle jump21
• Start glitching while/after loading
the image but before decryption
• Lots of ’magic’ pointers around,
which point close to the code
• Get them from: stack, register,
memory
• The more magic pointers, the
higher the probability
21
Proving the wild jungle jump – Gratchoff, 2015
Combined attack(s) – Summary
• Bypass of both authentication and decryption
• Typically little software exploitation mitigation during boot
• Fault injection mitigations in software may not be effective
Combined attack(s) – Summary
• Bypass of both authentication and decryption
• Typically little software exploitation mitigation during boot
• Fault injection mitigations in software may not be effective
Combined attack(s) – Summary
• Bypass of both authentication and decryption
• Typically little software exploitation mitigation during boot
• Fault injection mitigations in software may not be effective
Combined attack(s) – Summary
• Bypass of both authentication and decryption
• Typically little software exploitation mitigation during boot
• Fault injection mitigations in software may not be effective
There are some practicalities ...
... which we must overcome!
There are some practicalities ...
... which we must overcome!
Secure Boot – Demo Design
Remark
• Stage 2 is invalided by changing the printed string
• Stage 1 enters an infinite loop when the signature is invalid
Secure Boot – Demo Design
Remark
• Stage 2 is invalided by changing the printed string
• Stage 1 enters an infinite loop when the signature is invalid
Secure Boot – Demo Design
Remark
• Stage 2 is invalided by changing the printed string
• Stage 1 enters an infinite loop when the signature is invalid
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
When to glitch?
• Not possible to use a signal originating from target
• Only reference point is power-on reset moment
• Use side-channels to obtain more information
• Compare behavior between valid image and an invalid image
Boot profiling – Reset
Valid image
Invalid image
Remark
• No difference between a valid and invalid image
• Attack window spreads across the entire trace (˜400 ms)
Boot profiling – Reset
Valid image
Invalid image
Remark
• No difference between a valid and invalid image
• Attack window spreads across the entire trace (˜400 ms)
Boot profiling – Reset
Valid image
Invalid image
Remark
• No difference between a valid and invalid image
• Attack window spreads across the entire trace (˜400 ms)
Boot profiling – Flash activity
Valid image
Invalid image
Remarks
• Flash activity 3 not present for the invalid image
• Attack window between flash activity 2 and 3 (˜10 ms)
Boot profiling – Flash activity
Valid image
Invalid image
Remarks
• Flash activity 3 not present for the invalid image
• Attack window between flash activity 2 and 3 (˜10 ms)
Boot profiling – Flash activity
Valid image
Invalid image
Remarks
• Flash activity 3 not present for the invalid image
• Attack window between flash activity 2 and 3 (˜10 ms)
Boot profiling – Power consumption
Remark
• Measuring electromagnetic emissions using a probe22
22
https://www.langer-emv.de/en/product/rf-passive-30-mhz-3-ghz/35/
rf1-set-near-field-probes-30-mhz-up-to-3-ghz/270
Boot profiling – Power consumption
Remark
• Measuring electromagnetic emissions using a probe22
22
https://www.langer-emv.de/en/product/rf-passive-30-mhz-3-ghz/35/
rf1-set-near-field-probes-30-mhz-up-to-3-ghz/270
Boot profiling – Power consumption
Valid image
Invalid image
Remarks
• Significant difference in the electromagnetic emissions
• Attack window reduced significantly (< 1 ms)
• Power profile at black arrow is flat: infinite loop
Boot profiling – Power consumption
Valid image
Invalid image
Remarks
• Significant difference in the electromagnetic emissions
• Attack window reduced significantly (< 1 ms)
• Power profile at black arrow is flat: infinite loop
Boot profiling – Power consumption
Valid image
Invalid image
Remarks
• Significant difference in the electromagnetic emissions
• Attack window reduced significantly (< 1 ms)
• Power profile at black arrow is flat: infinite loop
Boot profiling – Power consumption
Valid image
Invalid image
Remarks
• Significant difference in the electromagnetic emissions
• Attack window reduced significantly (< 1 ms)
• Power profile at black arrow is flat: infinite loop
Boot profiling – Power consumption
Valid image
Invalid image
Remarks
• Significant difference in the electromagnetic emissions
• Attack window reduced significantly (< 1 ms)
• Power profile at black arrow is flat: infinite loop
Jitter
Remark
• Jitter during boot prevents effective timing (˜150 µs)
Jitter
Remark
• Jitter during boot prevents effective timing (˜150 µs)
Jitter
Remark
• Jitter during boot prevents effective timing (˜150 µs)
How to minimize jitter during boot?
• Power-on reset is too early
• Use a signal close to the ’glitch moment’
Remark
• Using flash activity 2 as a trigger to minimize jitter
How to minimize jitter during boot?
• Power-on reset is too early
• Use a signal close to the ’glitch moment’
Remark
• Using flash activity 2 as a trigger to minimize jitter
How to minimize jitter during boot?
• Power-on reset is too early
• Use a signal close to the ’glitch moment’
Remark
• Using flash activity 2 as a trigger to minimize jitter
How to minimize jitter during boot?
• Power-on reset is too early
• Use a signal close to the ’glitch moment’
Remark
• Using flash activity 2 as a trigger to minimize jitter
How to minimize jitter during boot?
• Power-on reset is too early
• Use a signal close to the ’glitch moment’
Remark
• Using flash activity 2 as a trigger to minimize jitter
Glitch Timing – Power consumption
Remarks
• Jitter minimized using flash activity as a trigger
Glitch Timing – Power consumption
Remarks
• Jitter minimized using flash activity as a trigger
DEMO 2
BYPASSING SECURE BOOT
Glitch parameter search
• Fixed the glitch delay to 300 ms
• Fixed the glitch voltage to -2 V
• Randomize the glitch length
DEMO 2
BYPASSING SECURE BOOT
Glitch parameter search
• Fixed the glitch delay to 300 ms
• Fixed the glitch voltage to -2 V
• Randomize the glitch length
DEMO 2
BYPASSING SECURE BOOT
Glitch parameter search
• Fixed the glitch delay to 300 ms
• Fixed the glitch voltage to -2 V
• Randomize the glitch length
DEMO 2
BYPASSING SECURE BOOT
Glitch parameter search
• Fixed the glitch delay to 300 ms
• Fixed the glitch voltage to -2 V
• Randomize the glitch length
DEMO 2
BYPASSING SECURE BOOT
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Secure Boot – Manufacturer Best practices
Minimize attack surface
• Authenticate all code and data
• Limit functionality in ROM code
• Disable memory when not required
Lower the probability
• Implement fault injection countermeasures
• Implement software exploitation mitigations
Robustness can only be determined using testing!
Conclusion / Sound Bytes
• Today’s standard technology not resistant to fault attacks
• Implementers of secure boot should address fault risks
• Hardware fault injection countermeasures are needed
• Fault injection testing provides assurance on product security
Conclusion / Sound Bytes
• Today’s standard technology not resistant to fault attacks
• Implementers of secure boot should address fault risks
• Hardware fault injection countermeasures are needed
• Fault injection testing provides assurance on product security
Conclusion / Sound Bytes
• Today’s standard technology not resistant to fault attacks
• Implementers of secure boot should address fault risks
• Hardware fault injection countermeasures are needed
• Fault injection testing provides assurance on product security
Conclusion / Sound Bytes
• Today’s standard technology not resistant to fault attacks
• Implementers of secure boot should address fault risks
• Hardware fault injection countermeasures are needed
• Fault injection testing provides assurance on product security
Conclusion / Sound Bytes
• Today’s standard technology not resistant to fault attacks
• Implementers of secure boot should address fault risks
• Hardware fault injection countermeasures are needed
• Fault injection testing provides assurance on product security
Niek Timmers
Senior Security Analyst
timmers@riscure.com (@tieknimmers)
Albert Spruyt
Senior Security Analyst
spruyt@riscure.com
www.riscure.com/careers
inforequest@riscure.com

More Related Content

PDF
Fault Injection on Automotive Diagnosis Protocols
PDF
Ch 2: TCP/IP Concepts Review
PDF
Microcontroller part 1
PPTX
Memory model
PDF
Fun with Network Interfaces
PPTX
The Next Linux Superpower: eBPF Primer
PDF
Valgrind tutorial
PDF
BPF - in-kernel virtual machine
Fault Injection on Automotive Diagnosis Protocols
Ch 2: TCP/IP Concepts Review
Microcontroller part 1
Memory model
Fun with Network Interfaces
The Next Linux Superpower: eBPF Primer
Valgrind tutorial
BPF - in-kernel virtual machine

What's hot (20)

PDF
New Ways to Find Latency in Linux Using Tracing
PPTX
Beneath the Linux Interrupt handling
PPTX
Linux I2C
PPT
PPSX
Processors used in System on chip
PPTX
Email Forensics
PDF
PCI Drivers
PDF
PPT
Cryptography and Network Security William Stallings Lawrie Brown
PPTX
Arm v8 instruction overview android 64 bit briefing
PPTX
Debugging Modern C++ Application with Gdb
PPTX
Architecture Exploration of RISC-V Processor and Comparison with ARM Cortex-A53
PDF
ARM architcture
PPTX
Micro controller and dsp processor
PDF
The Linux Block Layer - Built for Fast Storage
PDF
Xvisor: embedded and lightweight hypervisor
PDF
Kernel Recipes 2017: Using Linux perf at Netflix
DOC
Architecture et programmation des circuits CPLD et des FPGA
PDF
The linux networking architecture
New Ways to Find Latency in Linux Using Tracing
Beneath the Linux Interrupt handling
Linux I2C
Processors used in System on chip
Email Forensics
PCI Drivers
Cryptography and Network Security William Stallings Lawrie Brown
Arm v8 instruction overview android 64 bit briefing
Debugging Modern C++ Application with Gdb
Architecture Exploration of RISC-V Processor and Comparison with ARM Cortex-A53
ARM architcture
Micro controller and dsp processor
The Linux Block Layer - Built for Fast Storage
Xvisor: embedded and lightweight hypervisor
Kernel Recipes 2017: Using Linux perf at Netflix
Architecture et programmation des circuits CPLD et des FPGA
The linux networking architecture
Ad

Similar to Bypassing Secure Boot using Fault Injection (20)

PDF
Zen and the art of Security Testing
PDF
Unboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
PDF
On codes, machines, and environments: reflections and experiences
PPT
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
PDF
[PH-Neutral 0x7db] Exploit Next Generation®
PPTX
PDF
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
PPTX
Java application security the hard way - a workshop for the serious developer
PDF
Secure Boot Under Attack: Simulation to Enhance Fault Attacks & Defenses
PPTX
Code Review Cybersecurity: Comprehensive Guide to Secure Code Evaluation & B...
PPTX
The hardcore stuff i hack, experiences from past VAPT assignments
PPTX
BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...
PPTX
Resilience and chaos engineering
PDF
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
PDF
Troopers Diffray v1.1
PPT
Software testing (2) trainingin-mumbai...
PPT
Software testing (2) trainingin-mumbai
PDF
Writing ICS Vulnerability Analysis
PPT
Code Quality - Security
PDF
The Ember.js Framework - Everything You Need To Know
Zen and the art of Security Testing
Unboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
On codes, machines, and environments: reflections and experiences
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
[PH-Neutral 0x7db] Exploit Next Generation®
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Java application security the hard way - a workshop for the serious developer
Secure Boot Under Attack: Simulation to Enhance Fault Attacks & Defenses
Code Review Cybersecurity: Comprehensive Guide to Secure Code Evaluation & B...
The hardcore stuff i hack, experiences from past VAPT assignments
BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...
Resilience and chaos engineering
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Troopers Diffray v1.1
Software testing (2) trainingin-mumbai...
Software testing (2) trainingin-mumbai
Writing ICS Vulnerability Analysis
Code Quality - Security
The Ember.js Framework - Everything You Need To Know
Ad

More from Riscure (17)

PDF
PEW PEW PEW: Designing Secure Boot Securely
PDF
Riscure Assurance for Premium Content at a glance
PDF
Lowering the bar: deep learning for side-channel analysis
PDF
Software Attacks on Hardware Wallets
PDF
Efficient Reverse Engineering of Automotive Firmware
PDF
CheapSCAte: Attacking IoT with less than $60
PDF
Riscure Introduction
PDF
Practical Differential Fault Attack on AES
PDF
Java Card Security
PDF
How to secure electronic passports
PDF
How multi-fault injection breaks the security of smart cards
PDF
Why is it so hard to make secure chips?
PDF
How to secure HCE
PDF
Why are we still vulnerable to Side Channel Attacks?
PDF
Controlling PC on ARM using Fault Injection
PDF
Defeating RSA Multiply-Always and Message Blinding Countermeasures
PDF
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
PEW PEW PEW: Designing Secure Boot Securely
Riscure Assurance for Premium Content at a glance
Lowering the bar: deep learning for side-channel analysis
Software Attacks on Hardware Wallets
Efficient Reverse Engineering of Automotive Firmware
CheapSCAte: Attacking IoT with less than $60
Riscure Introduction
Practical Differential Fault Attack on AES
Java Card Security
How to secure electronic passports
How multi-fault injection breaks the security of smart cards
Why is it so hard to make secure chips?
How to secure HCE
Why are we still vulnerable to Side Channel Attacks?
Controlling PC on ARM using Fault Injection
Defeating RSA Multiply-Always and Message Blinding Countermeasures
Secure initialization of Trusted Execution Environments: When Secure Boot fal...

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation theory and applications.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
KodekX | Application Modernization Development
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Machine learning based COVID-19 study performance prediction
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation theory and applications.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Review of recent advances in non-invasive hemoglobin estimation
KodekX | Application Modernization Development
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
MIND Revenue Release Quarter 2 2025 Press Release
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Machine learning based COVID-19 study performance prediction
“AI and Expert System Decision Support & Business Intelligence Systems”
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Understanding_Digital_Forensics_Presentation.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Reach Out and Touch Someone: Haptics and Empathic Computing
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Spectroscopy.pptx food analysis technology
Programs and apps: productivity, graphics, security and other tools
Mobile App Security Testing_ A Comprehensive Guide.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Bypassing Secure Boot using Fault Injection

  • 1. Bypassing Secure Boot using Fault Injection Niek Timmers timmers@riscure.com (@tieknimmers) Albert Spruyt spruyt@riscure.com November 4, 2016
  • 2. What are the contents of this talk? Keywords – fault injection, secure boot, bypasses, mitigations, practicalities, best practices, demo(s) ...
  • 3. Who are we? Albert & Niek • (Senior) Security Analysts at Riscure • Security testing of different products and technologies Riscure • Services (Security Test Lab) • Hardware / Software / Crypto • Embedded systems / Smart cards • Tools • Side channel analysis (passive) • Fault injection (active) • Offices • Delft, The Netherlands / San Francisco, USA Combining services and tools for fun and profit!
  • 4. Who are we? Albert & Niek • (Senior) Security Analysts at Riscure • Security testing of different products and technologies Riscure • Services (Security Test Lab) • Hardware / Software / Crypto • Embedded systems / Smart cards • Tools • Side channel analysis (passive) • Fault injection (active) • Offices • Delft, The Netherlands / San Francisco, USA Combining services and tools for fun and profit!
  • 5. Who are we? Albert & Niek • (Senior) Security Analysts at Riscure • Security testing of different products and technologies Riscure • Services (Security Test Lab) • Hardware / Software / Crypto • Embedded systems / Smart cards • Tools • Side channel analysis (passive) • Fault injection (active) • Offices • Delft, The Netherlands / San Francisco, USA Combining services and tools for fun and profit!
  • 6. Fault Injection – A definition... ”Introducing faults in a target to alter its intended behavior.” ... if( key_is_correct ) <-- Glitch here! { open_door(); } else { keep_door_closed(); } ... How can we introduce these faults?
  • 7. Fault Injection – A definition... ”Introducing faults in a target to alter its intended behavior.” ... if( key_is_correct ) <-- Glitch here! { open_door(); } else { keep_door_closed(); } ... How can we introduce these faults?
  • 8. Fault Injection – A definition... ”Introducing faults in a target to alter its intended behavior.” ... if( key_is_correct ) <-- Glitch here! { open_door(); } else { keep_door_closed(); } ... How can we introduce these faults?
  • 9. Fault Injection – A definition... ”Introducing faults in a target to alter its intended behavior.” ... if( key_is_correct ) <-- Glitch here! { open_door(); } else { keep_door_closed(); } ... How can we introduce these faults?
  • 10. Fault injection techniques1 clock voltage e-magnetic laser Remark • All techniques introduce faults externally 1 The Sorcerers Apprentice Guide to Fault Attacks. – Bar-El et al., 2004
  • 11. Fault injection techniques1 clock voltage e-magnetic laser Remark • All techniques introduce faults externally 1 The Sorcerers Apprentice Guide to Fault Attacks. – Bar-El et al., 2004
  • 12. Voltage fault injection • Pull the voltage down at the right moment • Not ’too soft’ ; Not ’too hard’ Source: http://www.limited-entropy.com/fault-injection-techniques/
  • 13. Fault models Faults that affect hardware • Registers • Buses Faults that affect hardware that does software2 3 4 • Instruction corruption • Data corruption The true fault model is hard to predict or prove! 2 Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015 3 High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015 4 Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
  • 14. Fault models Faults that affect hardware • Registers • Buses Faults that affect hardware that does software2 3 4 • Instruction corruption • Data corruption The true fault model is hard to predict or prove! 2 Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015 3 High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015 4 Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
  • 15. Fault models Faults that affect hardware • Registers • Buses Faults that affect hardware that does software2 3 4 • Instruction corruption • Data corruption The true fault model is hard to predict or prove! 2 Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015 3 High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015 4 Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
  • 16. Fault models Faults that affect hardware • Registers • Buses Faults that affect hardware that does software2 3 4 • Instruction corruption • Data corruption The true fault model is hard to predict or prove! 2 Fault Model Analysis of Laser-Induced Faults in SRAM Memory Cells – Roscian et. al., 2015 3 High Precision Fault Injections on the Instruction Cache of ARMv7-M Architectures – Riviere et al., 2015 4 Formal verification of a software countermeasure against instruction skip attacks – Moro et. al., 2014
  • 17. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 18. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 19. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 20. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 21. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 22. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 23. Fault Models – ”Our” choice ... When presented with code: instruction corruption. Simple (MIPS) addi $t1, $t1, 8 00100001001010010000000000001000 addi $t1, $t1, 0 00100001001010010000000000000000 Complex (ARM) ldr w1, [sp, #0x8] 10111001010000000000101111100001 str w7, [sp, #0x20] 10111001000000000010001111100111 Remarks • Limited control over which bit(s) will be corrupted • May or may not be the true fault model • Other fault model behavior covered
  • 24. Why is there Secure Boot? Remarks • Integrity and confidentiality of flash contents are not assured! • A mechanism is required for this assurance: secure boot
  • 25. Why is there Secure Boot? Remarks • Integrity and confidentiality of flash contents are not assured! • A mechanism is required for this assurance: secure boot
  • 26. Why is there Secure Boot? Remarks • Integrity and confidentiality of flash contents are not assured! • A mechanism is required for this assurance: secure boot
  • 27. Why is there Secure Boot? Remarks • Integrity and confidentiality of flash contents are not assured! • A mechanism is required for this assurance: secure boot
  • 28. Why is there Secure Boot? Remarks • Integrity and confidentiality of flash contents are not assured! • A mechanism is required for this assurance: secure boot
  • 29. Secure Boot – Generic Design • Assures integrity (and confidentiality) of flash contents • The chain of trust is similar to PKI5 found in browsers • One root of trust composed of immutable code and key 5 Public Key Infrastructure
  • 30. Secure Boot – Generic Design • Assures integrity (and confidentiality) of flash contents • The chain of trust is similar to PKI5 found in browsers • One root of trust composed of immutable code and key 5 Public Key Infrastructure
  • 31. Secure Boot – Generic Design • Assures integrity (and confidentiality) of flash contents • The chain of trust is similar to PKI5 found in browsers • One root of trust composed of immutable code and key 5 Public Key Infrastructure
  • 32. Secure Boot – Generic Design • Assures integrity (and confidentiality) of flash contents • The chain of trust is similar to PKI5 found in browsers • One root of trust composed of immutable code and key 5 Public Key Infrastructure
  • 33. Secure Boot – In reality ... Source: http://community.arm.com/docs/DOC-9306
  • 34. Secure Boot – In reality ... Source: http://community.arm.com/docs/DOC-9306
  • 35. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 36. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 37. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 38. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 39. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 40. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 41. Why use a hardware attack? ”Logical issues exist in secure boot implementations!!?” Bootloader vulnerabilities • S5L8920 (iPhone)6 • Amlogic S9057 However • Small code base results in a small logical attack surface • Implementations without vulnerabililties likely exist Other attack(s) must be used when not logically flawed! 6 https://www.theiphonewiki.com/wiki/0x24000_Segment_Overflow 7 http://www.fredericb.info/2016/10/amlogic-s905-soc-bypassing-not-so.html
  • 42. Why (not) fault injection on secure boot? Cons • Invasive • Physical access • Expensive Pros • No logical vulnerability required • Typical targets not properly protected Especially relevant when assets are not available after boot!
  • 43. Why (not) fault injection on secure boot? Cons • Invasive • Physical access • Expensive Pros • No logical vulnerability required • Typical targets not properly protected Especially relevant when assets are not available after boot!
  • 44. Why (not) fault injection on secure boot? Cons • Invasive • Physical access • Expensive Pros • No logical vulnerability required • Typical targets not properly protected Especially relevant when assets are not available after boot!
  • 45. Why (not) fault injection on secure boot? Cons • Invasive • Physical access • Expensive Pros • No logical vulnerability required • Typical targets not properly protected Especially relevant when assets are not available after boot!
  • 46. Typical assets Secure code • Boot code (ROM8) Secrets • Keys (for boot code decryption) Secure hardware • Cryptographic engines 8 Read Only Memory
  • 47. Typical assets Secure code • Boot code (ROM8) Secrets • Keys (for boot code decryption) Secure hardware • Cryptographic engines 8 Read Only Memory
  • 48. Typical assets Secure code • Boot code (ROM8) Secrets • Keys (for boot code decryption) Secure hardware • Cryptographic engines 8 Read Only Memory
  • 49. Typical assets Secure code • Boot code (ROM8) Secrets • Keys (for boot code decryption) Secure hardware • Cryptographic engines 8 Read Only Memory
  • 50. Fault Injection – Intermezzo
  • 51. Fault Injection – Tooling Micah posted a very nice video using the ChipWhisperer-Lite9 By NewAE Technology Inc.10 9 https://www.youtube.com/watch?v=TeCQatNcF20 10 https://wiki.newae.com/CW1173_ChipWhisperer-Lite
  • 52. Fault Injection – Tooling Micah posted a very nice video using the ChipWhisperer-Lite9 By NewAE Technology Inc.10 9 https://www.youtube.com/watch?v=TeCQatNcF20 10 https://wiki.newae.com/CW1173_ChipWhisperer-Lite
  • 53. Fault Injection – Setup Target • Digilent Zybo (Xilinx Zynq-7010 System-on-Chip) • ARM Cortex-A9 (AArch32)
  • 54. Fault Injection – Setup Target • Digilent Zybo (Xilinx Zynq-7010 System-on-Chip) • ARM Cortex-A9 (AArch32)
  • 56. Characterization – Test application11 asm volatile ( ... "add r1, r1, #1;" "add r1, r1, #1;" < repeat > <-- glitch here "add r1, r1, #1;" "add r1, r1, #1;" ... ); Remarks • Full control over the target • Increasing a counter using ADD instructions • Send counter back using the serial interface 11 Implemented as an U-Boot command
  • 57. Characterization – Possible responses Expected: ’too soft’ counter = 00010000 Mute: ’too hard’ counter = Success: ’$$$’ counter = 00009999 counter = 00010015 counter = 00008687 Remarks • Glitching ’too hard’ may damage the target permanently
  • 58. Characterization – Possible responses Expected: ’too soft’ counter = 00010000 Mute: ’too hard’ counter = Success: ’$$$’ counter = 00009999 counter = 00010015 counter = 00008687 Remarks • Glitching ’too hard’ may damage the target permanently
  • 59. Characterization – Possible responses Expected: ’too soft’ counter = 00010000 Mute: ’too hard’ counter = Success: ’$$$’ counter = 00009999 counter = 00010015 counter = 00008687 Remarks • Glitching ’too hard’ may damage the target permanently
  • 60. Characterization – Possible responses Expected: ’too soft’ counter = 00010000 Mute: ’too hard’ counter = Success: ’$$$’ counter = 00009999 counter = 00010015 counter = 00008687 Remarks • Glitching ’too hard’ may damage the target permanently
  • 61. Characterization – Possible responses Expected: ’too soft’ counter = 00010000 Mute: ’too hard’ counter = Success: ’$$$’ counter = 00009999 counter = 00010015 counter = 00008687 Remarks • Glitching ’too hard’ may damage the target permanently
  • 62. DEMO 1 PARAMETER SEARCH Glitch parameters • Randomize glitch delay within the attack window • Randomize the glitch voltage • Randomize the glitch length
  • 63. DEMO 1 PARAMETER SEARCH Glitch parameters • Randomize glitch delay within the attack window • Randomize the glitch voltage • Randomize the glitch length
  • 64. DEMO 1 PARAMETER SEARCH Glitch parameters • Randomize glitch delay within the attack window • Randomize the glitch voltage • Randomize the glitch length
  • 65. DEMO 1 PARAMETER SEARCH Glitch parameters • Randomize glitch delay within the attack window • Randomize the glitch voltage • Randomize the glitch length
  • 66. That was the introduction ... ... let’s bypass secure boot: The Classics!
  • 67. That was the introduction ... ... let’s bypass secure boot: The Classics!
  • 68. Classic Bypass 00: Hash comparison • Applicable to all secure boot implementations • Bypass of authentication if( memcmp( p, hash, hashlen ) != 0 ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); p += hashlen; if( p != end ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); return( 0 ); Source: https://tls.mbed.org/
  • 69. Classic Bypass 00: Hash comparison • Applicable to all secure boot implementations • Bypass of authentication if( memcmp( p, hash, hashlen ) != 0 ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); p += hashlen; if( p != end ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); return( 0 ); Source: https://tls.mbed.org/
  • 70. Classic Bypass 00: Hash comparison • Applicable to all secure boot implementations • Bypass of authentication if( memcmp( p, hash, hashlen ) != 0 ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); p += hashlen; if( p != end ) return( MBEDTLS_ERR_RSA_VERIFY_FAILED ); return( 0 ); Source: https://tls.mbed.org/
  • 71. Classic Bypass 00: Hash comparison Multiple locations bypass the check with a single fault!
  • 72. Classic Bypass 00: Hash comparison Multiple locations bypass the check with a single fault!
  • 73. Classic Bypass 00: Hash comparison Multiple locations bypass the check with a single fault!
  • 74. Classic Bypass 00: Hash comparison Multiple locations bypass the check with a single fault!
  • 75. Classic Bypass 00: Hash comparison Multiple locations bypass the check with a single fault!
  • 76. Classic Bypass 01: Signature check call /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ no_boot(); } else { /* boot up the image */ boot(); } Remarks • Bypasses can happen on all levels • Inside functions, inside the calling functions, etc.
  • 77. Classic Bypass 01: Signature check call /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ no_boot(); } else { /* boot up the image */ boot(); } Remarks • Bypasses can happen on all levels • Inside functions, inside the calling functions, etc.
  • 78. Classic Bypass 01: Signature check call /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ no_boot(); } else { /* boot up the image */ boot(); } Remarks • Bypasses can happen on all levels • Inside functions, inside the calling functions, etc.
  • 79. Classic Bypass 02: Infinite loop • What to do when the signature verification fails? • Enter an infinite loop! /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ while(1); } else { /* boot up the image */ boot(); }
  • 80. Classic Bypass 02: Infinite loop • What to do when the signature verification fails? • Enter an infinite loop! /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ while(1); } else { /* boot up the image */ boot(); }
  • 81. Classic Bypass 02: Infinite loop • What to do when the signature verification fails? • Enter an infinite loop! /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ while(1); } else { /* boot up the image */ boot(); }
  • 82. Classic Bypass 02: Infinite loop • What to do when the signature verification fails? • Enter an infinite loop! /* glitch here */ if(mbedtls_pk_verify(&k, SHA256, h, hs, s, ss)) { /* do not boot up the image */ while(1); } else { /* boot up the image */ boot(); }
  • 83. Classic Bypass 02: Infinite loop Remarks • Timing is not an issue! • Classic smart card attack 12 • Better to reset or wipe keys 12 https://en.wikipedia.org/wiki/Unlooper
  • 84. Classic Bypass 02: Infinite loop Remarks • Timing is not an issue! • Classic smart card attack 12 • Better to reset or wipe keys 12 https://en.wikipedia.org/wiki/Unlooper
  • 85. Classic Bypass 02: Infinite loop Remarks • Timing is not an issue! • Classic smart card attack 12 • Better to reset or wipe keys 12 https://en.wikipedia.org/wiki/Unlooper
  • 86. Classic Bypass 02: Infinite loop Remarks • Timing is not an issue! • Classic smart card attack 12 • Better to reset or wipe keys 12 https://en.wikipedia.org/wiki/Unlooper
  • 87. Classic Bypass 02: Infinite loop Remarks • Timing is not an issue! • Classic smart card attack 12 • Better to reset or wipe keys 12 https://en.wikipedia.org/wiki/Unlooper
  • 88. Classic Bypass 03: Secure boot enable • Secure boot often enabled/disabled based on OTP13 bit • No secure boot during development; secure boot in the field • Typically just after the CPU comes out of reset 13 One-Time-Programmable memory
  • 89. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 90. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 91. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 92. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 93. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 94. Fault Injection – Mitigations Hardware countermeasures 14 15 • Detect the glitch or fault Software countermeasures 16 • Lower the probability of a successful fault • Do not address the root cause You can lower the probability but not rule it out! 14 The Sorcerers Apprentice Guide to Fault Attacks – Bar-El et al., 2004 15 The Fault Attack Jungle - A Classification Model to Guide You – Verbauwhede et al., 2011 16 Secure Application Programming in the Presence of Side Channel Attacks – Witteman
  • 95. Compiler optimizations Why? • ROM memory size is limited • Compiler optimizations decrease code size Compiler optimizes out intended code!
  • 96. Compiler optimizations Why? • ROM memory size is limited • Compiler optimizations decrease code size Compiler optimizes out intended code!
  • 97. Compiler optimizations Why? • ROM memory size is limited • Compiler optimizations decrease code size Compiler optimizes out intended code!
  • 98. Compiler ’optimization’ – Double check Example of a double check unsigned int compare(char * input, int len) { if(memcmp(password, input, len) == 0) <-- 1st { if(memcmp(password, input, len) == 0) <-- 2nd { return TRUE; } } return FALSE; }
  • 99. Compiler ’optimization’ – Double check Compiled without optimizations
  • 100. Compiler ’optimization’ – Double check Compiled with optimizations
  • 101. Compiler ’optimizations’ – Best practices • Your compiler is smarter than you • Use ’volatile’ to prevent compiler problems • Read the output of the compiler!
  • 102. Compiler ’optimizations’ – Best practices • Your compiler is smarter than you • Use ’volatile’ to prevent compiler problems • Read the output of the compiler!
  • 103. Compiler ’optimizations’ – Best practices • Your compiler is smarter than you • Use ’volatile’ to prevent compiler problems • Read the output of the compiler!
  • 104. Compiler ’optimizations’ – Best practices • Your compiler is smarter than you • Use ’volatile’ to prevent compiler problems • Read the output of the compiler!
  • 105. Compiler ’optimization’ – Pointer setup Example of a double check using ’volatile’ int checkSecureBoot( ){ volatile int * otp_secure_boot = OTP_SECURE_BOOT; if( (*otp_secure_boot >> 7) & 0x1 ){ <-- 1st return 0; }else{ if( (*otp_secure_boot >> 7) & 0x1 ){ <-- 2nd return 0; }else{ return 1; } } }
  • 106. Compiler ’optimization’ – Pointer setup Compiled with optimizations
  • 107. Compiler ’optimization’ – Pointer setup Compiled with optimizations
  • 108. Combined Attacks Those were the classics and their mitigations .. ... the attack surface is larger!17 17 All attacks have been performed successfully on multiple targets!
  • 109. Combined Attacks Those were the classics and their mitigations .. ... the attack surface is larger!17 17 All attacks have been performed successfully on multiple targets!
  • 110. Combined attack – Copy • Introducing logical vulnerabilities using fault injection • Build your own buffer overflow! • Easy approach: change memcpy the size argument Before corruption memcpy(dst, src, 0x1000); After corruption memcpy(dst, src, 0xCEE5); Remark • Works when dedicated hardware is used (e.g. DMA18 engines) 18 Direct Memory Access
  • 111. Combined attack – Copy • Introducing logical vulnerabilities using fault injection • Build your own buffer overflow! • Easy approach: change memcpy the size argument Before corruption memcpy(dst, src, 0x1000); After corruption memcpy(dst, src, 0xCEE5); Remark • Works when dedicated hardware is used (e.g. DMA18 engines) 18 Direct Memory Access
  • 112. Combined attack – Copy • Introducing logical vulnerabilities using fault injection • Build your own buffer overflow! • Easy approach: change memcpy the size argument Before corruption memcpy(dst, src, 0x1000); After corruption memcpy(dst, src, 0xCEE5); Remark • Works when dedicated hardware is used (e.g. DMA18 engines) 18 Direct Memory Access
  • 113. Combined attack – Copy • Introducing logical vulnerabilities using fault injection • Build your own buffer overflow! • Easy approach: change memcpy the size argument Before corruption memcpy(dst, src, 0x1000); After corruption memcpy(dst, src, 0xCEE5); Remark • Works when dedicated hardware is used (e.g. DMA18 engines) 18 Direct Memory Access
  • 114. Combined attack – Copy • Introducing logical vulnerabilities using fault injection • Build your own buffer overflow! • Easy approach: change memcpy the size argument Before corruption memcpy(dst, src, 0x1000); After corruption memcpy(dst, src, 0xCEE5); Remark • Works when dedicated hardware is used (e.g. DMA18 engines) 18 Direct Memory Access
  • 115. Combined attack – Copy Remark • Targetting the copy function arguments
  • 116. Combined attack – Copy Remark • Targetting the copy function arguments
  • 117. Combined attack – Copy Remark • Targetting the copy function arguments
  • 118. Combined attack – Copy Remark • Targetting the copy function arguments
  • 119. Combined attack – Copy Remark • Targetting the copy function arguments
  • 120. Combined attack – Copy Remark • Targetting the copy function arguments
  • 121. Combined attack - Controlling PC on ARM20 • Exploits an ARM32 characteristic • PC19 register is directly accessible by most instructions Multi-word copy LDMIA r1!, {r3 - r10} STMIA r0!, {r3 - r10} Controlling PC using LDMIA LDMIA r1!,{r3-r10} 11101000101100010000011111111000 LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000 • Variations possible on other architectures; code dependent 19 Program Counter 20 Controlling PC on ARM using Fault Injection – Timmers et al., 2016
  • 122. Combined attack - Controlling PC on ARM20 • Exploits an ARM32 characteristic • PC19 register is directly accessible by most instructions Multi-word copy LDMIA r1!, {r3 - r10} STMIA r0!, {r3 - r10} Controlling PC using LDMIA LDMIA r1!,{r3-r10} 11101000101100010000011111111000 LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000 • Variations possible on other architectures; code dependent 19 Program Counter 20 Controlling PC on ARM using Fault Injection – Timmers et al., 2016
  • 123. Combined attack - Controlling PC on ARM20 • Exploits an ARM32 characteristic • PC19 register is directly accessible by most instructions Multi-word copy LDMIA r1!, {r3 - r10} STMIA r0!, {r3 - r10} Controlling PC using LDMIA LDMIA r1!,{r3-r10} 11101000101100010000011111111000 LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000 • Variations possible on other architectures; code dependent 19 Program Counter 20 Controlling PC on ARM using Fault Injection – Timmers et al., 2016
  • 124. Combined attack - Controlling PC on ARM20 • Exploits an ARM32 characteristic • PC19 register is directly accessible by most instructions Multi-word copy LDMIA r1!, {r3 - r10} STMIA r0!, {r3 - r10} Controlling PC using LDMIA LDMIA r1!,{r3-r10} 11101000101100010000011111111000 LDMIA r1!,{r3-r10,PC} 11101000101100011000011111111000 • Variations possible on other architectures; code dependent 19 Program Counter 20 Controlling PC on ARM using Fault Injection – Timmers et al., 2016
  • 125. Combined attack - Controlling PC on ARM Remark • Targetting the copy function arguments
  • 126. Combined attack - Controlling PC on ARM Remark • Targetting the copy function arguments
  • 127. Combined attack - Controlling PC on ARM Remark • Targetting the copy function arguments
  • 128. Combined attacks - Wild jungle jump21 • Start glitching while/after loading the image but before decryption • Lots of ’magic’ pointers around, which point close to the code • Get them from: stack, register, memory • The more magic pointers, the higher the probability 21 Proving the wild jungle jump – Gratchoff, 2015
  • 129. Combined attacks - Wild jungle jump21 • Start glitching while/after loading the image but before decryption • Lots of ’magic’ pointers around, which point close to the code • Get them from: stack, register, memory • The more magic pointers, the higher the probability 21 Proving the wild jungle jump – Gratchoff, 2015
  • 130. Combined attacks - Wild jungle jump21 • Start glitching while/after loading the image but before decryption • Lots of ’magic’ pointers around, which point close to the code • Get them from: stack, register, memory • The more magic pointers, the higher the probability 21 Proving the wild jungle jump – Gratchoff, 2015
  • 131. Combined attacks - Wild jungle jump21 • Start glitching while/after loading the image but before decryption • Lots of ’magic’ pointers around, which point close to the code • Get them from: stack, register, memory • The more magic pointers, the higher the probability 21 Proving the wild jungle jump – Gratchoff, 2015
  • 132. Combined attacks - Wild jungle jump21 • Start glitching while/after loading the image but before decryption • Lots of ’magic’ pointers around, which point close to the code • Get them from: stack, register, memory • The more magic pointers, the higher the probability 21 Proving the wild jungle jump – Gratchoff, 2015
  • 133. Combined attack(s) – Summary • Bypass of both authentication and decryption • Typically little software exploitation mitigation during boot • Fault injection mitigations in software may not be effective
  • 134. Combined attack(s) – Summary • Bypass of both authentication and decryption • Typically little software exploitation mitigation during boot • Fault injection mitigations in software may not be effective
  • 135. Combined attack(s) – Summary • Bypass of both authentication and decryption • Typically little software exploitation mitigation during boot • Fault injection mitigations in software may not be effective
  • 136. Combined attack(s) – Summary • Bypass of both authentication and decryption • Typically little software exploitation mitigation during boot • Fault injection mitigations in software may not be effective
  • 137. There are some practicalities ... ... which we must overcome!
  • 138. There are some practicalities ... ... which we must overcome!
  • 139. Secure Boot – Demo Design Remark • Stage 2 is invalided by changing the printed string • Stage 1 enters an infinite loop when the signature is invalid
  • 140. Secure Boot – Demo Design Remark • Stage 2 is invalided by changing the printed string • Stage 1 enters an infinite loop when the signature is invalid
  • 141. Secure Boot – Demo Design Remark • Stage 2 is invalided by changing the printed string • Stage 1 enters an infinite loop when the signature is invalid
  • 142. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 143. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 144. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 145. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 146. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 147. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 148. When to glitch? • Not possible to use a signal originating from target • Only reference point is power-on reset moment • Use side-channels to obtain more information • Compare behavior between valid image and an invalid image
  • 149. Boot profiling – Reset Valid image Invalid image Remark • No difference between a valid and invalid image • Attack window spreads across the entire trace (˜400 ms)
  • 150. Boot profiling – Reset Valid image Invalid image Remark • No difference between a valid and invalid image • Attack window spreads across the entire trace (˜400 ms)
  • 151. Boot profiling – Reset Valid image Invalid image Remark • No difference between a valid and invalid image • Attack window spreads across the entire trace (˜400 ms)
  • 152. Boot profiling – Flash activity Valid image Invalid image Remarks • Flash activity 3 not present for the invalid image • Attack window between flash activity 2 and 3 (˜10 ms)
  • 153. Boot profiling – Flash activity Valid image Invalid image Remarks • Flash activity 3 not present for the invalid image • Attack window between flash activity 2 and 3 (˜10 ms)
  • 154. Boot profiling – Flash activity Valid image Invalid image Remarks • Flash activity 3 not present for the invalid image • Attack window between flash activity 2 and 3 (˜10 ms)
  • 155. Boot profiling – Power consumption Remark • Measuring electromagnetic emissions using a probe22 22 https://www.langer-emv.de/en/product/rf-passive-30-mhz-3-ghz/35/ rf1-set-near-field-probes-30-mhz-up-to-3-ghz/270
  • 156. Boot profiling – Power consumption Remark • Measuring electromagnetic emissions using a probe22 22 https://www.langer-emv.de/en/product/rf-passive-30-mhz-3-ghz/35/ rf1-set-near-field-probes-30-mhz-up-to-3-ghz/270
  • 157. Boot profiling – Power consumption Valid image Invalid image Remarks • Significant difference in the electromagnetic emissions • Attack window reduced significantly (< 1 ms) • Power profile at black arrow is flat: infinite loop
  • 158. Boot profiling – Power consumption Valid image Invalid image Remarks • Significant difference in the electromagnetic emissions • Attack window reduced significantly (< 1 ms) • Power profile at black arrow is flat: infinite loop
  • 159. Boot profiling – Power consumption Valid image Invalid image Remarks • Significant difference in the electromagnetic emissions • Attack window reduced significantly (< 1 ms) • Power profile at black arrow is flat: infinite loop
  • 160. Boot profiling – Power consumption Valid image Invalid image Remarks • Significant difference in the electromagnetic emissions • Attack window reduced significantly (< 1 ms) • Power profile at black arrow is flat: infinite loop
  • 161. Boot profiling – Power consumption Valid image Invalid image Remarks • Significant difference in the electromagnetic emissions • Attack window reduced significantly (< 1 ms) • Power profile at black arrow is flat: infinite loop
  • 162. Jitter Remark • Jitter during boot prevents effective timing (˜150 µs)
  • 163. Jitter Remark • Jitter during boot prevents effective timing (˜150 µs)
  • 164. Jitter Remark • Jitter during boot prevents effective timing (˜150 µs)
  • 165. How to minimize jitter during boot? • Power-on reset is too early • Use a signal close to the ’glitch moment’ Remark • Using flash activity 2 as a trigger to minimize jitter
  • 166. How to minimize jitter during boot? • Power-on reset is too early • Use a signal close to the ’glitch moment’ Remark • Using flash activity 2 as a trigger to minimize jitter
  • 167. How to minimize jitter during boot? • Power-on reset is too early • Use a signal close to the ’glitch moment’ Remark • Using flash activity 2 as a trigger to minimize jitter
  • 168. How to minimize jitter during boot? • Power-on reset is too early • Use a signal close to the ’glitch moment’ Remark • Using flash activity 2 as a trigger to minimize jitter
  • 169. How to minimize jitter during boot? • Power-on reset is too early • Use a signal close to the ’glitch moment’ Remark • Using flash activity 2 as a trigger to minimize jitter
  • 170. Glitch Timing – Power consumption Remarks • Jitter minimized using flash activity as a trigger
  • 171. Glitch Timing – Power consumption Remarks • Jitter minimized using flash activity as a trigger
  • 172. DEMO 2 BYPASSING SECURE BOOT Glitch parameter search • Fixed the glitch delay to 300 ms • Fixed the glitch voltage to -2 V • Randomize the glitch length
  • 173. DEMO 2 BYPASSING SECURE BOOT Glitch parameter search • Fixed the glitch delay to 300 ms • Fixed the glitch voltage to -2 V • Randomize the glitch length
  • 174. DEMO 2 BYPASSING SECURE BOOT Glitch parameter search • Fixed the glitch delay to 300 ms • Fixed the glitch voltage to -2 V • Randomize the glitch length
  • 175. DEMO 2 BYPASSING SECURE BOOT Glitch parameter search • Fixed the glitch delay to 300 ms • Fixed the glitch voltage to -2 V • Randomize the glitch length
  • 177. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 178. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 179. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 180. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 181. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 182. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 183. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 184. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 185. Secure Boot – Manufacturer Best practices Minimize attack surface • Authenticate all code and data • Limit functionality in ROM code • Disable memory when not required Lower the probability • Implement fault injection countermeasures • Implement software exploitation mitigations Robustness can only be determined using testing!
  • 186. Conclusion / Sound Bytes • Today’s standard technology not resistant to fault attacks • Implementers of secure boot should address fault risks • Hardware fault injection countermeasures are needed • Fault injection testing provides assurance on product security
  • 187. Conclusion / Sound Bytes • Today’s standard technology not resistant to fault attacks • Implementers of secure boot should address fault risks • Hardware fault injection countermeasures are needed • Fault injection testing provides assurance on product security
  • 188. Conclusion / Sound Bytes • Today’s standard technology not resistant to fault attacks • Implementers of secure boot should address fault risks • Hardware fault injection countermeasures are needed • Fault injection testing provides assurance on product security
  • 189. Conclusion / Sound Bytes • Today’s standard technology not resistant to fault attacks • Implementers of secure boot should address fault risks • Hardware fault injection countermeasures are needed • Fault injection testing provides assurance on product security
  • 190. Conclusion / Sound Bytes • Today’s standard technology not resistant to fault attacks • Implementers of secure boot should address fault risks • Hardware fault injection countermeasures are needed • Fault injection testing provides assurance on product security
  • 191. Niek Timmers Senior Security Analyst timmers@riscure.com (@tieknimmers) Albert Spruyt Senior Security Analyst spruyt@riscure.com www.riscure.com/careers inforequest@riscure.com