SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus...

21
Bug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA https://samate.nist.gov/SATE.html

Transcript of SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus...

Page 1: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Bug Injection in SATE VI

Aurelien DelaitreLead, SATE VI Classic TrackPrometheus Computing LLC

SATE VI Workshop - September 19, 2019 - MITRE, McLean VA

https://samate.nist.gov/SATE.html

Page 2: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Why Bug Injection?

Relevance

GroundTruth

StatisticalSignificance

2

Page 3: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Why Bug Injection?

Relevance

GroundTruth

StatisticalSignificance

ProductionSoftware

Common Vulnerabilities and Exposures (CVE)

SyntheticTest Suites

3

Page 4: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Why Bug Injection?

Relevance

GroundTruth

StatisticalSignificance

BugInjection

4

Page 5: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Ways to “Get” Bugs

● Bug Injectors● Manual & Semi-Automated Injection● Specifically Developed Test Suites● Existing Bugs

○ Discovered○ Undiscovered

5

Page 6: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Bug Types in SATE VI

C: Undefined Behavior

● Pointers● Buffers● Initialization

Java: Code Injection

● Cross-Site Scripting (XSS)● SQL Injection

▶ High-Impact▶ Easy to Prove

6

Page 7: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Proof of Vulnerability (PoV)

Why?

● Proves Bug Matters● Retrieve Bug Trace

How?

● Fuzzing● Bug Tracker● Manual

7

Page 8: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Bug Traces

● Based on PoVs○ C: GDB / Valgrind / ASAN○ Java: Flow

● Manual Analysis○ Doc Review○ Code Review

8

Page 9: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

What Went Wrong?

9

Page 10: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Cheap but Hard Bugs

10

packet-arp.c

▶ Almost Never Found by Tools

Page 11: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Asymmetrical Bug/Fix Pairs

11

SimplePageBean.java

Buggy

Fixed

Page 12: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Buggy Bugs

▶ Implementation-dependent▶ Unknown Sink

▶ Tainted Data Questionable▶ Unintended Bug Type

fts3_write.c

global.c

12

Page 13: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

fts3_write.c

Buggy Fixes

▶ Tainted Data Questionable▶ Condition Always False

global.c

13

Page 14: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

pragma.c

Buggy Bugs

▶ Tainted Data Questionable▶ Condition Always True

global.c

14

Page 15: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

pragma.c

Buggy Fixes

▶ Tainted Data Questionable▶ Condition Always False

global.c

15

Page 16: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

fts3_tokenize_vtab.c

Buggy Fixes

▶ Tainted Data Questionable▶ Condition Always False Due to Programming Error

global.c

16

Page 17: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Sink Separationdate.c insert.c

17

Page 18: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Shadowing

18

Page 19: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Shadowing

19

Page 20: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Shadowing

20

Page 21: SATE VI BackgroundBug Injection in SATE VI Aurelien Delaitre Lead, SATE VI Classic Track Prometheus Computing LLC SATE VI Workshop - September 19, 2019 - MITRE, McLean VA …

Take Away

21

AutomatedBug Injection Curation Test Suites

StrongerBetterFaster