co-processor-based behavior monitoring · co-processor-based behavior monitoring...

57
Co-processor-based Behavior Monitoring Application to the Detection of Attacks Against the System Management Mode Ronny Chevalier 1,2 Maugan Villatel 1 David Plaquin 1 Guillaume Hiet 2 SILM, November 20, 2019 (Previously presented at ACSAC’17) 1 HP Labs, United Kingdom ([email protected], [email protected], [email protected]) 2 CIDRE Team, CentraleSupélec/Inria/CNRS/IRISA, France ([email protected], [email protected])

Upload: others

Post on 24-Sep-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Co-processor-based Behavior Monitoring

Application to the Detection of Attacks Against the System Management Mode

Ronny Chevalier 1,2 Maugan Villatel 1 David Plaquin 1 Guillaume Hiet 2

SILM, November 20, 2019 (Previously presented at ACSAC’17)

1HP Labs, United Kingdom ([email protected], [email protected], [email protected])

2CIDRE Team, CentraleSupélec/Inria/CNRS/IRISA, France ([email protected], [email protected])

Page 2: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 3: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Computers rely on firmware

Where can we find firmware?

Mother boards (e.g., BIOS), hard disks, network cards,...

Here, we focus on BIOS/UEFI-compliant firmware

What is it?

• Low-level software

• Tightly linked to hardware

• Early execution

• Highly privileged runtime software

• Stored in a flash

Hardware

UEFI

Firmware

Operating

System

Applications

Privileges

More

Less

1

Page 4: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

What is the problem?

BIOSs are often written in unsafe languages (i.e., C & assembly)

Memory safety errors (e.g., use after free or buffer overflow)

BIOSs are not exempt from vulnerabilities1

Why compromise a BIOS?

• Malware can be hard to detect (stealth)

• Malware can be persistent (survives even if the HDD/SSD is changed) and costly to remove

What do we want?

• Boot time integrity

• Runtime integrity

1Kallenberg et al. 2013; Bazhaniuk et al. 2015.

2

Page 5: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

What are the currently used solutions?

Boot time

• Signed updates

• Signature verification before executing

• Measurements and reporting to a TPM chip

• Immutable hardware root of trustImmutable

Root of Trust

UEFI

Firmware

Bootloader

Operating

System

Signed

Updates

VerifyMeasure &

Report

Runtime

Isolation of critical services available while the OS is running

→ our focus is on the System Management Mode (SMM)

3

Page 6: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

What are the currently used solutions?

Boot time

• Signed updates

• Signature verification before executing

• Measurements and reporting to a TPM chip

• Immutable hardware root of trustImmutable

Root of Trust

UEFI

Firmware

Bootloader

Operating

System

Signed

Updates

VerifyMeasure &

Report

Runtime

Isolation of critical services available while the OS is running

→ our focus is on the System Management Mode (SMM)

3

Page 7: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introducing the System Management Mode (SMM)Highly privileged execution mode for x86 processors

Runtime services

BIOS update, power management, UEFI variables handling, etc.

How to enter the SMM?

• Trigger a System Management Interrupt (SMI)

• SMIs code & data are stored in a protected memory region: System Management RAM (SMRAM)

BIOS code is not exempt from vulnerabilities affecting SMM2

Why is it interesting for an attacker?

• Only mode that can write to the flash containing the BIOS

• Arbitrary code execution in SMM gives full control of the platform

2Bazhaniuk et al. 2015; Bulygin, Bazhaniuk, et al. 2017; Pujos 2016.

4

Page 8: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Our objective

Our goal is to detect attacks that modify the expected behavior of the SMM bymonitoring itsbehavior at runtime.

MonitorRuntime

Firmware

Raise alert or

Stop execution or

...

Response

Behavior

Monitoring

Such goal raises the following questions:

• How to ensure the integrity of the monitor?

• How to define a correct behavior?

• How to monitor?

5

Page 9: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 10: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Approach overview

Co-processor RAM Processor RAM

TargetMonitor

Unidirectional

FIFO

Co-processor Processor

Expected

target behaviorSMM code

How to ensure the

integrity of the monitor?

Semantic gap?How to monitor?

bridging the semantic gap

LLVM-based

Compiler

SMM source

code

BIOS source code

How to define a correct behavior?

6

Page 11: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Approach overview

Co-processor RAM Processor RAM

TargetMonitor

Unidirectional

FIFO

