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

More Related Content

What's hot

Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
Wei Fu
 
Secure boot general
Secure boot generalSecure boot general
Secure boot general
Prabhu Swamy
 
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
CODE BLUE
 
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLReconBlack Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
Sanjiv Kawa
 
Practical Trusted Platform Module (TPM2) Programming
Practical Trusted Platform Module (TPM2) ProgrammingPractical Trusted Platform Module (TPM2) Programming
Practical Trusted Platform Module (TPM2) Programming
Brandon Arvanaghi
 
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı TespitiMitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
BGA Cyber Security
 
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
Kuniyasu Suzaki
 
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, IntelXPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
The Linux Foundation
 
Cyber security
Cyber securityCyber security
Cyber security
Aman Pradhan
 
Bug bounty
Bug bountyBug bounty
Firmware analysis 101
Firmware analysis 101Firmware analysis 101
Firmware analysis 101
veerababu penugonda(Mr-IoT)
 
Malware Detection Using Machine Learning Techniques
Malware Detection Using Machine Learning TechniquesMalware Detection Using Machine Learning Techniques
Malware Detection Using Machine Learning Techniques
ArshadRaja786
 
Verilog & Vivado Quickstart
Verilog & Vivado QuickstartVerilog & Vivado Quickstart
Verilog & Vivado Quickstart
Stewart Dulaney
 
Misra C Software Development Standard
Misra C Software Development StandardMisra C Software Development Standard
Misra C Software Development Standard
Vittorio Giovara
 
Bug Bounty for - Beginners
Bug Bounty for - BeginnersBug Bounty for - Beginners
Bug Bounty for - Beginners
Himanshu Kumar Das
 
RISC-V & SoC Architectural Exploration for AI and ML Accelerators
RISC-V & SoC Architectural Exploration for AI and ML AcceleratorsRISC-V & SoC Architectural Exploration for AI and ML Accelerators
RISC-V & SoC Architectural Exploration for AI and ML Accelerators
RISC-V International
 
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİSIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
Ertugrul Akbas
 
Automotive Hacking
Automotive Hacking Automotive Hacking
Automotive Hacking
GAURAV. H .TANDON
 
Fault Injection Attacks
Fault Injection AttacksFault Injection Attacks
Fault Injection Attacks
Ziyad Alshehri
 

What's hot (20)

Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SAN19-118
 
Secure boot general
Secure boot generalSecure boot general
Secure boot general
 
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
CODE BLUE 2014 : A security assessment study and trial of Tricore-powered aut...
 
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLReconBlack Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
Black Hat USA Arsenal 2023: Abusing Microsoft SQL Server with SQLRecon
 
Practical Trusted Platform Module (TPM2) Programming
Practical Trusted Platform Module (TPM2) ProgrammingPractical Trusted Platform Module (TPM2) Programming
Practical Trusted Platform Module (TPM2) Programming
 
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı TespitiMitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
 
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
Hardware-assisted Isolated Execution Environment to run trusted OS and applic...
 
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, IntelXPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
XPDDS17: Introduction to Intel SGX and SGX Virtualization - Kai Huang, Intel
 
Cyber security
Cyber securityCyber security
Cyber security
 
Bug bounty
Bug bountyBug bounty
Bug bounty
 
Firmware analysis 101
Firmware analysis 101Firmware analysis 101
Firmware analysis 101
 
Malware Detection Using Machine Learning Techniques
Malware Detection Using Machine Learning TechniquesMalware Detection Using Machine Learning Techniques
Malware Detection Using Machine Learning Techniques
 
Verilog & Vivado Quickstart
Verilog & Vivado QuickstartVerilog & Vivado Quickstart
Verilog & Vivado Quickstart
 
Misra C Software Development Standard
Misra C Software Development StandardMisra C Software Development Standard
Misra C Software Development Standard
 
Bug Bounty for - Beginners
Bug Bounty for - BeginnersBug Bounty for - Beginners
Bug Bounty for - Beginners
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
RISC-V & SoC Architectural Exploration for AI and ML Accelerators
RISC-V & SoC Architectural Exploration for AI and ML AcceleratorsRISC-V & SoC Architectural Exploration for AI and ML Accelerators
RISC-V & SoC Architectural Exploration for AI and ML Accelerators
 
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİSIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
SIEM KORELASYON MOTORU DEĞERLENDİRME KRİTERLERİ
 
Automotive Hacking
Automotive Hacking Automotive Hacking
Automotive Hacking
 
Fault Injection Attacks
Fault Injection AttacksFault Injection Attacks
Fault Injection Attacks
 

Similar to Bypassing Secure Boot using Fault Injection

Zen and the art of Security Testing
Zen and the art of Security TestingZen and the art of Security Testing
Zen and the art of Security Testing
TEST 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 Ciphers
Cristofaro 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 experiences
Vincenzo 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
 
OWASP
OWASPOWASP
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 developer
Steve Poole
 
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
n|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 engineering
Eric 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 Presentation
Abhay Bhargav
 
Troopers Diffray v1.1
Troopers Diffray v1.1Troopers Diffray v1.1
Troopers Diffray v1.1
pinkflawd
 
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-mumbai
vibrantuser
 
