Software Model Checking Improving Security of a Billion Computers
|
|
|
- Claude Douglas
- 10 years ago
- Views:
Transcription
1 Software Model Checking Improving Security of a Billion Computers Patrice Godefroid Microsoft Research Page 1 November 2009
2 Acknowledgments Joint work with Michael Levin (CSE) and others: Chris Marsh, Lei Fang, Stuart de Jong (CSE) interns Dennis Jeffries (06), David Molnar (07), Adam Kiezun (07), Bassem Elkarablieh (08), Thanks to the entire SAGE team and users! MSR: Ella Bounimova, Z3: Nikolaj Bjorner, Leonardo de Moura, WEX (Windows): Nick Bartmon, Eric Douglas, Office: Tom Gallagher, Octavian Timofte, SAGE users all across Microsoft! Page 2 November 2009
3 References see DART: Directed Automated Random Testing, with N. Klarlund and K. Sen, PLDI 2005 Compositional Dynamic Test Generation, POPL 2007 Automated Whitebox Fuzz Testing, with M. Levin and D. Molnar, NDSS 2008 Demand-Driven Compositional Symbolic Execution, with S. Anand and N. Tillmann, TACAS 2008 Grammar-Based Whitebox Fuzzing, with A. Kiezun and M. Levin, PLDI 2008 Active Property Checking, with M. Levin and D. Molnar, EMSOFT 2008 Precise Pointer Reasoning for Dynamic Test Generation, with B. Elkarablieh and M. Levin, ISSTA 2009 Page 3 November 2009
4 A Brief History of Software Model Checking How to apply model checking to analyze software? Real programming languages (e.g., C, C++, Java), Real size (e.g., 100,000 s lines of code). Two main approaches to software model checking: Modeling languages state-space exploration Model checking abstraction (SLAM, Bandera, FeaVer, BLAST, ) adaptation Programming languages state-space exploration Systematic testing Concurrency: VeriSoft, JPF, CMC, Bogor, CHESS, Data inputs: DART, EXE, SAGE, Killer app: security biggest impact to date! Page 4 November 2009
5 Security is Critical (to Microsoft) Software security bugs can be very expensive: Cost of each Microsoft Security Bulletin: $Millions Cost due to worms (Slammer, CodeRed, Blaster, etc.): $Billions Most security exploits are initiated via files or packets Ex: Internet Explorer parses dozens of file formats Security testing: hunting for million-dollar bugs Write A/V (always exploitable), Read A/V (sometimes exploitable), NULL-pointer dereference, division-by-zero (harder to exploit but still DOS attacks), etc. Page 5 November 2009
6 Hunting for Security Bugs I am from Belgium too! Main techniques used by black hats : Code inspection (of binaries) and Blackbox fuzz testing Blackbox fuzz testing: A form of blackbox random testing [Miller+90] Randomly fuzz (=modify) a well-formed input Grammar-based fuzzing: rules that encode well-formed ness + heuristics about how to fuzz (e.g., using probabilistic weights) Heavily used in security testing Ex: July 2006 Month of Browser Bugs Simple yet effective: many bugs found this way At Microsoft, fuzzing is mandated by the SDL Page 6 November 2009
7 Blackbox Fuzzing Examples: Peach, Protos, Spike, Autodafe, etc. Why so many blackbox fuzzers? Because anyone can write (a simple) one in a week-end! Conceptually simple, yet effective Sophistication is in the add-on Test harnesses (e.g., for packet fuzzing) Grammars (for specific input formats) Note: usually, no principled spec-based test generation No attempt to cover each state/rule in the grammar When probabilities, no global optimization (simply random walks) Page 7 November 2009
8 Introducing Whitebox Fuzzing Idea: mix fuzz testing with dynamic test generation Symbolic execution Collect constraints on inputs Negate those, solve with constraint solver, generate new inputs do systematic dynamic test generation (=DART) Whitebox Fuzzing = DART meets Fuzz Two Parts: 1. Foundation: DART (Directed Automated Random Testing) 2. Key extensions ( Whitebox Fuzzing ), implemented in SAGE Page 8 November 2009
9 Automatic Code-Driven Test Generation Problem: Given a sequential program with a set of input parameters, generate a set of inputs that maximizes code coverage = automate test generation using program analysis This is not model-based testing (= generate tests from an FSM spec) Page 9 November 2009
10 How? (1) Static Test Generation Static analysis to partition the program s input space [King76, ] Ineffective whenever symbolic reasoning is not possible which is frequent in practice (pointer manipulations, complex arithmetic, calls to complex OS or library functions, etc.) Example: int obscure(int x, int y) { } if (x==hash(y)) error(); return 0; Can t statically generate values for x and y that satisfy x==hash(y)! Page 10 November 2009
11 How? (2) Dynamic Test Generation Run the program (starting with some random inputs), gather constraints on inputs at conditional statements, use a constraint solver to generate new test inputs Repeat until a specific program statement is reached [Korel90, ] Or repeat to try to cover ALL feasible program paths: DART = Directed Automated Random Testing = systematic dynamic test generation [PLDI 05, ] detect crashes, assertion violations, use runtime checkers (Purify, ) Page 11 November 2009
12 DART = Directed Automated Random Testing Example: Run 1 :- start with (random) x=33, y=42 int obscure(int x, int y) { - execute concretely and symbolically: if (33!= 567) if (x!= hash(y)) if (x==hash(y)) error(); constraint too complex return 0; simplify it: x!= solve: x==567 solution: x=567 } - new test input: x=567, y=42 Observations: Run 2 : the other branch is executed All program paths are now covered! Dynamic test generation extends static test generation with additional runtime information: it is more powerful The number of program paths can be infinite: may not terminate! Still, DART works well for small programs (1,000s LOC) Significantly improves code coverage vs. random testing Page 12 November 2009
13 DART Implementations Defined by symbolic execution, constraint generation and solving Languages: C, Java, x86,.net, Theories: linear arith., bit-vectors, arrays, uninterpreted functions, Solvers: lp_solve, CVCLite, STP, Disolver, Z3, Examples of tools/systems implementing DART: EXE/EGT (Stanford): independent [ 05-06] closely related work CUTE = same as first DART implementation done at Bell Labs SAGE (CSE/MSR) for x86 binaries and merges it with fuzz testing for finding security bugs (more later) PEX (MSR) for.net binaries in conjunction with parameterized-unit tests for unit testing of.net programs YOGI (MSR) for checking the feasibility of program paths generated statically using a SLAM-like tool Vigilante (MSR) for generating worm filters BitScope (CMU/Berkeley) for malware analysis CatchConv (Berkeley) focus on integer overflows Splat (UCLA) focus on fast detection of buffer overflows Apollo (MIT) for testing web applications and more! Page 13 November 2009
14 DART Summary DART attempts to exercise all paths (like model checking) Covering a single specific assertion (verification): hard problem (often intractable) Maximize path coverage while checking thousands of assertions all over: easier problem (optimization, best-effort, tractable) Better coverage than pure random testing (with directed search) DART can work around limitations of symbolic execution Symbolic execution is an adjunct to concrete execution Concrete values are used to simplify unmanageable symbolic expressions Randomization helps where automated reasoning is difficult Comparison with static analysis: No false alarms (more precise) but may not terminate (less coverage) Dualizes static analysis: static may vs. DART must Whenever symbolic exec is too hard, under-approx with concrete values If symbolic execution is perfect, no approx needed: both coincide! Page 14 November 2009
15 Whitebox Fuzzing [NDSS 08] Whitebox Fuzzing = DART meets Fuzz Apply DART to large applications (not unit) Start with a well-formed input (not random) Combine with a generational search (not DFS) Negate 1-by-1 each constraint in a path constraint Generate many children for each parent run Challenge all the layers of the application sooner Leverage expensive symbolic execution Search spaces are huge, the search is partial yet effective at finding bugs! parent Gen 1 Page 15 November 2009
16 Example void top(char input[4]) input = good { int cnt = 0; Path constraint: if (input[0] == b ) cnt++; I 0!= b I 0 = b bood if (input[1] == a ) cnt++; I 1!= a I 1 = a gaod if (input[2] == d ) cnt++; I 2!= d I 2 = d godd if (input[3] ==! ) cnt++; I 3!=! I 3 =! goo! } if (cnt >= 3) crash(); good Gen 1 Page 16 November 2009
17 The Search Space void top(char input[4]) { } int cnt = 0; if (input[0] == b ) cnt++; if (input[1] == a ) cnt++; if (input[2] == d ) cnt++; if (input[3] ==! ) cnt++; if (cnt >= 3) crash(); Page 17 November 2009
18 SAGE (Scalable Automated Guided Execution) Generational search introduced in SAGE Performs symbolic execution of x86 execution traces Builds on Nirvana, idna and TruScan for x86 analysis Don t care about language or build process Easy to test new applications, no interference possible Can analyse any file-reading Windows applications Several optimizations to handle huge execution traces Constraint caching and common subexpression elimination Unrelated constraint optimization Constraint subsumption for constraints from input-bound loops Flip-count limit (to prevent endless loop expansions) Page 18 November 2009
19 SAGE Architecture Input0 Coverage Data Constraints Check for Crashes (AppVerifier) Code Coverage (Nirvana) Generate Constraints (TruScan) Solve Constraints (Z3) Input1 Input2 SAGE is mostly developed by CSE InputN MSR algorithms & code inside Page 19 November 2009
20 Some Experiments Most much (100x) bigger than ever tried before! Seven applications 10 hours search each App Tested #Tests Mean Depth Mean #Instr. Mean Input Size ANI ,066,087 5,400 Media ,409,376 65,536 Media ,432,489 27,335 Media ,644,652 30,833 Media ,685,240 22,209 Compressed File Format , OfficeApp ,731,248 45,064 Page 20 November 2009
21 Generational Search Leverages Symbolic Execution Each symbolic execution is expensive 25m30s Yet, symbolic execution does not dominate search time Page 21 November 2009
22 SAGE Results Since April 07 1 st release: many new security bugs found (missed by blackbox fuzzers, static analysis) Apps: image processors, media players, file decoders, Bugs: Write A/Vs, Read A/Vs, Crashes, Many triaged as security critical, severity 1, priority 1 (would trigger Microsoft security bulletin if known outside MS) Example: WEX Security team for Win7 Dedicated fuzzing lab with 100s machines 100s apps (deployed on 1billion+ computers) ~1/3 of all fuzzing bugs found by SAGE! SAGE = gold medal at Fuzzing Olympics organized by SWI at BlueHat 08 (Oct 08) Credit due to entire SAGE team + users! Page 22 November 2009
23 WEX Fuzz Dashboard Snippet Page 23 November 2009
24 WEX Fuzzing Lab Bug Yield for Win7 How fuzzing bugs found ( ) : 100s of apps, total number of fuzzing bugs is confidential Default Blackbox Fuzzer + Regression All Others SAGE SAGE is running 24/7 on 100s machines: the largest usage ever of any SMT solver N. Bjorner + L. de Moura (MSR, Z3 authors) But SAGE didn t exist in 2006 Since 2007 (SAGE 1 st release), ~1/3 bugs found by SAGE But SAGE currently deployed on only ~2/3 of those apps Normalizing the data by 2/3, SAGE found ~1/2 bugs SAGE is more CPU expensive, so it is run last in the lab, so all SAGE bugs were missed by everything else! Page 24 November 2009
25 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: ; h: ; h: ; h: ; h: ; h: ; h: ;... Page 25 November 2009
26 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: ; RIFF h: ; h: ; h: ; h: ; h: ; h: ;... Page 26 November 2009
27 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: ** ** ** ; RIFF...*** h: ; h: ; h: ; h: ; h: ; h: ;... Page 27 November 2009
28 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ; h: ; h: ; h: ;... Page 28 November 2009
29 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh h: ; h: ; h: ;... Page 29 November 2009
30 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: ; h: ; h: ;... Page 30 November 2009
31 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: ;...strf h: ; h: ;... Page 31 November 2009
32 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: ;...strf...( h: ; h: ;... Page 32 November 2009
33 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: ;...strf...( h: C9 9D E4 4E ;...ÉäN h: ;... Page 33 November 2009
34 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: ;...strf...( h: ; h: ;... Page 34 November 2009
35 Zero to Crash in 10 Generations Starting with 100 zero bytes SAGE generates a crashing test for Media1 parser: h: D ** ** ** ; RIFF=...*** h: ; h: ; h: ;...strh...vids h: B A ;...strf²uv:( h: ; h: ;... Page 35 November 2009
36 Different Seed Files, Different Crashes X X X X X X X X X X X X X X X X X X X X X X X X X X For the first time, we face bug triage issues! Page 36 November 2009
37 Most Bugs Found are Shallow seed4 seed4 Page 37 November 2009
38 SAGE Summary SAGE is so effective at finding bugs that, for the first time, we face bug triage issues with dynamic test generation What makes it so effective? Works on large applications (not unit test) Can detect bugs due to problems across components Fully automated (focus on file fuzzing) Easy to deploy (x86 analysis any language or build process!) Now, used daily in various groups inside Microsoft Page 38 November 2009
39 More On the Research Behind SAGE Challenges: How to recover from imprecision in symbolic execution? PLDI 05 How to scale symbolic exec. to billions of instructions? NDSS 08 How to check efficiently many properties together? EMSOFT 08 How to leverage gram. specs for complex input formats? PLDI 08 How to deal with path explosion in large prgms? POPL 07, TACAS 08 How to reason precisely about pointers? ISSTA 09 + research on constraint solvers (Z3, disolver,...) Page 39 November 2009
40 Extension: Active Property Checking Traditional property checkers are passive Purify, Valgrind, AppVerifier, TruScan, etc. Check only the current concrete execution Can check many properties at once Combine with symbolic execution active Reason about all inputs on same path Apply heavier constraint solving/proving Actively look for input violating property Ex: array ref a[i] where i depends on input, a is of size c Try to force buffer over/underflow: add (i < 0) OR (i >= c) to the path constraint; if SAT, next test should hit a bug! Challenge: inject/manage all such constraints efficiently Page 40 November 2009
41 Ext.: Compositionality = Key to Scalability Problem: executing all feasible paths does not scale! Idea: compositional dynamic test generation use summaries of individual functions (arbitrary program blocks) like in interprocedural static analysis If f calls g, test g separately, summarize the results, and use g s summary when testing f A summary (g) is a disjunction of path constraints expressed in terms of input preconditions and output postconditions: (g) = (w) with (w) = pre(w) post(w) expressed in terms of g s inputs and outputs g s outputs are treated as symbolic inputs to a calling function f Can provide same path coverage exponentially faster! Page 41 November 2009
42 Some Other Related Work in MSR Pex: automatic test generation to the desktop Unit testing, OO languages,.net managed code, VS integration contracts, rich interfaces, mock-object creation, program repair Yogi: combine testing with static analysis Testing is precise but incomplete Static analysis is complete but imprecise SMASH: new compositional may-must algorithm (alternation) [POPL 2010] combine Experiments with 69 Win7 device drivers, 85 properties: Better constraint solvers (ex: Z3), extend to concurrency (ex: CHESS), Etc. (active area of research) Page 42 November 2009
43 Conclusion: Blackbox vs. Whitebox Fuzzing Different cost/precision tradeoffs Blackbox is lightweight, easy and fast, but poor coverage Whitebox is smarter, but complex and slower Note: other recent semi-whitebox approaches Less smart (no symbolic exec, constr. solving) but more lightweight: Flayer (taint-flow, may generate false alarms), Bunny-the-fuzzer (taint-flow, source-based, fuzz heuristics from input usage), etc. Which is more effective at finding bugs? It depends Many apps are so buggy, any form of fuzzing find bugs in those! Once low-hanging bugs are gone, fuzzing must become smarter: use whitebox and/or user-provided guidance (grammars, etc.) Bottom-line: in practice, use both! (We do at Microsoft) Page 43 November 2009
44 Future Work (The Big Picture) During the last decade, code inspection for standard programming errors has largely been automated with static code analysis Next: automate testing (as much as possible) Thanks to advances in program analysis, efficient constraint solvers and powerful computers Whitebox testing: automatic code-based test generation Like static analysis: automatic, scalable, checks many properties Today, we can exhaustively test small applications, or partially test large applications Biggest impact so far: whitebox fuzzing for (Windows) security testing Improved security for a billion computers worldwide! Next: towards exhaustive testing of large applications (verification) How far can we go? Page 44 November 2009
45 Back-up Slides Page 45 November 2009
46 Ext.: Grammar-Based Whitebox Fuzzing Input precondition specified as a context-free grammar Avoids path explosion in lexer and parser Faster, better and deeper coverage for applications with structured inputs (XML, etc.) generation strategy (each ran 2 hours) #inputs total coverage coverage in code gen blackbox fuzzing % 51% whitebox fuzzing % 54% grammar-based blackbox fuzzing % 61% grammar-based whitebox fuzzing % 82% Page 46 November 2009
From Blackbox Fuzzing to Whitebox Fuzzing towards Verification
From Blackbox Fuzzing to Whitebox Fuzzing towards Verification 2000 2005 2010 2015 Blackbox Fuzzing Whitebox Fuzzing Verification Patrice Godefroid Microsoft Research Page 1 July 2010 Acknowledgments Joint
Applications of SMT to. Test Generation
Applications of SMT to Test Generation Patrice Godefroid Microsoft Research Page 1 June 2012 Test Generation is Big Business #1 application for SMT solvers today (CPU usage) SAGE @ Microsoft: 1 st whitebox
Whitebox Fuzzing for Security Testing
Article development led by queue.acm.org SAGE has had a remarkable impact at Microsoft. SAGE: Whitebox Fuzzing for Security Testing doi:10.1145/2093548.2093564 by Patrice Godefroid, Michael Y. Levin, and
SAGE: Whitebox Fuzzing for Security Testing
SAGE: Whitebox Fuzzing for Security Testing SAGE has had a remarkable impact at Microsoft. Patrice Godefroid, Michael Y. Levin, David Molnar, Microsoft Most ACM Queue readers might think of program verification
Dynamic Test Generation for Large Binary Programs
Dynamic Test Generation for Large Binary Programs David Alexander Molnar Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2009-157 http://www.eecs.berkeley.edu/pubs/techrpts/2009/eecs-2009-157.html
Model Checking of Software
Model Checking of Software Patrice Godefroid Bell Laboratories, Lucent Technologies SpecNCheck Page 1 August 2001 A Brief History of Model Checking Prehistory: transformational programs and theorem proving
Towards practical reactive security audit using extended static checkers 1
Towards practical reactive security audit using extended static checkers 1 Julien Vanegue 1 Shuvendu K. Lahiri 2 1 Bloomberg LP, New York 2 Microsoft Research, Redmond May 20, 2013 1 The work was conducted
Detecting Critical Defects on the Developer s Desktop
Detecting Critical Defects on the Developer s Desktop Seth Hallem CEO Coverity, Inc. Copyright Coverity, Inc. 2006. All Rights Reserved. This publication, in whole or in part, may not be reproduced, stored
Environment Modeling for Automated Testing of Cloud Applications
Environment Modeling for Automated Testing of Cloud Applications Linghao Zhang, Tao Xie, Nikolai Tillmann, Peli de Halleux, Xiaoxing Ma, Jian Lv {lzhang25, txie}@ncsu.edu, {nikolait, jhalleux}@microsoft.com,
Taint-based Directed Whitebox Fuzzing
Taint-based Directed Whitebox Fuzzing Vijay Ganesh and Tim Leek and Martin Rinard MIT Computer Science and Artificial Intelligence Lab vganesh, tleek, [email protected] Abstract We present a new automated
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces
Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Mainul Islam, Christoph Csallner Computer Science and Engineering Department University of Texas at Arlington Arlington,
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
The Advantages of Block-Based Protocol Analysis for Security Testing
The Advantages of Block-Based Protocol Analysis for Security Testing Dave Aitel Immunity,Inc. 111 E. 7 th St. Suite 64, NY NY 10009, USA [email protected] February, 4 2002 Abstract. This paper describes
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
Fuzzing in Microsoft and FuzzGuru framework
Fuzzing in Microsoft and FuzzGuru framework OWASP-IL May-2007 John Neystadt [email protected] Lead Program Manager Forefront Edge, Microsoft Agenda Overview Introduction to Fuzzing FuzzGuru Architecture
Experimental Comparison of Concolic and Random Testing for Java Card Applets
Experimental Comparison of Concolic and Random Testing for Java Card Applets Kari Kähkönen, Roland Kindermann, Keijo Heljanko, and Ilkka Niemelä Aalto University, Department of Information and Computer
Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
Compositional Dynamic Test Generation
Compositional Dynamic Test Generation (Extended Abstract) Patrice Godefroid Microsoft Research [email protected] Abstract Dynamic test generation is a form of dynamic program analysis that attempts to compute
Joeri de Ruiter Sicco Verwer
Automated reverse engineering of security protocols Learning to fuzz, fuzzing to learn Fides Aarts Erik Poll Joeri de Ruiter Sicco Verwer Radboud University Nijmegen Fuzzing 1. Plain fuzzing, with long
Symbolic Execution for Software Testing in Practice Preliminary Assessment
Symbolic Execution for Software Testing in Practice Preliminary Assessment Cristian Cadar Imperial College London [email protected] Koushik Sen U.C. Berkeley [email protected] Patrice Godefroid
Software testing. Objectives
Software testing cmsc435-1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating
The Hacker Strategy. Dave Aitel [email protected]. Security Research
1 The Hacker Strategy Dave Aitel [email protected] Security Research Who am I? CTO, Immunity Inc. History: NSA->@stake -> Immunity Responsible for new product development Vulnerability Sharing Club
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Loop-Extended Symbolic Execution on Binary Programs
Loop-Extended Symbolic Execution on Binary Programs Prateek Saxena Pongsin Poosankam Stephen McCamant Dawn Song University of California, Berkeley and Carnegie Mellon University Berkeley, California, USA
Dynamic Test Generation To Find Integer Bugs in x86 Binary Linux Programs
Dynamic Test Generation To Find Integer Bugs in x86 Binary Linux Programs David Molnar UC Berkeley Xue Cong Li UC Berkeley David A. Wagner UC Berkeley Abstract Recently, integer bugs, including integer
Bug hunting. Vulnerability finding methods in Windows 32 environments compared. FX of Phenoelit
Bug hunting Vulnerability finding methods in Windows 32 environments compared FX of Phenoelit The goal: 0day What we are looking for: Handles network side input Runs on a remote system Is complex enough
Introduction to Static Analysis for Assurance
Introduction to Static Analysis for Assurance John Rushby Computer Science Laboratory SRI International Menlo Park CA USA John Rushby Static Analysis for Assurance: 1 Overview What is static analysis?
UnitCheck: Unit Testing and Model Checking Combined
UnitCheck: Unit Testing and Model Checking Combined Michal Kebrt and Ondřej Šerý Charles University in Prague Malostranské náměstí 25 118 00 Prague 1 Czech Republic [email protected], [email protected]
Secure Software Programming and Vulnerability Analysis
Secure Software Programming and Vulnerability Analysis Christopher Kruegel [email protected] http://www.auto.tuwien.ac.at/~chris Testing and Source Code Auditing Secure Software Programming 2 Overview
Visualizing Information Flow through C Programs
Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb
Web Applications Testing
Web Applications Testing Automated testing and verification JP Galeotti, Alessandra Gorla Why are Web applications different Web 1.0: Static content Client and Server side execution Different components
Base One's Rich Client Architecture
Base One's Rich Client Architecture Base One provides a unique approach for developing Internet-enabled applications, combining both efficiency and ease of programming through its "Rich Client" architecture.
Static Analysis for Software Verification. Leon Moonen
Static Analysis for Software Verification Leon Moonen Today s topics Software inspection it s relation to testing benefits and drawbacks Static (program) analysis potential benefits limitations and their
Automatic vs. Manual Code Analysis
Automatic vs. Manual Code Analysis 2009-11-17 Ari Kesäniemi Senior Security Architect Nixu Oy [email protected] Copyright The Foundation Permission is granted to copy, distribute and/or modify this
Software Vulnerability Detection using Backward Trace Analysis and Symbolic Execution
Software Vulnerability Detection using Backward Trace Analysis and Symbolic Execution Hongzhe Li, Taebeom Kim, Munkhbayar Bat-Erdene and Heejo Lee Div. of Computer and Communication Engineering Korea University
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
D. Best Practices D.1. Assurance The 5 th A
Best Practices I&C School Prof. P. Janson September 2014 D. Best Practices D.1. Assurance The 5 th A 1 of 20 IT systems are insecure for two main reasons: People are fallible and systems are complex and
Peach Fuzzer Platform
Fuzzing is a software testing technique that introduces invalid, malformed, or random data to parts of a computer system, such as files, network packets, environment variables, or memory. How the tested
Combining Static Analysis and Test Generation for C Program Debugging
Combining Static Analysis and Test Generation for C Program Debugging Omar Chebaro 1,2, Nikolai Kosmatov 1, Alain Giorgetti 2,3, and Jacques Julliand 2 1 CEA, LIST, Software Safety Laboratory, PC 94, 91191
Security Products Development. Leon Juranic [email protected]
Security Products Development Leon Juranic [email protected] Security Products Development Q: Why I picked this boring topic at all? A: Avoidance of any hackingrelated topics for fsec (khm.) :) Security
Assertion Synthesis Enabling Assertion-Based Verification For Simulation, Formal and Emulation Flows
Assertion Synthesis Enabling Assertion-Based Verification For Simulation, Formal and Emulation Flows Manual Assertion Creation is ABV Bottleneck Assertion-Based Verification adopted by leading design companies
Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References
Outline Computer Science 331 Introduction to Testing of Programs Mike Jacobson Department of Computer Science University of Calgary Lecture #3-4 1 Denitions 2 3 4 Implementation and Evaluation 5 Debugging
Generating Test Suites with Augmented Dynamic Symbolic Execution
Generating Test Suites with Augmented Dynamic Symbolic Execution Konrad Jamrozik 1, Gordon Fraser 2, Nikolai Tillman 3, and Jonathan de Halleux 3 1 Saarland University, Saarbruecken-66123, Germany [email protected]
Generating Test Cases With High Branch Coverage for Web Applications
Generating Test Cases With High Branch Coverage for Web Applications Andrey Zakonov and Anatoly Shalyto National Research University of Information Technologies, Mechanics and Optics, Saint-Petersburg,
Transparent Monitoring of a Process Self in a Virtual Environment
Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis
POMPDs Make Better Hackers: Accounting for Uncertainty in Penetration Testing. By: Chris Abbott
POMPDs Make Better Hackers: Accounting for Uncertainty in Penetration Testing By: Chris Abbott Introduction What is penetration testing? Methodology for assessing network security, by generating and executing
The software model checker BLAST
Int J Softw Tools Technol Transfer (2007) 9:505 525 DOI 10.1007/s10009-007-0044-z SPECIAL SECTION FASE 04/05 The software model checker BLAST Applications to software engineering Dirk Beyer Thomas A. Henzinger
EVILSEED: A Guided Approach to Finding Malicious Web Pages
+ EVILSEED: A Guided Approach to Finding Malicious Web Pages Presented by: Alaa Hassan Supervised by: Dr. Tom Chothia + Outline Introduction Introducing EVILSEED. EVILSEED Architecture. Effectiveness of
Secure Programming with Static Analysis. Jacob West [email protected]
Secure Programming with Static Analysis Jacob West [email protected] Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
CS/COE 1501 http://cs.pitt.edu/~bill/1501/
CS/COE 1501 http://cs.pitt.edu/~bill/1501/ Lecture 01 Course Introduction Meta-notes These notes are intended for use by students in CS1501 at the University of Pittsburgh. They are provided free of charge
The Security Development Lifecycle. Steven B. Lipner, CISSP [email protected] Senior Director Security Engineering Strategy Microsoft Corp.
The Security Development Lifecycle Steven B. Lipner, CISSP [email protected] Senior Director Security Engineering Strategy Microsoft Corp. 2 Overview Introduction A look back Trustworthy Computing
RevoScaleR Speed and Scalability
EXECUTIVE WHITE PAPER RevoScaleR Speed and Scalability By Lee Edlefsen Ph.D., Chief Scientist, Revolution Analytics Abstract RevoScaleR, the Big Data predictive analytics library included with Revolution
A Test Suite for Basic CWE Effectiveness. Paul E. Black. [email protected]. http://samate.nist.gov/
A Test Suite for Basic CWE Effectiveness Paul E. Black [email protected] http://samate.nist.gov/ Static Analysis Tool Exposition (SATE V) News l We choose test cases by end of May l Tool output uploaded
Levels of Software Testing. Functional Testing
Levels of Software Testing There are different levels during the process of Testing. In this chapter a brief description is provided about these levels. Levels of testing include the different methodologies
Intrusion Detection via Static Analysis
Intrusion Detection via Static Analysis IEEE Symposium on Security & Privacy 01 David Wagner Drew Dean Presented by Yongjian Hu Outline Introduction Motivation Models Trivial model Callgraph model Abstract
Generating Program Inputs for Database Application Testing
Generating Program Inputs for Database Application Testing Kai Pan, Xintao Wu University of North Carolina at Charlotte {kpan, xwu}@uncc.edu Tao Xie North Carolina State University [email protected] Abstract
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
elearning for Secure Application Development
elearning for Secure Application Development Curriculum Application Security Awareness Series 1-2 Secure Software Development Series 2-8 Secure Architectures and Threat Modeling Series 9 Application Security
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 26 Debugging, Integration and System Testing Specific Instructional Objectives At the end of this lesson the student would be able to: Explain why debugging is needed.
The Course. http://www.cse.unsw.edu.au/~cs3153/
The Course http://www.cse.unsw.edu.au/~cs3153/ Lecturers Dr Peter Höfner NICTA L5 building Prof Rob van Glabbeek NICTA L5 building Dr Ralf Huuck NICTA ATP building 2 Plan/Schedule (1) Where and When Tuesday,
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper)
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper) Guillaume Brat, Jorge A. Navas, Nija Shi, and Arnaud Venet NASA Ames Research Center, Moffett Field, CA 94035 Abstract.
Static Code Analysis Procedures in the Development Cycle
Static Code Analysis Procedures in the Development Cycle Tools, Technology, and Process in Engineering at Microsoft Mooly Beeri Microsoft Haifa R&D Center Agenda Static code analysis tools PREfix and PREfast
Ivan Medvedev Principal Security Development Lead Microsoft Corporation
Ivan Medvedev Principal Security Development Lead Microsoft Corporation Session Objectives and Takeaways Session Objective(s): Give an overview of the Security Development Lifecycle Discuss the externally
Introduction. Figure 1 Schema of DarunGrim2
Reversing Microsoft patches to reveal vulnerable code Harsimran Walia Computer Security Enthusiast 2011 Abstract The paper would try to reveal the vulnerable code for a particular disclosed vulnerability,
Software Defined Networking What is it, how does it work, and what is it good for?
Software Defined Networking What is it, how does it work, and what is it good for? slides stolen from Jennifer Rexford, Nick McKeown, Michael Schapira, Scott Shenker, Teemu Koponen, Yotam Harchol and David
LZ77. Example 2.10: Let T = badadadabaab and assume d max and l max are large. phrase b a d adadab aa b
LZ77 The original LZ77 algorithm works as follows: A phrase T j starting at a position i is encoded as a triple of the form distance, length, symbol. A triple d, l, s means that: T j = T [i...i + l] =
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair Martin Monperrus, Benoit Baudry Dagstuhl Preprint, Seminar #13061, 2013. Link to the latest version Abstract In this paper, we
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST)
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST) M loc 12 ONBOARD SOFTWARE SIZE 10 Volt (2011) F-35 (2012) 8 6 787 (2010) F-35 (2010) 4 2 F-22 (2005) 0 WHY DO WE TRUST
Demystifying the Myth of Passive Network Discovery and Monitoring Systems
Demystifying the Myth of Passive Network Discovery and Monitoring Systems Ofir Arkin Chief Technology Officer Insightix Copyright 2012 - All Rights Reserved. This material is proprietary of Insightix.
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
TOOL EVALUATION REPORT: FORTIFY
TOOL EVALUATION REPORT: FORTIFY Derek D Souza, Yoon Phil Kim, Tim Kral, Tejas Ranade, Somesh Sasalatti ABOUT THE TOOL Background The tool that we have evaluated is the Fortify Source Code Analyzer (Fortify
How I Learned to Stop Fuzzing and Find More Bugs
How I Learned to Stop Fuzzing and Find More Bugs Jacob West Fortify Software August 3-5, 2007 Las Vegas Agenda Introduction to fuzzing What is fuzzing? Challenges with fuzzing Introduction to static analysis
A Holistic Approach to Security Testing
Ruediger Bachmann and Achim D. Brucker Developing Secure Software A Holistic Approach to Security Testing Building secure software requires a well-selected combination of security testing techniques during
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
QLIKVIEW ARCHITECTURE AND SYSTEM RESOURCE USAGE
QLIKVIEW ARCHITECTURE AND SYSTEM RESOURCE USAGE QlikView Technical Brief April 2011 www.qlikview.com Introduction This technical brief covers an overview of the QlikView product components and architecture
Minimizing code defects to improve software quality and lower development costs.
Development solutions White paper October 2008 Minimizing code defects to improve software quality and lower development costs. IBM Rational Software Analyzer and IBM Rational PurifyPlus software Kari
Wiggins/Redstone: An On-line Program Specializer
Wiggins/Redstone: An On-line Program Specializer Dean Deaver Rick Gorton Norm Rubin {dean.deaver,rick.gorton,norm.rubin}@compaq.com Hot Chips 11 Wiggins/Redstone 1 W/R is a Software System That: u Makes
Key Attributes for Analytics in an IBM i environment
Key Attributes for Analytics in an IBM i environment Companies worldwide invest millions of dollars in operational applications to improve the way they conduct business. While these systems provide significant
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
The Power of SNORT SNORT Update
The Power of SNORT SNORT Update Jean-Paul Kerouanton 11 th May 2010 2 Leveraging the Snort Brand The Power SNORT = The Power of Open Source The SNORT- Universe AMAZON - +100 items GOOGLE +3.700.000 hits
DISCOVERY OF WEB-APPLICATION VULNERABILITIES USING FUZZING TECHNIQUES
DISCOVERY OF WEB-APPLICATION VULNERABILITIES USING FUZZING TECHNIQUES By Michael Crouse Dr. Errin W. Fulp, Ph.D., Advisor Abstract The increasingly high volume of users on the web and their use of web
How To Use Windows Small Business Server 2011 Essentials
Everything Your Business Needs in a Server, Nothing it doesn t. Ideal as a first server for small businesses with up to 25 users, Windows Small Business Server 2011 Essentials provides a cost-effective
SAN Conceptual and Design Basics
TECHNICAL NOTE VMware Infrastructure 3 SAN Conceptual and Design Basics VMware ESX Server can be used in conjunction with a SAN (storage area network), a specialized high speed network that connects computer