Co-processor Processor

Expected

target behaviorSMM code

How to ensure the

integrity of the monitor?

Semantic gap?How to monitor?

bridging the semantic gap

LLVM-based

Compiler

SMM source

code

BIOS source code

How to define a correct behavior?

6

Page 12: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Approach overview

Co-processor RAM Processor RAM

TargetMonitor

Unidirectional

FIFO

Co-processor Processor

Expected

target behaviorSMM code

How to ensure the

integrity of the monitor?

Semantic gap?How to monitor?

bridging the semantic gap

LLVM-based

Compiler

SMM source

code

BIOS source code

How to define a correct behavior?

6

Page 13: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Approach overview

Co-processor RAM Processor RAM

TargetMonitor

Unidirectional

FIFO

Co-processor Processor

Expected

target behaviorInstrumented

SMM code

How to ensure the

integrity of the monitor?

Semantic gap?How to monitor?

bridging the semantic gap

LLVM-based

Compiler

SMM source

code

BIOS source code

How to define a correct behavior?

6

Page 14: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Approach overview

Co-processor RAM Processor RAM

TargetMonitor

Unidirectional

FIFO

Co-processor Processor

Expected

target behaviorInstrumented

SMM code

How to ensure the

integrity of the monitor?

Semantic gap?How to monitor?

bridging the semantic gap

LLVM-based

Compiler

SMM source

code

BIOS source code

How to define a correct behavior?

6

Page 15: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 16: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Our use case: SMM code

• Written in unsafe languages (i.e., C & assembly)

→ Such languages are often targeted by attacks hijacking the control flow

• Tightly coupled to hardware

→ Such software modifies hardware configuration registers

Control Flow Graph (CFG)

Define the control flow that the software is expected to follow

→ Control Flow Integrity (CFI)

Invariants on CPU registers

Define rules that registers are expected to satisfy

→ CPU registers integrity

7

Page 17: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): principle

Example

void auth(int a, int b) {char buffer[512];

[...vuln...]

verification(buffer);}void verification(char *input) {

if (strcmp(input, "secret") == 0)authenticated();

elsenon_authenticated();

}

Simplified graph

authverificationNon

authenticated

Authenticated

8

Page 18: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): principle

Example

void auth(int a, int b) {char buffer[512];

[...vuln...]

verification(buffer);}void verification(char *input) {

if (strcmp(input, "secret") == 0)authenticated();

elsenon_authenticated();

}

Simplified graph

authverificationNon

authenticated

Authenticated

8

Page 19: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): principle

Example

void auth(int a, int b) {char buffer[512];

[...vuln...]

verification(buffer);}void verification(char *input) {

if (strcmp(input, "secret") == 0)authenticated();

elsenon_authenticated();

}

Simplified graph

authverificationNon

authenticated

Authenticated

Goal: constrain the execution path to follow a control-flow graph (CFG)

8

Page 20: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

c = s->foo(31);[...]

}

9

Page 21: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

c = s->foo(31);[...]

}

9

Page 22: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

c = s->foo(31);[...]

}

9

Page 23: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

c = s->foo(31);[...]

}

TargetRuntimeCompile time

MonitorRuntimeCompile time

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageInstrumented

SMM code

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageCall Site ID Type

1561 i8(i32)

4852 i32(i8)... ...

Function Address Type

0x0fffb804 i8(i32)

0x0befca04 i32()... ...

Compilation

SMM source

code

valid?

9

Page 24: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

c = s->foo(31); /* Call Site ID = 1561 */[...]

}

TargetRuntimeCompile time

MonitorRuntimeCompile time

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageInstrumented

SMM code

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageCall Site ID Type

1561 i8(i32)

4852 i32(i8)... ...

Function Address Type

0x0fffb804 i8(i32)

0x0befca04 i32()... ...

Compilation

SMM source

code

valid?

9

Page 25: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

[SendMessage(1561, s->foo)]c = s->foo(31); /* Call Site ID = 1561 */[...]

}

TargetRuntimeCompile time

MonitorRuntimeCompile time

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageInstrumented

SMM code

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageCall Site ID Type

1561 i8(i32)

4852 i32(i8)... ...

Function Address Type

0x0fffb804 i8(i32)

0x0befca04 i32()... ...

Compilation

SMM source

code

valid?

9

Page 26: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): type-based verification

We focus on indirect branches integrity

Type-based verification

