cyberdyne
play

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 |


  1. CYBERDYNE: Automatic bug-finding at scale Peter Goodman COUNTERMEASURE 2016

  2. Cyberdyne (ex)terminates bugs  Finds bug in binaries  Combines different techniques  Coverage-guided fuzzing  Symbolic execution Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 2

  3. Get to know the mind of the machine  Part 1: high level architecture  How to coordinate bug-finding tools  Part 2: low level tools  How do the bug-finding tools work? Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 3

  4. History: Cyber Grand Challenge (1) Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 4

  5. History: Cyber Grand Challenge (2)  Capture - the - flag (CTF) competition  Goal: find and exploit bugs in binaries  Goal: patch binaries  Competitors were programs  “Cyber Reasoning Systems” (CRS) Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 5

  6. History: Cyber Grand Challenge (3)  Shaped the design of Cyberdyne  Distributed system  Runs on any number of nodes  Automated system  No human intervention required Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 6

  7. Part 1 Skeleton of a bug-finding system Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 7

  8. Ideally, a bug-finding system should …  Find bugs  Simple, right?  Work on real programs  Be easy to scale Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 8

  9. When I grow up … Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 9

  10. First kill: simple fuzzing (1) Byte flips Bit flips Splice Slice Mutation Seed Inputs Mutated Inputs Engine Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 10

  11. First kill: simple fuzzing (1) Radamsa, zzuf, etc. Mutation Seed Inputs Mutated Inputs Engine Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 11

  12. First kill: simple fuzzing (2)  Mutate inputs 12  11 1 10 2 3 9 8 4 7 5 6 Execute inputs  … Terminator Profit?  pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze – program foo – binaries bar pag@sloth:~/ cyberdyne seed – program foo – inputs ./inputs/*  Find bugs! Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 12

  13. First kill: simple fuzzing (2)  Mutate inputs   Execute inputs  12 11 1 10 2 3 9 8 4 7 5 6 … Terminator Profit?  pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze – program foo – binaries bar pag@sloth:~/ cyberdyne seed – program foo – inputs ./inputs/*  Find bugs! Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 13

  14. First kill: simple fuzzing (2)  Mutate inputs   Execute inputs  … Terminator Profit? 12  11 1 pag@sloth:~/ cyberdyne start 10 2 pag@sloth:~/ cyberdyne analyze – program 3 9 foo – binaries bar 8 4 pag@sloth:~/ cyberdyne seed – program foo – 7 5 6 inputs ./inputs/*  Find bugs! Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 14

  15. First kill: simple fuzzing (2)  Mutate inputs   Execute inputs  … Terminator Profit? 12  11 1 pag@sloth:~/ cyberdyne start 10 2 pag@sloth:~/ cyberdyne analyze – program 3 9 foo – binaries bar 8 4 pag@sloth:~/ cyberdyne seed – program foo – 7 5 6 inputs ./inputs/*  Find bugs!  Right???? Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 15

  16. First kill: simple fuzzing (2)  Mutate inputs   Execute inputs  … Terminator Risk of loss!  pag@sloth:~/ cyberdyne start pag@sloth:~/ cyberdyne analyze – program foo – binaries bar pag@sloth:~/ cyberdyne seed – program foo – inputs ./inputs/*  No bugs found  Lost cycles, time Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 16

  17. Misfire: Check your targets  Searching for bugs takes time  Need accountability  Is it worth it to keep searching?  Is progress being made?  How do we measure progress? Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 17

  18. Reload: Track bug-finding progress  Idea: has something new happened?  Track when new code is executed  Code coverage: Instrument program to detect when new code is executed  Inputs that cover new code signal progress Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 18

  19. Need more ammo  Eventually hit a “coverage ceiling”  Decreasing marginal returns  Need heavier guns  Coverage-guided fuzzing: re-seed with inputs that got new coverage (next)  Symbolic execution (later) Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 19

  20. Coverage-guided mutational fuzzing (1) Terminator cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes Step p 3 Ste tep p 1 Ste tep p 2 Ste tep p 4 Gets new Mutate Execute Re-seed Crashes! inputs mutations Coverage? mutator Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 20

  21. Coverage-guided mutational fuzzing (1) AFL Terminator cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes Step p 3 Ste tep p 1 Ste tep p 2 Ste tep p 4 Gets new Mutate Execute Re-seed Crashes! inputs mutations Coverage? mutator Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 21

  22. Coverage-guided mutational fuzzing (2)  Trivially parallelizable  Run mutation engines concurrently  Scaling fuzzing in Cyberdyne  Fuzzer service internalizes mutation, execution, code coverage  Runs many fuzzers, one mutator each Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 22

  23. Look under the skin of Cyberdyne (1) Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 23

  24. Look under the skin of Cyberdyne (2) Terminator cyberdyne start cyberdyne analyze –pr… cyberdyne launch nukes Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 24

  25. Look under the skin of Cyberdyne (3) Fuz uzze zer r (with GRR) Terminator cyberdyne start cyberdyne analyze –pr… Mutates and  cyberdyne launch nukes executes inputs Easy to scale  Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 25

  26. Look under the skin of Cyberdyne (4) Py PySy SymE mEmu mu Terminator cyberdyne start cyberdyne analyze –pr… Coverage-guided  cyberdyne launch nukes binary symbolic executor Harder to scale  Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 26

  27. Look under the skin of Cyberdyne (5) KLEE KL EE (with McSema) Terminator cyberdyne start cyberdyne analyze –pr… LLVM bitcode  cyberdyne launch nukes symbolic executor Hard to use  Hard to scale  Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 27

  28. Look under the skin of Cyberdyne (6) Or Orac acle le Terminator cyberdyne start cyberdyne analyze –pr…  Gatekeeper cyberdyne launch nukes for minset  Detects crashes  Easy to scale Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 28

  29. Look under the skin of Cyberdyne (7) Mins Mi nset Terminator cyberdyne start cyberdyne analyze –pr… Finds inputs that get  cyberdyne launch nukes new code coverage One input at a time  Bottleneck?  Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 29

  30. Part 2 The servos and the gears Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 30

  31. How it works: Minset (1)  What is it?  Minimum set of inputs that produce maximum code coverage  Why use it?  Identify “interesting” inputs  Good candidates for exploration Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 11.17.2016 | trailofbits.com 31

  32. How it works: Minset (2) 4 3 2 1 1 4 3 2 3 1 2 4 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com 32

  33. How it works: Minset (3) 4 3 2 1 1 4 3 2 3 1 2 4 Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com 33

  34. How it works: Minset (4) 4 3 2 1 1 4 3 2 3 1 2 4 𝐷𝑝𝑤(𝐽 3 ) ⊆ 𝐷𝑝𝑤(𝐽 1 ) ∪ 𝐷𝑝𝑤(𝐽 2 ) Trail of Bits | CYBERDYNE: Automatic Bug-Finding at Scale | 09.17.2016 | trailofbits.com 34

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend