SlideShare uma empresa Scribd logo
1 de 191
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

How to Prevent RFI and LFI Attacks
How to Prevent RFI and LFI AttacksHow to Prevent RFI and LFI Attacks
How to Prevent RFI and LFI AttacksImperva
 
LCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted FirmwareLCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted FirmwareLinaro
 
LAS16 111 - Raspberry pi3, op-tee and jtag debugging
LAS16 111 - Raspberry pi3, op-tee and jtag debuggingLAS16 111 - Raspberry pi3, op-tee and jtag debugging
LAS16 111 - Raspberry pi3, op-tee and jtag debugging96Boards
 
John the ripper & hydra password cracking tool
John the ripper & hydra password cracking toolJohn the ripper & hydra password cracking tool
John the ripper & hydra password cracking toolMd. Raquibul Hoque
 
PowerShell for Penetration Testers
PowerShell for Penetration TestersPowerShell for Penetration Testers
PowerShell for Penetration TestersNikhil Mittal
 
0x003 - Exploiting LOLDrivers - Physical Memory Mayhem
0x003 - Exploiting LOLDrivers - Physical Memory Mayhem0x003 - Exploiting LOLDrivers - Physical Memory Mayhem
0x003 - Exploiting LOLDrivers - Physical Memory MayhemRussell Sanford
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewLinaro
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMLinaro
 
Software update for IoT: the current state of play
Software update for IoT: the current state of playSoftware update for IoT: the current state of play
Software update for IoT: the current state of playChris Simmonds
 
Docker para integradores Asterisk
Docker para integradores AsteriskDocker para integradores Asterisk
Docker para integradores AsteriskOpenDireito
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareLinaro
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security InternalsOpersys inc.
 
Securing and Managing the Oracle HTTP Server - White Paper
Securing and Managing the Oracle HTTP Server - White PaperSecuring and Managing the Oracle HTTP Server - White Paper
Securing and Managing the Oracle HTTP Server - White PaperSecureDBA
 
Firmware Extraction & Fuzzing - Jatan Raval
Firmware Extraction & Fuzzing - Jatan RavalFirmware Extraction & Fuzzing - Jatan Raval
Firmware Extraction & Fuzzing - Jatan RavalNSConclave
 
Malware analysis, threat intelligence and reverse engineering
Malware analysis, threat intelligence and reverse engineeringMalware analysis, threat intelligence and reverse engineering
Malware analysis, threat intelligence and reverse engineeringbartblaze
 
Application Whitelisting - Complementing Threat centric with Trust centric se...
Application Whitelisting - Complementing Threat centric with Trust centric se...Application Whitelisting - Complementing Threat centric with Trust centric se...
Application Whitelisting - Complementing Threat centric with Trust centric se...Osama Salah
 

Mais procurados (20)

How to Prevent RFI and LFI Attacks
How to Prevent RFI and LFI AttacksHow to Prevent RFI and LFI Attacks
How to Prevent RFI and LFI Attacks
 
LCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted FirmwareLCU13: An Introduction to ARM Trusted Firmware
LCU13: An Introduction to ARM Trusted Firmware
 
LAS16 111 - Raspberry pi3, op-tee and jtag debugging
LAS16 111 - Raspberry pi3, op-tee and jtag debuggingLAS16 111 - Raspberry pi3, op-tee and jtag debugging
LAS16 111 - Raspberry pi3, op-tee and jtag debugging
 
John the ripper & hydra password cracking tool
John the ripper & hydra password cracking toolJohn the ripper & hydra password cracking tool
John the ripper & hydra password cracking tool
 
Metasploit
MetasploitMetasploit
Metasploit
 
PowerShell for Penetration Testers
PowerShell for Penetration TestersPowerShell for Penetration Testers
PowerShell for Penetration Testers
 
0x003 - Exploiting LOLDrivers - Physical Memory Mayhem
0x003 - Exploiting LOLDrivers - Physical Memory Mayhem0x003 - Exploiting LOLDrivers - Physical Memory Mayhem
0x003 - Exploiting LOLDrivers - Physical Memory Mayhem
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRM
 
Software update for IoT: the current state of play
Software update for IoT: the current state of playSoftware update for IoT: the current state of play
Software update for IoT: the current state of play
 
Docker para integradores Asterisk
Docker para integradores AsteriskDocker para integradores Asterisk
Docker para integradores Asterisk
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
 
Micro-controllers (PIC) based Application Development
Micro-controllers (PIC) based Application DevelopmentMicro-controllers (PIC) based Application Development
Micro-controllers (PIC) based Application Development
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
 
Securing and Managing the Oracle HTTP Server - White Paper
Securing and Managing the Oracle HTTP Server - White PaperSecuring and Managing the Oracle HTTP Server - White Paper
Securing and Managing the Oracle HTTP Server - White Paper
 
Firmware Extraction & Fuzzing - Jatan Raval
Firmware Extraction & Fuzzing - Jatan RavalFirmware Extraction & Fuzzing - Jatan Raval
Firmware Extraction & Fuzzing - Jatan Raval
 
Metasploit
MetasploitMetasploit
Metasploit
 
Malware analysis, threat intelligence and reverse engineering
Malware analysis, threat intelligence and reverse engineeringMalware analysis, threat intelligence and reverse engineering
Malware analysis, threat intelligence and reverse engineering
 
Application Whitelisting - Complementing Threat centric with Trust centric se...
Application Whitelisting - Complementing Threat centric with Trust centric se...Application Whitelisting - Complementing Threat centric with Trust centric se...
Application Whitelisting - Complementing Threat centric with Trust centric se...
 
Interrupts
InterruptsInterrupts
Interrupts
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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...
 

Último

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Último (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

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