Ensures the integrity of indirect calls

typedef struct SomeStruct {[...]char (*foo)(int);

} SomeStruct;int bar(SomeStruct *s) {char c;[...]

[SendMessage(1561, s->foo)]c = s->foo(31); /* Call Site ID = 1561 */[...]

}

TargetRuntimeCompile time

MonitorRuntimeCompile time

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageInstrumented

SMM code

Message

Call Site ID 1561

Target Address 0x0fffb804

MessageCall Site ID Type

1561 i8(i32)

4852 i32(i8)... ...

Function Address Type

0x0fffb804 i8(i32)

0x0befca04 i32()... ...

Compilation

SMM source

code

valid?

9

Page 27: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?

Control Flow Integrity (CFI): shadow call stack

Shadow call stack

Ensures integrity of the return address on the stack

TargetRuntimeCompile time

MonitorRuntime

Message

Return Address 0x0f8a520cMessageInstrumented

SMM code

Message

Return Address 0x0f8a520cMessage...

0x0f8522d00x0f8a520c

Shadow call stack

valid?

Compilation

SMM source

code

pop

10

Page 28: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to define a correct behavior?CPU registers integrity

SMM code is tightly coupled to hardware

• Generic detection methods (e.g., CFI) are not aware of hardware specificities

• Adhoc detection methods are needed

Some interesting registers for an attacker

• SMBASE: Defines the SMM entry point

• CR3: Physical address of the page directory

→ Their value is stored in memory and is not supposed to change at runtime

How to protect such registers?

• Send the expected values at boot time

• Send messages at runtime containing these values to detect any discrepancy

11

Page 29: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 30: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to monitor?Communication channel constraints

Security constraints

• Message integrity

• Chronological order

• Exclusive access

Performance constraints

• Acceptable latency of an SMI as defined by Intel BIOS Test Suite: 150 µs

• More than 150 µs per SMI handler leads to degradation of performance or user experience

12

Page 31: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

How to monitor?Communication channel design

Additional hardware component

• Chronological order

→ FIFO

• Message integrity

→ Restricted FIFO

• Exclusive access

