CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al....

67
CopyCat: Controlled Instruction-Level Attacks on Enclaves Daniel Moghimi Jo Van Bulck Nadia Heninger Frank Piessens Berk Sunar Intel Labs – Sept. 10 2020

Transcript of CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al....

Page 1: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat: Controlled Instruction-Level

Attacks on Enclaves • Daniel Moghimi

• Jo Van Bulck

• Nadia Heninger

• Frank Piessens

• Berk Sunar

Intel Labs –

Sept. 10 2020

Page 2: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

OS/Hypervisor Security Model

2

Hardware

Hypervisor

OS

App App App

Traditional Security Model

Trust

ed

Page 3: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Trusted Execution Environment (TEE) – Intel SGX

• Intel Software Guard eXtensions (SGX)

3

Hardware

Hypervisor

OS

App App App

Traditional Security Model

Trust

ed

Hardware

Hypervisor

OS

App App App

Traditional Security Model

Page 4: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Trusted Execution Environment (TEE) – Intel SGX

• Intel Software Guard eXtensions (SGX)

• Enclave: Hardware protected user-level software module• Mapped by the Operating System

• Loaded by the user program

• Authenticated and Encrypted by CPU

4

Traditional Security Model

Hardware

Hypervisor

OS

App App App

Page 5: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Trusted Execution Environment (TEE) – Intel SGX

• Intel Software Guard eXtensions (SGX)

• Enclave: Hardware protected user-level software module• Mapped by the Operating System

• Loaded by the user program

• Authenticated and Encrypted by CPU

• Protects against systemlevel adversary

New Attacker Model:

Attacker gets full control over OS

5

Hardware

Hypervisor

OS

App App App

Traditional Security Model

blocked

blocked

Hardware

App

Page 6: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Intel SGX Attack Taxonomy

6

• Intel’s Responsibility• Microcode Patches / Hardware mitigation

• TCB Recovery • Old Keys are Revoked

• Remote attestation succeeds only with mitigation.

• Hyperthreading is out• Remote Attestation Warning

SGX Attacks

Intel’s

Responsibility

Foreshadow [1]

Plundervolt [2]

