SlideShare a Scribd company logo
1 of 191
Download to read offline
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

What's hot

La sicurezza dei sistemi di elaborazione e delle reti informatiche.
La sicurezza dei sistemi di elaborazione e delle reti informatiche.La sicurezza dei sistemi di elaborazione e delle reti informatiche.
La sicurezza dei sistemi di elaborazione e delle reti informatiche.gmorelli78
 
Ethical Hacking and Penetration Testing
Ethical Hacking and Penetration Testing Ethical Hacking and Penetration Testing
Ethical Hacking and Penetration Testing Rishabh Upadhyay
 
introduction of Cyber securit
introduction of Cyber securitintroduction of Cyber securit
introduction of Cyber securitMohammed Kassem
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application Securitycclark_isec
 
In the DOM, no one will hear you scream
In the DOM, no one will hear you screamIn the DOM, no one will hear you scream
In the DOM, no one will hear you screamMario Heiderich
 
Cyber crime - What is and types.
Cyber crime - What is and types.Cyber crime - What is and types.
Cyber crime - What is and types.Niloy Biswas
 
Cyber Security A Challenges For Mankind
Cyber Security A Challenges For MankindCyber Security A Challenges For Mankind
Cyber Security A Challenges For MankindSaurabh Kheni
 
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf
 
Attacchi informatici: cosa sono e come funzionano
Attacchi informatici: cosa sono e come funzionanoAttacchi informatici: cosa sono e come funzionano
Attacchi informatici: cosa sono e come funzionanoSiteGround.com
 
Cybersecurity 140713064844-phpapp01 (1)-converted
Cybersecurity 140713064844-phpapp01 (1)-convertedCybersecurity 140713064844-phpapp01 (1)-converted
Cybersecurity 140713064844-phpapp01 (1)-convertedProf .Pragati Khade
 
Cyber security
Cyber securityCyber security
Cyber securityChethanMp7
 
Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Jay Nagar
 
Introduction to Dynamic Malware Analysis ...Or am I "Cuckoo for Malware?"
Introduction to Dynamic Malware Analysis   ...Or am I "Cuckoo for Malware?"Introduction to Dynamic Malware Analysis   ...Or am I "Cuckoo for Malware?"
Introduction to Dynamic Malware Analysis ...Or am I "Cuckoo for Malware?"Lane Huff
 
IPS (intrusion prevention system)
IPS (intrusion prevention system)IPS (intrusion prevention system)
IPS (intrusion prevention system)Netwax Lab
 

What's hot (20)

La sicurezza dei sistemi di elaborazione e delle reti informatiche.
La sicurezza dei sistemi di elaborazione e delle reti informatiche.La sicurezza dei sistemi di elaborazione e delle reti informatiche.
La sicurezza dei sistemi di elaborazione e delle reti informatiche.
 
Ethical Hacking and Penetration Testing
Ethical Hacking and Penetration Testing Ethical Hacking and Penetration Testing
Ethical Hacking and Penetration Testing
 
introduction of Cyber securit
introduction of Cyber securitintroduction of Cyber securit
introduction of Cyber securit
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application Security
 
Cyber Security.docx
Cyber Security.docxCyber Security.docx
Cyber Security.docx
 
Cyber security
Cyber securityCyber security
Cyber security
 
In the DOM, no one will hear you scream
In the DOM, no one will hear you screamIn the DOM, no one will hear you scream
In the DOM, no one will hear you scream
 
Cyber crime - What is and types.
Cyber crime - What is and types.Cyber crime - What is and types.
Cyber crime - What is and types.
 
Cyber security
Cyber securityCyber security
Cyber security
 
Cyber Security A Challenges For Mankind
Cyber Security A Challenges For MankindCyber Security A Challenges For Mankind
Cyber Security A Challenges For Mankind
 
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
 
Security testing
Security testingSecurity testing
Security testing
 
Attacchi informatici: cosa sono e come funzionano
Attacchi informatici: cosa sono e come funzionanoAttacchi informatici: cosa sono e come funzionano
Attacchi informatici: cosa sono e come funzionano
 
Xss ppt
Xss pptXss ppt
Xss ppt
 
AUTOMOTIVE CYBER SECURITY PPT
AUTOMOTIVE CYBER SECURITY PPTAUTOMOTIVE CYBER SECURITY PPT
AUTOMOTIVE CYBER SECURITY PPT
 
Cybersecurity 140713064844-phpapp01 (1)-converted
Cybersecurity 140713064844-phpapp01 (1)-convertedCybersecurity 140713064844-phpapp01 (1)-converted
Cybersecurity 140713064844-phpapp01 (1)-converted
 
Cyber security
Cyber securityCyber security
Cyber security
 
Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )
 
Introduction to Dynamic Malware Analysis ...Or am I "Cuckoo for Malware?"
Introduction to Dynamic Malware Analysis   ...Or am I "Cuckoo for Malware?"Introduction to Dynamic Malware Analysis   ...Or am I "Cuckoo for Malware?"
Introduction to Dynamic Malware Analysis ...Or am I "Cuckoo for Malware?"
 
IPS (intrusion prevention system)
IPS (intrusion prevention system)IPS (intrusion prevention system)
IPS (intrusion prevention system)
 

Similar to Bypassing Secure Boot using Fault Injection

Zen and the art of Security Testing
Zen and the art of Security TestingZen and the art of Security Testing
Zen and the art of Security TestingTEST Huddle
 
Unboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
Unboxing the White-Box: Practical Attacks Against Obfuscated CiphersUnboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
Unboxing the White-Box: Practical Attacks Against Obfuscated CiphersCristofaro Mune
 
On codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesOn codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesVincenzo De Florio
 
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)Steve Poole
 
