CYBERDYNE: Automatic bug-finding at scale
Peter Goodman COUNTERMEASURE 2016
CYBERDYNE: Automatic bug-finding at scale Peter Goodman - - PowerPoint PPT Presentation
CYBERDYNE: Automatic bug-finding at scale Peter Goodman COUNTERMEASURE 2016 Cyberdyne (ex)terminates bugs Finds bug in binaries Combines different techniques Coverage-guided fuzzing Symbolic execution Trail of Bits |
Peter Goodman COUNTERMEASURE 2016
2
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
3
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
4 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
5 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
6 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
7 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
8
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
9 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
10 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
Splice Slice Bit flips Byte flips
Seed Inputs Mutation Engine Mutated Inputs
11 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
Seed Inputs Mutation Engine Mutated Inputs
12 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
12 1 2 3 4 5 6 7 8 9 10 11
Terminator
pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze –program foo –binaries bar pag@sloth:~/ cyberdyne seed –program foo – inputs ./inputs/*
13 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
12 1 2 3 4 5 6 7 8 9 10 11
Terminator
pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze –program foo –binaries bar pag@sloth:~/ cyberdyne seed –program foo – inputs ./inputs/*
14 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
12 1 2 3 4 5 6 7 8 9 10 11
Terminator
pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze –program foo –binaries bar pag@sloth:~/ cyberdyne seed –program foo – inputs ./inputs/*
15 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
12 1 2 3 4 5 6 7 8 9 10 11
Terminator
pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze –program foo –binaries bar pag@sloth:~/ cyberdyne seed –program foo – inputs ./inputs/*
16 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
Terminator
pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze –program foo –binaries bar pag@sloth:~/ cyberdyne seed –program foo – inputs ./inputs/*
17
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
18
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
19
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
Crashes!
20 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
Ste tep p 1 Mutate inputs Ste tep p 2 Execute mutations Step p 3 Gets new Coverage? Ste tep p 4 Re-seed mutator
Crashes!
21 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
Ste tep p 1 Mutate inputs Ste tep p 2 Execute mutations Step p 3 Gets new Coverage? Ste tep p 4 Re-seed mutator
Terminatorcyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
22
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
23 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
24 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
25 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
26 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
27 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
28 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
29 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
30 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
31
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
32 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
33 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
34 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
𝐷𝑝𝑤(𝐽3) ⊆ 𝐷𝑝𝑤(𝐽1) ∪ 𝐷𝑝𝑤(𝐽2)
35 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
36
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
37 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
38 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
39 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com
𝐷𝑝𝑤(𝐽1) ⊆ 𝐷𝑝𝑤(𝐽4) ∪ 𝐷𝑝𝑤(𝐽2)
40
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
41
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
42 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
ssssss ssssss
43 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
44 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
45 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
46 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
47 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
48 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
ssssss ssssss
49
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
50
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
51
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
52 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
eax = BitVec(32) symbol ϵ [-231, 231-1]
53 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
eax = BitVec(32) symbol ϵ [-231, 231-1] eax >= 0xa symbol ϵ [10, 231-1) eax < 0xa symbol ϵ [-231, 10)
54 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
eax = BitVec(32) symbol ϵ [-231, 231-1] eax >= 0xa symbol ϵ [10, 231-1) return eax < 0xa symbol ϵ [-231, 10) symbol ϵ [0, 10) jump with table symbol ϵ [-231, 0) error?!
55 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
56
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
57
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
58 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
59 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes
ssssss ssssss ssssss ssssss ssssss ssssss
60
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
61
Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
62 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com
peter@trailofbits.com Senior Security Engineer
Peter Goodman