Writing ICS Vulnerability Analysis
Writing ICS Vulnerability AnalysisWriting ICS Vulnerability Analysis
Writing ICS Vulnerability Analysis
Digital Bond
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Security
sedukull
 
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
All Things Open
 
Using Analyzers to Resolve Security Problems
Using Analyzers to Resolve Security ProblemsUsing Analyzers to Resolve Security Problems
Using Analyzers to Resolve Security Problems
kiansahafi
 
Static-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptxStatic-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptx
ShivashankarHR1
 

Similar to Bypassing Secure Boot using Fault Injection (20)

Zen and the art of Security Testing
Zen and the art of Security TestingZen and the art of Security Testing
Zen and the art of Security Testing
 
Unboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
Unboxing the White-Box: Practical Attacks Against Obfuscated CiphersUnboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
Unboxing the White-Box: Practical Attacks Against Obfuscated Ciphers
 
On codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesOn codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiences
 
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
The Anatomy of Java Vulnerabilities (Devoxx UK 2017)
 
[PH-Neutral 0x7db] Exploit Next Generation®
[PH-Neutral 0x7db] Exploit Next Generation®[PH-Neutral 0x7db] Exploit Next Generation®
[PH-Neutral 0x7db] Exploit Next Generation®
 
OWASP
OWASPOWASP
OWASP
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
 
Java application security the hard way - a workshop for the serious developer
Java application security the hard way - a workshop for the serious developerJava application security the hard way - a workshop for the serious developer
Java application security the hard way - a workshop for the serious developer
 
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
 
Static-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptxStatic-Analysis-in-Industry.pptx
Static-Analysis-in-Industry.pptx
 

More from Riscure

PEW PEW PEW: Designing Secure Boot Securely
PEW PEW PEW: Designing Secure Boot SecurelyPEW PEW PEW: Designing Secure Boot Securely
PEW PEW PEW: Designing Secure Boot Securely
Riscure
 
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
Riscure
 
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
Riscure
 
Software Attacks on Hardware Wallets
Software Attacks on Hardware WalletsSoftware Attacks on Hardware Wallets
Software Attacks on Hardware Wallets
Riscure
 
Efficient Reverse Engineering of Automotive Firmware
Efficient Reverse Engineering of Automotive FirmwareEfficient Reverse Engineering of Automotive Firmware
Efficient Reverse Engineering of Automotive Firmware
Riscure
 
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
 
Riscure Introduction
Riscure IntroductionRiscure Introduction
Riscure Introduction
Riscure
 
Practical Differential Fault Attack on AES
Practical Differential Fault Attack on AESPractical Differential Fault Attack on AES
Practical Differential Fault Attack on AES
Riscure
 
Java Card Security
Java Card SecurityJava Card Security
Java Card Security
Riscure
 
How to secure electronic passports
How to secure electronic passportsHow to secure electronic passports
How to secure electronic passports
Riscure
 
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
Riscure
 
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 HCE
Riscure
 
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 Injection
Riscure
 
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
Riscure
 
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Riscure
 

More from Riscure (17)

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
 
CheapSCAte: Attacking IoT with less than $60
CheapSCAte: Attacking IoT with less than $60CheapSCAte: Attacking IoT with less than $60
CheapSCAte: Attacking IoT with less than $60
 
Riscure Introduction
Riscure IntroductionRiscure Introduction
Riscure Introduction
 
Practical Differential Fault Attack on AES
Practical Differential Fault Attack on AESPractical Differential Fault Attack on AES
Practical Differential Fault Attack on AES
 
Java Card Security
Java Card SecurityJava Card Security
Java Card Security
 
How to secure electronic passports
How to secure electronic passportsHow to secure electronic passports
How to secure electronic passports
 
How multi-fault injection breaks the security of smart cards
How multi-fault injection breaks the security of smart cardsHow multi-fault injection breaks the security of smart cards
How multi-fault injection breaks the security of smart cards
 
Why is it so hard to make secure chips?
Why is it so hard to make secure chips?Why is it so hard to make secure chips?
Why is it so hard to make secure chips?
 
How to secure HCE
How to secure HCEHow to secure HCE
How to secure HCE
 
Why are we still vulnerable to Side Channel Attacks?
Why are we still vulnerable to Side Channel Attacks?Why are we still vulnerable to Side Channel Attacks?
Why are we still vulnerable to Side Channel Attacks?
 
Controlling PC on ARM using Fault Injection
Controlling PC on ARM using Fault InjectionControlling PC on ARM using Fault Injection
Controlling PC on ARM using Fault Injection
 
Defeating RSA Multiply-Always and Message Blinding Countermeasures
Defeating RSA Multiply-Always and Message Blinding CountermeasuresDefeating RSA Multiply-Always and Message Blinding Countermeasures
Defeating RSA Multiply-Always and Message Blinding Countermeasures
 
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...Secure initialization of Trusted Execution Environments: When Secure Boot fal...
Secure initialization of Trusted Execution Environments: When Secure Boot fal...
 

Recently uploaded

WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
Data Hops
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
marufrahmanstratejm
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 

Recently uploaded (20)

WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 

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