[PH-Neutral 0x7db] Exploit Next Generation®
[PH-Neutral 0x7db] Exploit Next Generation®[PH-Neutral 0x7db] Exploit Next Generation®
[PH-Neutral 0x7db] Exploit Next Generation®Nelson Brito
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...ORAU
 
Java application security the hard way - a workshop for the serious developer
Java application security the hard way - a workshop for the serious developerJava application security the hard way - a workshop for the serious developer
Java application security the hard way - a workshop for the serious developerSteve Poole
 
Secure Boot Under Attack: Simulation to Enhance Fault Attacks & Defenses
Secure Boot Under Attack: Simulation to Enhance Fault Attacks & DefensesSecure Boot Under Attack: Simulation to Enhance Fault Attacks & Defenses
Secure Boot Under Attack: Simulation to Enhance Fault Attacks & DefensesRiscure
 
The hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignmentsThe hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignmentsn|u - The Open Security Community
 
BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...
BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...
BlueHat v17 || KERNELFAULT: R00ting the Unexploitable using Hardware Fault In...BlueHat Security Conference
 
Resilience and chaos engineering
Resilience and chaos engineeringResilience and chaos engineering
Resilience and chaos engineeringEric Wyles
 
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationThreat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationAbhay Bhargav
 
Troopers Diffray v1.1
Troopers Diffray v1.1Troopers Diffray v1.1
Troopers Diffray v1.1pinkflawd
 
Software testing (2) trainingin-mumbai...
Software testing (2) trainingin-mumbai...Software testing (2) trainingin-mumbai...
Software testing (2) trainingin-mumbai...vibrantuser
 
Software testing (2) trainingin-mumbai
Software testing (2) trainingin-mumbaiSoftware testing (2) trainingin-mumbai
Software testing (2) trainingin-mumbaivibrantuser
 
Writing ICS Vulnerability Analysis
Writing ICS Vulnerability AnalysisWriting ICS Vulnerability Analysis
Writing ICS Vulnerability AnalysisDigital Bond
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Securitysedukull
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowAll Things Open
 
Using Analyzers to Resolve Security Problems
Using Analyzers to Resolve Security ProblemsUsing Analyzers to Resolve Security Problems
Using Analyzers to Resolve Security Problemskiansahafi
 

Similar to Bypassing Secure Boot using Fault Injection (20)

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

More from Riscure

PEW PEW PEW: Designing Secure Boot Securely
PEW PEW PEW: Designing Secure Boot SecurelyPEW PEW PEW: Designing Secure Boot Securely
PEW PEW PEW: Designing Secure Boot SecurelyRiscure
 
Riscure Assurance for Premium Content at a glance
Riscure Assurance for Premium Content at a glanceRiscure Assurance for Premium Content at a glance
Riscure Assurance for Premium Content at a glanceRiscure
 
Lowering the bar: deep learning for side-channel analysis
Lowering the bar: deep learning for side-channel analysisLowering the bar: deep learning for side-channel analysis
Lowering the bar: deep learning for side-channel analysisRiscure
 
Software Attacks on Hardware Wallets
Software Attacks on Hardware WalletsSoftware Attacks on Hardware Wallets
Software Attacks on Hardware WalletsRiscure
 
Efficient Reverse Engineering of Automotive Firmware
Efficient Reverse Engineering of Automotive FirmwareEfficient Reverse Engineering of Automotive Firmware
Efficient Reverse Engineering of Automotive FirmwareRiscure
 
Fault Injection on Automotive Diagnosis Protocols
Fault Injection on Automotive Diagnosis ProtocolsFault Injection on Automotive Diagnosis Protocols
Fault Injection on Automotive Diagnosis ProtocolsRiscure
 
CheapSCAte: Attacking IoT with less than $60
CheapSCAte: Attacking IoT with less than $60CheapSCAte: Attacking IoT with less than $60
CheapSCAte: Attacking IoT with less than $60Riscure
 
Riscure Introduction
Riscure IntroductionRiscure Introduction
Riscure IntroductionRiscure
 
Practical Differential Fault Attack on AES
Practical Differential Fault Attack on AESPractical Differential Fault Attack on AES
Practical Differential Fault Attack on AESRiscure
 
Java Card Security
Java Card SecurityJava Card Security
Java Card SecurityRiscure
 
How to secure electronic passports
How to secure electronic passportsHow to secure electronic passports
How to secure electronic passportsRiscure
 
How multi-fault injection breaks the security of smart cards
How multi-fault injection breaks the security of smart cardsHow multi-fault injection breaks the security of smart cards
How multi-fault injection breaks the security of smart cardsRiscure
 
Why is it so hard to make secure chips?
Why is it so hard to make secure chips?Why is it so hard to make secure chips?
Why is it so hard to make secure chips?Riscure
 
How to secure HCE
How to secure HCEHow to secure HCE
How to secure HCERiscure
 
Why are we still vulnerable to Side Channel Attacks?
Why are we still vulnerable to Side Channel Attacks?Why are we still vulnerable to Side Channel Attacks?
Why are we still vulnerable to Side Channel Attacks?Riscure
 
Controlling PC on ARM using Fault Injection
Controlling PC on ARM using Fault InjectionControlling PC on ARM using Fault Injection
Controlling PC on ARM using Fault InjectionRiscure
 
Defeating RSA Multiply-Always and Message Blinding Countermeasures
Defeating RSA Multiply-Always and Message Blinding CountermeasuresDefeating RSA Multiply-Always and Message Blinding Countermeasures
Defeating RSA Multiply-Always and Message Blinding CountermeasuresRiscure
 
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...Riscure
 

More from Riscure (18)

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

Recently uploaded

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

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