→ Check if CPU is in SMM (SMIACT# signal)

• Performance

→ Use a low latency interconnecttarget

Restricted

FIFO

monitor

Co-processor

Processor

pushIn SMM?

(SMIACT#)

pop

13

Page 32: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

In summary

We isolate the monitor

• Dedicated co-processor

• Private memory

We bridge the semantic gap

• Communication channel

• Instrumentation of the target code to send

messages

Co-processor RAM Processor RAM

TargetMonitor

Restricted

FIFO

Co-processor Processor

Expected

target behaviorInstrumented

code

push

In SMM?

(SMIACT#)

pop

We allow the definition of multiple correct behaviors

• Flexible, multiple possibilities

• CFI

• CPU registers integrity

14

Page 33: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 34: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Our experimental setup

Our prototype is implemented in a simulated and emulated environment

SMM code implementations used

• EDK2: foundation of many BIOSes (Apple, HP, Intel,...)

→ UEFI Variables SMI handlers

• coreboot: perform hardware initialization (used on some Chromebooks)

→ Hardware-specific SMI handlers

We want to emulate SMM environment and features

QEMU emulator for security evaluation

We want to simulate accurately the performance impact

gem5 simulator for performance evaluation

15

Page 35: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Security evaluation

We simulated attacks & vulnerabilities similar to those found in real-world BIOSes

Vulnerability Attack Target Security Advisories Detected

Buffer overflow Return address CVE-2013-3582 Yes

Arbitrary write Function pointer CVE-2016-8103 Yes

Arbitrary write SMBASE LEN-4710 Yes

Insecure call Function pointer LEN-8324 Yes

16

Page 36: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Performance evaluationRunning time overhead for SMI handlers

EDK2

SetVariable GetVariable QueryVariableInfo

GetNextVariableName

0

10

20

30

40

50

Tim

e(m

icro

seco

nds) Original

Communication overheadInstrumentation overhead

coreboot

i82801gxAPMC

i82801gxTCO

i82801gxPM1

AMD AgesaAPMC

AMD AgesaGPE

0.0

0.5

1.0

1.5

2.0

2.5

3.0

• Under the 150 microseconds limit defined by Intel

• Most of the communication overhead is due to the shadow call stack

17

Page 37: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 38: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Related work

Snapshot-based approaches

7 Transient attacks

Copilot [Petroni et al. 2004]

DeepWatch [Bulygin and Samyde 2008]

Event-driven approaches

3 Detect transient attacks

Ki-Mon [Lee et al. 2013]

7 Semantic gap

MGuard [Liu et al. 2013]

7 Semantic gap

18

Page 39: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Introduction

SMM Behavior Monitoring

Approach overview

How to define a correct behavior?

How to monitor?

Evaluation

Related Work

Conclusion

Page 40: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

What did we do? What did we learn?

Our contributions

• Event-based approach to monitor firmware

• Prototype implementing our approach

• Evaluation of our prototype

Our approach

Co-processor RAM Processor RAM

TargetMonitor

Restricted

FIFO

Co-processor Processor

Expected

target behaviorInstrumented

code

push

In SMM?

(SMIACT#)

pop

Results

• Detection of state-of-the-art attacks

• Acceptable performance (< 150 µs Intel

threshold)

Future work

• Non-control data attacks

• Adaptation to other firmware

19

Page 41: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Thanks for your attention!

19

Page 42: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Questions?

Our contributions

• Event-based approach to monitor firmware

• Prototype implementing our approach

• Evaluation of our prototype

Our approach

Co-processor RAM Processor RAM

TargetMonitor

Restricted

FIFO

Co-processor Processor

Expected

target behaviorInstrumented

code

push

In SMM?

(SMIACT#)

pop

Results

• Detection of state-of-the-art attacks

• Acceptable performance (< 150 µs Intel

threshold)

Future work

• Non-control data attacks

• Adaptation to other firmware

20

Page 43: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Backup

20

Page 44: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Security evaluationNumber and size of equivalence classes for the type-based verification

Our analysis with EDK II gave:

• 158 equivalence classes of size 1,

• 24 of size 2,

• 42 of size 3,

• 2 of size 5,

• 1 of size 9,

• and 1 of size 13.

21

Page 45: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Performance evaluationCo-processor time to process messages

SetVariable

GetVariableQueryVariableInfo

GNVN Inteli82801gx

AMDAgesa

0

50

100

150

200

Tim

e(m

icro

seco

nds)

230

152131 137

18 7

22

Page 46: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Performance evaluationNumber of packets sent due to the instrumentation

Number of packets sent

SMI Handler

Shadow

stack

(SS)

Indirect

call

(IC)

SMBASE

& CR3

(SC)

Total

number of

packets

EDK IIVariableSmm

SetVariable 384 4 4 392

GetVariable 240 4 4 248

QueryVariableInfo 299 4 4 208

GetNextVariableName 212 4 4 220

corebootIntel i82801gx

APMC/TCO/PM1 8 2 4 14

AMD Agesa Hudson

APMC/GPE 4 0 4 8

Table 1: Number of packets sent during one SMI handler (Number of packets per message type: SS=2, IC=2, SC=4)

23

Page 47: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Threat model & assumptions

The target sends messages to describe its own behavior

Key point

The attacker must alter the control flow (i.e., behavior) in order to forge messages

→ The attacker cannot send messages in lieu of the targetwithout first being detected

What are the attacker’s capabilities before the attack?

Complete control over the OS (e.g., can trigger as many SMI as necessary)

What kind of attack?

Runtime attack by triggering memory corruption issues in an SMI handler (e.g., ROP)

24

Page 48: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Related workSnapshot-based approach

Copilot [Petroni et al. 2004]

Main CPU Co-pilotPCI CardProcessor

System Bus

Main

Memory

DMA

3 Flexible 7 Cannot monitor SMM code

7 Semantic gap 7 Transient attacks

7 Additional hardware

DeepWatch [Bulygin and Samyde 2008]

Main CPUProcessor Chipset

DeepWatch

Main

Memory

DMA

3 Flexible3 Can monitor SMM code

7 Semantic gap 7 Transient attacks

3 No additional hardware

25

Page 49: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Related workEvent-driven approach

Ki-Mon [Lee et al. 2013]

Main CPU Ki-MonCo-processorProcessor

System Bus

Main

Memory

DMA Monitoring

3 Flexible3 Could monitor SMM code

7 Semantic gap3 Detect transient attacks

7 Additional hardware

MGuard [Liu et al. 2013]

FB-DIMM (Memory Module)

Main CPUProcessor

Memory Controller

AMB

MGUARDDRAM

DRAM

DRAM

DRAM

DRAM

DRAM

3 Flexible3 Can monitor SMM code

7 Semantic gap3 Detect transient attacks

7 Requires FB DIMM Memory

26

Page 50: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Related workHardware-based CFI approach

Incorporate CFI policy directly in processors [Davi et al. 2015]

Future CFI technology in Intel processors? [Intel Corporation 2016]

Advantages

3 Can monitor SMM code

3 Efficient

3 Semantic gap

3 Detect transient attacks

Limitations

7 Precision loss

7 Not flexible (i.e., one detection method)

7 Requires to modify the processor

27

Page 51: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Communication channel

Mailboxes

High latency

Need to design an intermediate hardware component

Restricted FIFO to store temporarily messages

PCIe

• Designed to maximize I/O throughput

• Not suited to send many small packets (coarse-grained interaction)

CPU Interconnects (QPI, HyperTransport)

• Designed to minimize latency

• Suited to exchange small packets (fine-grained interaction)

28

Page 52: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

SMBASE integrity

Save State Area

The processor stores its context at SMI entry and restores it at SMI exit

SMBASE

Location of the SMRAM in RAM, stored in the save state area

What if an attacker overwrites the SMBASE?

• Need to exit the SMI and retrigger a SMI

• The new SMBASE is used

• Arbitrary code execution in SMM

Solution

• At boot time: Send the expected value to the monitor

• At runtime: Send the current value at each SMI exit

29

Page 53: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Performance evaluationFirmware size

Size of firmware code is limited by the amount of flash (e.g., 8MB or 16MB)

EDK2

• +17 408 bytes in firmware code

• +0.6% increase in size for the compressed firmware

coreboot

• Could not compile the whole firmware with our LLVM toolchain (clang not supported by

coreboot)

• AMD Agesa Hudson SMI handlers: +568 bytes

• Intel i82801gx SMI handlers: +3448 bytes

30

Page 54: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

Code integrity at runtimeMultiple options

Page tables

Recent BIOSes can enable write protection for SMM code pages3

HP Sure Start Gen34

Detects attempts to modify SMM code

Notifies and takes actions per a predefined policy

3https://lists.01.org/pipermail/edk2-devel/2016-November/004185.html4http://www8.hp.com/h20195/v2/GetPDF.aspx/4AA6-9339ENW.pdf

31

Page 55: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

References i

Bazhaniuk, Oleksandr et al. (2015). “A new class of vulnerabilities in SMI handlers”. CanSecWest,

Vancouver, Canada.

Bulygin, Yuriy, Oleksandr Bazhaniuk, et al. (2017). “BARing the System: New vulnerabilities in

Coreboot & UEFI based systems”. REcon Brussels.

Bulygin, Yuriy and David Samyde (2008). “Chipset based approach to detect virtualization malware”.

Black Hat USA.

Davi, Lucas et al. (2015). “Hafix: Hardware-assisted flow integrity extension”. In: Proceedings of the52nd Annual Design Automation Conference. ACM, p. 74.

Intel Corporation (June 2016). Control-flow Enforcement Technology Preview.Kallenberg, Corey et al. (2013). “Defeating Signed BIOS Enforcement”. EkoParty, Buenos Aires.

Lee, Hojoon et al. (2013). “KI-Mon: A Hardware-assisted Event-triggered Monitoring Platform for

Mutable Kernel Object”. In: Proceedings of the 22th USENIX Security Symposium, pp. 511–526.

Page 56: Co-processor-based Behavior Monitoring · Co-processor-based Behavior Monitoring ApplicationtotheDetectionofAttacksAgainsttheSystemManagementMode Ronny Chevalier 1,2 MauganVillatel

References ii

Liu, Ziyi et al. (2013). “CPU Transparent Protection of OS Kernel and Hypervisor Integrity with

Programmable DRAM”. In: Proceedings of the 40th Annual International Symposium on ComputerArchitecture. ISCA ’13. Tel-Aviv, Israel: ACM, pp. 392–403.

Petroni Jr., Nick L. et al. (Aug. 2004). “Copilot - a Coprocessor-based Kernel Runtime Integrity

Monitor”. In: Proceedings of the 13th USENIX Security Symposium, pp. 179–194.Pujos, Bruno (May 2016). SMM unchecked pointer vulnerability. URL:http://esec-lab.sogeti.com/posts/2016/05/30/smm-unchecked-pointer-vulnerability.html.