[1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order execution." USENIX Security 2018.[2] Murdock et al. "Plundervolt: Software-based fault injection attacks against Intel SGX." IEEE S&P 2020.

Page 7: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Intel SGX Attack Taxonomy

7

• Intel’s Responsibility• Microcode Patches / Hardware mitigation

• TCB Recovery • Old Keys are Revoked

• Remote attestation succeeds only with mitigation.

• Hyperthreading is out• Remote Attestation Warning

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Foreshadow [1]

Plundervolt [2]

[1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order execution." USENIX Security 2018.[2] Murdock et al. "Plundervolt: Software-based fault injection attacks against Intel SGX." IEEE S&P 2020.

Page 8: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Intel SGX Attack Taxonomy

8

• Intel’s Responsibility• Microcode Patches / Hardware mitigation

• TCB Recovery • Old Keys are Revoked

• Remote attestation succeeds only with mitigation.

• Hyperthreading is out• Remote Attestation Warning

• µarch Side Channel• Constant-time Coding

• Flushing and Isolating buffers

• Probabilistic

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Foreshadow [1]

Plundervolt [2]

µarch Side

Channel

Cache [3][4][5]

Branch Predictors

[6][7]

Interrupt Latency [8]

[1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order execution." USENIX Security 2018.[2] Murdock et al. "Plundervolt: Software-based fault injection attacks against Intel SGX." IEEE S&P 2020.

[3] Moghimi et al. "Cachezoom: How SGX amplifies the power of cache attacks." CHES 2017.

[4] Brasser et al. "Software grand exposure:{SGX} cache attacks are practical." USENIX WOOT 2017.[5] Schwarz et al. "Malware guard extension: Using SGX to conceal cache attacks." DIMVA 2017.

[6] Evtyushkin, Dmitry, et al. "Branchscope: A new side-channel attack on directional branch predictor." ACM SIGPLAN 2018.[7] Lee, Sangho, et al. "Inferring fine-grained control flow inside {SGX} enclaves with branch shadowing." USENIX Security 2017.

[8] Van Bulck et al. "Nemesis: Studying microarchitectural timing leaks in rudimentary CPU interrupt logic." ACM CCS 2018.

Page 9: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Intel SGX Attack Taxonomy

9

• Intel’s Responsibility• Microcode Patches / Hardware mitigation

• TCB Recovery • Old Keys are Revoked

• Remote attestation succeeds only with mitigation.

• Hyperthreading is out• Remote Attestation Warning

• µarch Side Channel• Constant-time Coding

• Flushing and Isolating buffers

• Probabilistic

• Deterministic Attacks• Page Fault, A/D Bit, etc. (4kB Granularity)

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Foreshadow [1]

Plundervolt [2]

Deterministic

– Ctrl Channelµarch Side

Channel

Cache [3][4][5]

Branch Predictors

[6][7]

Interrupt Latency [8]

Page Fault [9]

A/D Bit [10]

[1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order execution." USENIX Security 2018.[2] Murdock et al. "Plundervolt: Software-based fault injection attacks against Intel SGX." IEEE S&P 2020.

[3] Moghimi et al. "Cachezoom: How SGX amplifies the power of cache attacks." CHES 2017.

[4] Brasser et al. "Software grand exposure:{SGX} cache attacks are practical." USENIX WOOT 2017.[5] Schwarz et al. "Malware guard extension: Using SGX to conceal cache attacks." DIMVA 2017.

[6] Evtyushkin, Dmitry, et al. "Branchscope: A new side-channel attack on directional branch predictor." ACM SIGPLAN 2018.[7] Lee, Sangho, et al. "Inferring fine-grained control flow inside {SGX} enclaves with branch shadowing." USENIX Security 2017.

[8] Van Bulck et al. "Nemesis: Studying microarchitectural timing leaks in rudimentary CPU interrupt logic." ACM CCS 2018.

[9] Xu et al. "Controlled-channel attacks: Deterministic side channels for untrusted operating systems." IEEE S&P 2015.[10] Wang, Wenhao, et al. "Leaky cauldron on the dark land: Understanding memory side-channel hazards in SGX." ACM CCS 2017.

Page 10: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

10

Page 11: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

11

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

TimeEnclave

Execution

Thread

Starts

Page 12: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

12

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

Time𝑡1 𝑡2

IRQ

Range

Page 13: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

13

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

Time𝑡1 𝑡2

IRQ

Range

3

4

Page 14: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

14

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

0

1

Page 15: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

15

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

0

Page 16: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

16

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

Page 17: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

17

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

1

Page 18: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

18

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

0

1

Page 19: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

19

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

0

1

Page 20: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

20

NOP ADD XOR MUL DIV ADD MUL NOP NOP

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

Time𝑡1 𝑡2

IRQ

Range

0

1

Page 21: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

21

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

I got 15 IRQs.

How many

zeros?

Page 22: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

22

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

• Filtering Zeros out: Clear the A bit before, Check the A bit after

I got 15 IRQs.

How many

zeros?

DTLB

PR

W

U

SA …

Physical Page Number

……

PR

W

U

S A …Physical Page

Number……

PR

W

U

SA …

Physical Page Number

……

0x000401

Code Page Virtual Address

PMHPage

Walk

The A Bit is

only set when

an instruction

is retired

Page 23: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

23

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

• Filtering Zeros out: Clear the A bit before, Check the A bit after

• Deterministic Instruction Counting

Page 24: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

24

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

• Filtering Zeros out: Clear the A bit before, Check the A bit after

• Deterministic Instruction Counting

• Counting from start to end is not useful. • A Secondary oracle

• Page table attack as a deterministic secondary oracle

CALL ADD XOR MUL PUSH ADD MUL MOV NOP

Time

Target Code

Page

Page 25: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

25

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

• Filtering Zeros out: Clear the A bit before, Check the A bit after

• Deterministic Instruction Counting

• Counting from start to end is not useful. • A Secondary oracle

• Page table attack as a deterministic secondary oracle

CALL ADD XOR MUL PUSH ADD MUL MOV NOP

Time

Target Code

Page

Stack Page

4 Steps

Page 26: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

26

• Malicious OS controls the interrupt handler

• A threshold to execute 1 or 0 instructions

• Filtering Zeros out: Clear the A bit before, Check the A bit after

• Deterministic Instruction Counting

• Counting from start to end is not useful. • A Secondary oracle

• Page table attack as a deterministic secondary oracle

CALL ADD XOR MUL PUSH ADD MUL MOV NOP

Time

Target Code

Page

Stack Page

Data Page

4 Steps 3 Steps

Page 27: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

27

Page A

Page B

Page C

Page D

Traditional

Page-table

Attacks

• Previous Controlled Channel attacks leak Page Access Patterns

Page 28: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat Attack

28

Page A

Page B

Page C

Page D

Traditional

Page-table

Attacks

Page A

Page B

Page C

Page D

CopyCat

Attack

Additional Data

4

8

6

4

• Previous Controlled Channel attacks leak Page Access Patterns

• CopyCat additionally leaks number of instructions per page

Page 29: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Leaking Branches

29

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

test %eax, %eaxje labelmov %edx, %esilabel:call addmov %eax, -0xc(%rbp)

Compile

Stack S

Code P1

Code P2

Stack S

Code P1

Code P2

Page 30: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Leaking Branches

30

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

Page 31: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Leaking Branches

31

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

test %eax, %eaxje labelmov %edx, %esilabel:call addmov %eax, -0xc(%rbp)

Compile

Stack S

Code P1

Code P2

Stack S

Code P1

Code P2

Page 32: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Leaking Branches

32

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

test %eax, %eaxje labelmov %edx, %esilabel:call addmov %eax, -0xc(%rbp)

Compile

Stack S

Code P1

Code P2

Stack S

Code P1

Code P2

Page 33: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Leaking Branches

33

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

test %eax, %eaxje labelmov %edx, %esilabel:call addmov %eax, -0xc(%rbp)

Compile

Stack S

Code P1

Code P2

Stack S

Code P1

Code P2

Page 34: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Data

Code

Data

Code

Data

Code

CopyCat – Leaking Branches

34

if(c == 0) {r = add(r, d);

}else {r = add(r, s);

}

C Code

test %eax, %eaxje labelmov %edx, %esilabel:call addmov %eax, -0xc(%rbp)

Compile

Stack S

Code P1

Code P2

Stack S

Code P1

Code P2

switch (c){case 0:r = 0xbeef;break;

case 1:r = 0xcafe;break;

default:r = 0;

}

C Code

Page 35: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

35

Page 36: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Binary Extended Euclidean Algorithm (BEEA)

36

• Previous attacks only leak some of the branches w/ some noise

Page 37: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Binary Extended Euclidean Algorithm

37

• Previous attacks only leak some of the branches w/ some noise

• CopyCat synchronously leaks all the branches wo/ any noise

Page 38: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL

• Translate instruction Counts to Basic Block Transitions

38

Page 39: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL

• Translate instruction Counts to Basic Block Transitions

39

Page 40: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL

• Translate instruction Counts to Basic Block Transitions

40

Page 41: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

41

Page 42: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N

42

Page 43: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N

• Branch and prune Algorithm with the help of the recovered trace

43

p = . . . X

q = . . . X

p = . . . 0

q = . . . 0

p = . . . 0

q = . . . 1

p = . . . 1

q = . . . 0

p = . . . 1

q = . . . 1

Page 44: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N, and N is public

• Branch and prune Algorithm with the help of the recovered trace

44

p = . . . X

q = . . . X

p = . . X 0

q = . . X 0

p = . . . 0

q = . . . 1

p = . . . 1

q = . . . 0

p = . . X 1

q = . . X 1N = 1 1 1 0

Page 45: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N, and N is public

• Branch and prune Algorithm with the help of the recovered trace

45

p = . . . X

q = . . . X

p = . . X 0

q = . . X 0

p = . . . 0

q = . . . 1

p = . . . 1

q = . . . 0

p = . . X 1

q = . . X 1N = 1 1 1 0

p = . . 0 0

q = . . 1 0

p = . . 1 0

q = . . 0 0

p = . . 0 0

q = . . 1 0

p = . . 1 1

q = . . 0 1

Page 46: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N, and N is public

• Branch and prune Algorithm with the help of the recovered trace

46

N = 1 1 1 0

p = . . . X

q = . . . X

p = . . X 0

q = . . X 0

p = . . X 1

q = . . X 1

p = . X 0 0

q = . X 1 0

p = . X 1 0

q = . X 0 0

p = . X 0 0

q = . X 1 0

p = . X 1 1

q = . X 0 1

p = . 0 1 1

q = . 1 0 1

p = . 1 1 1

q = . 0 0 1

p = . 0 0 0

q = . 1 1 0

p = . 1 0 0

q = . 0 1 0

p = . 0 1 0

q = . 1 0 0

p = . 1 1 0

q = . 0 0 0

p = . 0 0 0

q = . 1 1 0

p = . 1 0 0

q = . 0 1 0

Page 47: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N, and N is public

• Branch and prune Algorithm with the help of the recovered trace

47

N = 1 1 1 0

p = . . . X

q = . . . X

p = . . X 0

q = . . X 0

p = . . X 1

q = . . X 1

p = . X 0 0

q = . X 1 0

p = . X 1 0

q = . X 0 0

p = . 0 1 0

q = . 1 0 0

p = . 1 1 0

q = . 0 0 0

Page 48: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL - Cryptanalysis

• Single-trace Attack during DSA signing: 𝑘𝑖𝑛𝑣 = 𝑘−1 𝑚𝑜𝑑 𝑛• Iterative over the entire recovered trace with 𝑛 as input → 𝑘𝑖𝑛𝑣• Plug 𝑘𝑖𝑛𝑣 in 𝑠1 = 𝑘1

−1 ℎ − 𝑟1. 𝑥 𝑚𝑜𝑑 𝑛 → get private key 𝑥

• Single-trace Attack during RSA Key Generation: 𝑞𝑖𝑛𝑣 = 𝑞−1 𝑚𝑜𝑑 𝑝• We know that p.q = N, and N is public

• Branch and prune Algorithm with the help of the recovered trace

• Single-trace Attack during RSA Key Generation: 𝑑 = 𝑒−1 𝑚𝑜𝑑 𝜆 𝑁

• Similar attack but instead use 𝜆 𝑁 =𝑝−1 𝑞−1

2𝑖

• Only 81% of the keys have the above property

• It works even on a hardcoded and big value for 𝑒, i.e. 𝑒 ≠ 65537

48

Page 49: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat on WolfSSL – Cryptanalysis Results

• Executed each attack 100 times.

• DSA 𝑘−1 𝑚𝑜𝑑 𝑛• Average 22,000 IRQs

• 75 ms to iterate over an average of 6,320 steps

• RSA 𝑞−1 𝑚𝑜𝑑 𝑝• Average 106490 IRQs

• 365 ms to iterate over an average of 39,400 steps

• RSA 𝑒−1 𝑚𝑜𝑑 𝜆 𝑁• 𝑒−1 𝑚𝑜𝑑 𝜆 𝑁• Average 230,050 IRQs

• 800ms to iterate over an average of 81,090 steps

• Experimental traces always match the leakage model in all experiments → Successful single-trace key recovery

49

Page 50: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat – Bypassing ECDSA Timing Countermeasure

50

Page 51: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

How about other Crypto libraries?

• Libgcrypt uses a variant of BEEA• Single trace attack on DSA, Elgamal, ECDSA, RSA Key generation

• OpenSSL uses BEEA for computing GCD• Single trace attack on RSA Key generation when computing gcd 𝑞 − 1, 𝑝 − 1

• There is still lots of other cases of micro leakages due to usage of branches, e.g. Intel IPP Crypto lehmer’s GCD with optimizations

51

Page 52: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Responsible Disclosure

• WolfSSL fixed the issues in 4.3.0 and 4.4.0 • Blinding for 𝑘−1 𝑚𝑜𝑑 𝑛 and 𝑒−1 𝑚𝑜𝑑 𝜆 𝑁

• Alternate formulation for 𝑞−1 𝑚𝑜𝑑 𝑝: 𝑞𝑝−2 𝑚𝑜𝑑 𝑝

• Using a constant-time (branchless) modular inverse [11]

• Libgcrypt fixed the issues in 1.8.6• Using a constant-time (branchless) modular inverse [11]

• OpenSSL fixed the issue in 1.1.1e • Using a constant-time (branchless) GCD algorithm [11]

52

[11] Bernstein, Daniel J., and Bo-Yin Yang. "Fast constant-time gcd computation and modular inversion." CHES 2019.

Page 53: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Interrupt Driven Attacks and Single Stepping

• Amplifying Transient Execution Attacks• Foreshadow, ZombieLoad, LVI, CrossTalk

• Amplifying Microarchitectural Side Channels• CacheZoom, BranchScope, Branch Shadowing,

Bluethunder, etc.

• Interrupt Latency as a Side Channel• Nemesis, Frontal Attack

53

Page 54: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Comparison to other Attacks

54

Page 55: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Comparison to other Attacks

• Some do not work when hyper-threadnig is disabled (Strong TCB of Intel SGX)

55

Page 56: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Comparison to other Attacks

• Some do not work when hyper-threadnig is disabled (Strong TCB of Intel SGX)

• Some can be mitigated by flushing/isolating microarchitectural buffers.

56

Page 57: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Comparison to other Attacks

• Some do not work when hyper-threadnig is disabled (Strong TCB of Intel SGX)

• Some can be mitigated by flushing/isolating microarchitectural buffers.

• Some only apply to legacy enclave (32-bit)

57

Page 58: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Comparison to other Attacks

• Some do not work when hyper-threadnig is disabled (Strong TCB of Intel SGX)

• Some can be mitigated by flushing/isolating microarchitectural buffers.

• Some only apply to legacy enclave (32-bit)

• Some are limited to be applied synchronously.

58

Page 59: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

CopyCat and Macro-fusion

• Fused instructions are counted as one.

• Confirm/RE of the behavior of macro-fusion on Intel CPUs

• Macro-fusion is dependent on the program layout → deterministic• The offset of a cmp+branch within a cache line

• True when hyperthreading is disabled (Intel SGX TCB)

59

https://en.wikichip.org/wiki/macro-operation_fusion

Page 60: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Conclusion

• Instruction Level Granularity• Imbalance number of instructions

• Leak the outcome of branches

60

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Deterministic

– Ctrl Channelµarch Side

Channel

This work

Page 61: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Conclusion

• Instruction Level Granularity• Imbalance number of instructions

• Leak the outcome of branches

• Fully Deterministic and reliable• Millions of instructions tested

• Attacks match the exact leakage model

61

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Deterministic

– Ctrl Channelµarch Side

Channel

This work

Page 62: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Conclusion

• Instruction Level Granularity• Imbalance number of instructions

• Leak the outcome of branches

• Fully Deterministic and reliable• Millions of instructions tested

• Attacks match the exact leakage model of branches

• Easy to scale and replicate• No reverse engineering of branches and

microarchitectural components

• Tracking all the branches synchronously

62

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Deterministic

– Ctrl Channelµarch Side

Channel

This work

Page 63: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Conclusion

• Instruction Level Granularity• Imbalance number of instructions

• Leak the outcome of branches

• Fully Deterministic and reliable• Millions of instructions tested

• Attacks match the exact leakage model of branches

• Easy to scale and replicate• No reverse engineering of branches and

microarchitectural components

• Tracking all the branches synchronously

• Branchless programming is hard!

63

SGX Attacks

Intel’s

Responsibility

Software Dev

Responsibility

Deterministic

– Ctrl Channelµarch Side

Channel

This work

Page 64: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Future Directions – Other TEE Models

• Virtual Machine TEE• AMD SEV• Intel TDX

• What are other ways to interrupt a TEE in the above models?

• What is the impact? • Guest OSS

• Cryptographic Services• Other Applications

• …

64

Page 65: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Future Directions – Non-cryptographic Application of Enclaves

• Data-dependent secret-processing applications• Confidential Deep Learning (

• Trusted Database (EnclaveDB)

• Automated Leakage Analysis and Exploit Generation• Fuzzing and Taint Analysis

• Dynamic Analysis

65

Page 66: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Future Directions – Mitigation

• Compiler-based Solutions• Balancing secret-dependent branches with dummy instructions

• System-level Mitigation• Self-paging Enclave (Autarky)

66

Page 67: CopyCat: Controlled Instruction-Level Attacks on Enclaves · 2021. 2. 26. · [1] Van Bulck et al. "Foreshadow: Extracting the keys to the intel SGX kingdom with transient out-of-order

Questions?!

67

https://github.com/j

ovanbulck/sgx-step