Security Testing. Ulf Kargén Department of Computer and Information Science (IDA) Division for Database and Information Techniques (ADIT)

Size: px
Start display at page:

Download "Security Testing. Ulf Kargén Department of Computer and Information Science (IDA) Division for Database and Information Techniques (ADIT)"

Transcription

1 Security Testing TDDC90 Software Security Ulf Kargén Department of Computer and Information Science (IDA) Division for Database and Information Techniques (ADIT)

2 Security testing vs regular testing Regular testing aims to ensure that the program meets customer requirements in terms of features and functionality. Tests normal use cases Test with regards to common expected usage patterns. Security testing aims to ensure that program fulfills security requirements. Often non-functional. More interested in misuse cases Attackers taking advantage of weird corner cases. 2

3 Functional vs non-functional security requirements Functional requirements What shall the software do? Non-functional requirements How should it be done? 3 Regular functional requirement example (Webmail system): It should be possible to use HTML formatting in s Functional security requirement example: The system should check upon user registration that passwords are at least 8 characters long Non-functional security requirement example: All user input must be sanitized before being used in database queries How would you write a unit test for this?

4 Common security testing approaches Often difficult to craft e.g. unit tests from non-functional requirements Two common approaches: Test for known vulnerability types Attempt directed or random search of program state space to uncover the weird corner cases In today s lecture: Penetration testing (briefly) Fuzz testing or fuzzing Concolic testing 4

5 Penetration testing Manually try to break software Relies on human intuition and experience. Typically involves looking for known common problems. Can uncover problems that are impossible or difficult to find using automated methods but results completely dependent on skill of tester! 5

6 Fuzz testing Idea: Send semi-valid input to a program and observe its behavior. Black-box testing System Under Test (SUT) treated as a black-box The only feedback is the output and/or externally observable behavior of SUT. First proposed in a 1990 paper where completely random data was sent to 85 common Unix utilities in 6 different systems % crashed. Remember: Crash implies memory protection errors. Crashes are often signs of exploitable flaws in the program! 6

7 Fuzz testing architecture Fuzzing Framework Input Fuzzer Input Fuzzer generates inputs to SUT Dispatcher responsible for running SUT with input from fuzzer Assessor examines behavior of SUT to detect failures (i.e. signs of triggered bugs) Dispatcher Assessor SUT 7

8 Fuzzing components: Input generation Simplest method: Completely random Won t work well in practice Input deviates too much from expected format, rejected early in processing. Two common methods: Mutation based fuzzing Generation based fuzzing 8

9 Mutation based fuzzing Start with a valid seed input, and mutate it. Flip some bits, change value of some bytes. Programs that have highly structured input, e.g. XML, may require smarter mutations. Challenge: How to select appropriate seed input? If official test suites are available, these can be used. Generally mostly used for programs that take files as input. Trickier to do when interpretation of inputs depends on program state, e.g. network protocol parsers. (The way a message is handled depends on previous messages.) 9

10 Mutation based fuzzing Pros and Cons Easy to get started, no (or little) knowledge of specific input format needed. Typically yields low code coverage, inputs tend to deviate too much from expected format rejected by early sanity checks. int parse_input(char* data, size_t size) { int saved_checksum, computed_checksum; if(size < 4) return ERR_CODE; // First four bytes of data is CRC32 checksum saved_checksum = *((int*)data); Mutated inputs will always be rejected here! // Compute checksum for rest of data computed_checksum = CRC32(data + 4, size 4); // Error if checksums don t match if(computed_checksum!= saved_checksum) return ERR_CODE; 10 // Continue processing of data...

11 Mutation based fuzzing Pros and Cons Easy to get started, no (or little) knowledge of specific input format needed. Typically yields low code coverage, inputs tend to deviate too much from expected format rejected by early sanity checks. Hard to reach deeper parts of programs by random guessing int parse_record(char* data, int type) { switch(type) { case 0xFF0001: parse_type_a(data); break; case 0xFF0002: parse_type_b(data); break; Very unlikely to guess magic constants correctly. If seed only contains Type A records, parse_type_b will likely never be tested. case 0xFF0003: parse_type_c(data); break;... 11

12 Generation based fuzzing Idea: Use a specification of the input format (e.g. a grammar) to automatically generate semi-valid inputs Usually combined with various fuzzing heuristics that are known to trigger certain vulnerability types. Very long strings, empty strings Strings with format specifiers, extreme format strings %n%n%n%n%n%n%n%n%n%n%n%n%n%n%n %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s % x Very large or small values, values close to max or min for data type 0x0, 0xffffffff, 0x7fffffff, 0x , 0xfffffffe Negative values where positive ones are expected 12

13 Generation based fuzzing Pros and Cons Input is much closer to the expected, much better coverage Can include models of protocol state machines to send messages in the sequence expected by SUT. Requires input format to be known. May take considerable time to write the input format grammar/specification. 13

14 Examples of generation based fuzzers (open source) SPIKE (2001): Early successful generation based fuzzer for network protocols. Designed to fuzz input formats consisting of blocks with fixed or variable size. E.g. [type][length][data] Peach (2006): Powerful fuzzing framework which allows specifying input formats in an XML format. Can represent complex input formats, but relatively steep learning curve. Sulley (2008): More modern fuzzing framework designed to be somewhat simpler to use than e.g. Peach. Also several commercial fuzzers, e.g. Codenomicon DEFENSICS, BeStorm, etc. 14

15 Fuzzing components: The Dispatcher Responsible for running the SUT on each input generated by fuzzer module. Must provide suitable environment for SUT. E.g. implement a client to communicate with a SUT using the fuzzed network protocol. SUT may modify environment (file system, etc.) Some fuzzing frameworks allow running SUT inside a virtual machine and restoring from known good snapshot after each SUT execution. 15

16 Fuzzing components: The Assessor Must automatically assess observed SUT behavior to determine if a fault was triggered. For C/C++ programs: Monitor for memory access violations, e.g. out-of-bounds reads or writes. Simplest method: Just check if SUT crashed. Problem: SUT may catch signals/exceptions to gracefully handle e.g. segmentation faults Difficult to tell if a fault, (which could have been exploitable with carefully crafted input), have occurred 16

17 Improving fault detection One solution is to attach a programmable debugger to SUT. Can catch signals/exceptions prior to being delivered to application. Can also help in manual diagnosis of detected faults by recording stack traces, values of registers, etc. However: All faults do not result in failures, i.e. a crash or other observable behavior (e.g. Heartbleed). An out-of-bounds read/write or use-after-free may e.g. not result in a memory access violation. Solution: Use a dynamic-analysis tool that can monitor what goes on under the hood Can potentially catch more bugs, but SUT runs (considerably) slower. Need more time for achieving the same level of coverage 17

18 AddressSanitizer Memory error checkers Two open source examples Applies instrumentation during compilation: Additional code is inserted in program to check for memory errors. Monitors all calls to malloc/new/free/delete can detect if memory is freed twice, used after free, out of bounds access of heap allocated memory, etc. Inserts checks that stack buffers are not accessed out of bounds Detects use of uninitialized variables etc Valgrind/Memcheck Applies instrumentation directly at the binary level during runtime does not need source code! Can detect similar problems as AddressSanitizer Applying instrumentation at the machine code level has some benefits works with any build environment, can instrument third-party libraries without source code, etc. But also comes at a cost; Runs slower than e.g. AddressSanitizer and can generally not detect out-of-bounds access to buffers on stack. Size of stack buffers not visible in machine code 18

19 Fuzzing web applications Errors are often on a higher abstraction level compared to e.g. simple coding errors leading to buffer overflows No hardware support for detecting faults i.e. program doesn t crash when something bad happens. Several additional challenges when fuzzing web applications: Determining inputs Assessing results (detecting faults) 19

20 Web application input vectors Inputs much more diverse than e.g. a file or a TCP connection: Form fields (name-value pairs and hidden fields) URL (names of pages and directories) HTTP headers Cookies Uploaded files AJAX How to identify inputs? Manually Using an automated crawler tries to visit all links and map out the web application 20

21 Web application input generation How to fuzz? XSS: Try including script tags SQL injection: Try supplying SQL-injection attack strings Try accessing resources that should require authentication 21

22 Assessing results of web app fuzzing Automatically detecting faults generally much harder than for native programs running on the CPU! Often requires abstract understanding of what is correct behavior For example: Detecting CSRF errors requires knowledge of what resources are supposed to be protected Difficult to cut the human out of the loop completely! 22

23 Assessing results of web app fuzzing Typical things to look for: Server errors Error messages (requires ad-hoc parsing of responses) Error codes (5xx errors, etc.) Signs of input (e.g. JavaScript) in responses Possible for reflected XSS Much harder for stored XSS! Error messages or SQL output indicating SQL-injection problems 23

24 Limitations of fuzz testing Many programs have an infinite input space and state space - Combinatorial explosion! Conceptually a simple idea, but many subtle practical challenges Difficult to create a truly generic fuzzing framework that can cater for all possible input formats. For best results often necessary to write a custom fuzzer for each particular SUT. (Semi)randomly generated inputs are very unlikely to trigger certain faults. 24

25 Limitations of fuzz testing Example from first lecture on vulnerabilities char buffer[100]; if(strlen(input) > 100) { printf( String too long! ); exit(1); } strcpy(buffer, input); The off-by-one error will only be detected if strlen(input) == 100 Very unlikely to trigger this bug using black-box fuzz testing! 25

26 Fuzzing outlook Mutation-based fuzzing can typically only find the low-hanging fruit shallow bugs that are easy to find Generation-based fuzzers almost invariably gives better coverage, but requires much more manual effort Current research in fuzzing attempts to combine the fire and forget nature of mutation-based fuzzing and the coverage of generation-based. Evolutionary fuzzing combines mutation with genetic algorithms to try to learn the input format automatically. Recent successful example is American Fuzzy Lop (AFL) Whitebox fuzzing generates test cases based on the control-flow structure of the SUT. Our next topic 26

27 Symbolic execution for program testing Recall symbolic execution: Encode a program path as a query to a SAT/SMT solver Have the solver find satisfying assignments In the lab you manually encoded paths as queries to a SMT solver. Of course also possible to perform this encoding automatically. 27

28 Concolic testing Idea: Combine concrete and symbolic execution Concolic execution (CONCrete and symbolic) Concolic execution workflow: 1. Execute the program for real on some input, and record path taken. 2. Encode path as query to SMT solver and negate one branch condition 3. Ask the solver to find new satisfying input that will give a different path Reported bugs are always accompanied by an input that triggers the bug (generated by SMT solver) Complete Reported bugs are always real bugs 28

29 Concolic testing small example void wheather(int temperature, unsigned int precipitation) { char forecast[5]; if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); } Buffer overflow!... 29

30 Concolic testing small example void wheather(int temperature, unsigned int precipitation ) { char forecast[5]; First round: if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); } Concrete inputs (arbitrary): temperature=1, precipitation=1 Recorded path constraints: temperature > 0 precipitation > 0 New path constraint: temperature > 0 (precipitation > 0) Solution from solver: temperature=1, precipitation=

31 Concolic testing small example void wheather(int temperature, unsigned int precipitation ) { char forecast[5]; Second round: if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); } Note: precipitation is unconstrained no need to care about later branch conditions when... negating an earlier condition. Concrete inputs: temperature=1, precipitation=0 Recorded path constraints: temperature > 0 (precipitation > 0) New path constraint: (temperature > 0) Solution from solver: temperature=0, precipitation=0 31

32 Concolic testing small example void wheather(int temperature, unsigned int precipitation ) { char forecast[5]; Third round: if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); } Concrete inputs: temperature=0, precipitation=0 Recorded path constraints: (temperature > 0) precipitation = 0 New path constraint: (temperature > 0) (precipitation = 0) Solution from solver: temperature=0, precipitation=

33 Concolic testing small example void wheather(int temperature, unsigned int precipitation ) { char forecast[5]; Fourth round: if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); }... Concrete inputs: temperature=0, precipitation=1 Recorded path constraints: (temperature > 0) (precipitation = 0) (precipitation > 20) New path constraint: (temperature > 0) (precipitation = 0) precipitation > 20 Solution from solver: temperature=0, precipitation=21 33

34 Concolic testing small example void wheather(int temperature, unsigned int precipitation ) { char forecast[5]; Fifth round: if(temperature > 0) { if(precipitation > 0) strcpy(forecast, rain ); else strcpy(forecast, nice ); } else { if(precipitation == 0) strcpy(forecast, cold ); else if(precipitation > 20) strcpy(forecast, blizzard ); else strcpy(forecast, snow ); } Concrete inputs: temperature=0, precipitation=21 Recorded path constraints: (temperature > 0) (precipitation = 0) precipitation > 20 Bug found!... 34

35 Challenges with concolic testing: Path explosion Number of paths increase exponentially with number of branches Most real-world programs have an infinite state space! For example, number of loop iterations may depend on size of input Not possible to explore all paths Need a strategy to explore interesting parts of the program 37

36 Challenges with concolic testing: Path explosion Depth-first search (as in the first example) will easily get stuck in one part of the program May e.g. keep exploring the same loop with more and more iterations Breadth-first search will take a very long time to reach deep states May take forever to reach the buggy code Try smarter ways of exploring the program state space May want to try to run loops many times to uncover possible buffer overflows but also want to maximize coverage of different parts of the program 38

37 Generational search ( whitebox fuzzing ) The Microsoft SAGE system implements whitebox fuzzing Performs concolic testing, but prioritizes paths based on how much they improve coverage Results can be assessed similar to black-box fuzzing (with dynamic analysis tools, etc.) Search algorithm outline: 1. Run program on concrete seed input and record path constraint 2. For each branch condition: I. Negate condition and keep the earlier conditions unchanged. II. III. Have SMT solver generate new satisfying input and run program with that input. Assign input a score based on how much it improves coverage (I.e. how much previously unseen code will be executed with that input) IV. Store input in a global worklist sorted on score 3. Pick input at head of worklist and repeat. 39

38 Rationale for whitebox fuzzing Coverage based heuristic avoids getting stuck as in DFS If one test case executes the exact same code as in a previous test case its score will be 0 Moved to end of worklist Probably never used again Gives sparse but more diverse search of the paths of the program Implements a form of greedy search heuristic For example, loops may only be executed once! Only generates input close to the seed input (cf. mutation-based fuzzing) Will try to explore the weird corner cases in code exercised by seed input Choice of seed input important for good coverage 45

39 Rationale for whitebox fuzzing Has proven to work well in practice Used in production at Microsoft to test e.g. Windows, Office, etc. prior to release Has uncovered many serious vulnerabilities that was missed by other approaches (black-box fuzzing, static analysis, etc.) Interestingly, SAGE works directly at the machine-code level Note: Source code not needed for concolic execution sufficient to collect constraints from one concrete sequence of machine-code instructions. Avoids hassle with different build environments, third-party libraries, programs written in different languages etc. but sacrifices some coverage due to additional approximations needed when working on machine code 46

40 Limitations of concolic testing The success of concolic testing is due to the massive improvement in SAT/SMT solvers during the last two decades. Main bottleneck is still often the solvers. Black-box fuzzing can perform a much larger number of test cases per time unit may be more time efficient for shallow bugs. Solving SAT/SMT problems is NP-complete. Solvers like e.g. Z3 use various tricks to speed up common cases but may take unacceptably long time to solve certain path constraints. Solving SMT queries with non-linear arithmetic (multiplication, division, modulo, etc.) is an undecidable problem in general. But since programs typically use fixed-precision data types, non-linear arithmetic is decidable in this special case. 47

41 Limitations of concolic testing If program uses any kind of cryptography, symbolic execution will typically fail. Consider previous checksum example: CRC32 is linear and reversible solver can repair checksum if rest of data is modified.... // Compute checksum for rest of data computed_checksum = CRC32(data + 4, size 4); // Error if checksums don t match if(computed_checksum!= saved_checksum) return ERR_CODE;... What if program used e.g. md5 or SHA256 here instead? Solver would get stuck trying to solve this constraint! Generation-based fuzzing could handle this without problem! 48

42 Greybox fuzzing Probability of hitting a deep level of the code decreases exponentially with the depth of the code for mutation based fuzzing. Similarly, the time required for solving an SMT query is high, and increases exponentially with the depth of the path constraint. Black-box fuzzing is too dumb and whitebox fuzzing may be too smart Idea of greybox fuzzing is to find a sweet spot in between. if(condtion1) if(condtion2) if(condtion3) if(condtion4) bug(); Mutational fuzzer would need to guess correct values of all four condtions in one go to reach bug! 49

43 Greybox fuzzing Instead of recording full path constraint (as in whitebox fuzzing), record light-weight coverage information to guide fuzzing. Use evolutionary algorithms to learn input format. American Fuzzy Lop (AFL) is considered the current state-of-the art in fuzzing. Performs regular mutation-based fuzzing (using several different strategies) and measures code coverage. Every generated input that resulted in any new coverage is saved and later re-fuzzed This extremely simple evolutionary algorithm allows AFL to gradually learn how to reach deeper parts of the program. Also highly optimized for speed can reach several thousand test cases per second. This often beats smarter (and slower) methods like whitebox fuzzing! Has found hundreds of serious vulnerabilities in open-source programs! 50

44 Conclusions Fuzzing Black-box testing method. Semi-random input generation. Despite being a brute-force, somewhat ad-hoc approach to security testing, experience has shown that it improves security in practice. Concolic testing White-box testing method. Input generated from control-structure of code to systematically explore different paths of the program. Some in-house and academic implementations exist, but some challenges left to solve before widespread adoption. Greybox fuzzing Coverage-guided semi-random input generation. High speed sometimes beats e.g. concolic testing, but shares some limitations with mutation-based fuzzing (e.g. magic constants, checksums) 51

45 Conclusions Test cases generated automatically, either semi-randomly or from structure of code Test cases not based on requirements Pro: Not biased by developers view of how things should work, can uncover unsound assumptions or corner cases not covered by specification. Con: Fuzzing and concolic testing mostly suited for finding implementation errors, e.g. buffer overflows, arithmetic overflows, etc. Generally hard to test for high-level errors in requirements and design using these methods 52

46 Conclusions Different methods are good at finding different kinds of bugs, but none is a silver bullet. Fuzzing cannot be the only security assurance method used! Static analysis Manual reviews (code, design documents, etc.) Regular unit/integration/system testing! 53

CSE 565 Computer Security Fall 2018

CSE 565 Computer Security Fall 2018 CSE 565 Computer Security Fall 2018 Lecture 16: Building Secure Software Department of Computer Science and Engineering University at Buffalo 1 Review A large number of software vulnerabilities various

More information

Automated Whitebox Fuzz Testing. by - Patrice Godefroid, - Michael Y. Levin and - David Molnar

Automated Whitebox Fuzz Testing. by - Patrice Godefroid, - Michael Y. Levin and - David Molnar Automated Whitebox Fuzz Testing by - Patrice Godefroid, - Michael Y. Levin and - David Molnar OUTLINE Introduction Methods Experiments Results Conclusion Introduction Fuzz testing is an effective Software

More information

logistics: ROP assignment

logistics: ROP assignment bug-finding 1 logistics: ROP assignment 2 2013 memory safety landscape 3 2013 memory safety landscape 4 different design points memory safety most extreme disallow out of bounds usually even making out-of-bounds

More information

Software Vulnerability

Software Vulnerability Software Vulnerability Refers to a weakness in a system allowing an attacker to violate the integrity, confidentiality, access control, availability, consistency or audit mechanism of the system or the

More information

Software security, secure programming

Software security, secure programming Software security, secure programming Fuzzing and Dynamic Analysis Master on Cybersecurity Master MoSiG Academic Year 2017-2018 Outline Fuzzing (or how to cheaply produce useful program inputs) A concrete

More information

CS 161 Computer Security

CS 161 Computer Security Popa & Wagner Spring 2016 CS 161 Computer Security Homework 2 Due: Monday, February 22nd, at 11:59pm Instructions. This homework is due Monday, February 22nd, at 11:59pm. It must be submitted electronically

More information

Copyright 2015 MathEmbedded Ltd.r. Finding security vulnerabilities by fuzzing and dynamic code analysis

Copyright 2015 MathEmbedded Ltd.r. Finding security vulnerabilities by fuzzing and dynamic code analysis Finding security vulnerabilities by fuzzing and dynamic code analysis Security Vulnerabilities Top code security vulnerabilities don t change much: Security Vulnerabilities Top code security vulnerabilities

More information

Static Analysis and Bugfinding

Static Analysis and Bugfinding Static Analysis and Bugfinding Alex Kantchelian 09/12/2011 Last week we talked about runtime checking methods: tools for detecting vulnerabilities being exploited in deployment. So far, these tools have

More information

Simple Overflow. #include <stdio.h> int main(void){ unsigned int num = 0xffffffff;

Simple Overflow. #include <stdio.h> int main(void){ unsigned int num = 0xffffffff; Simple Overflow 1 #include int main(void){ unsigned int num = 0xffffffff; printf("num is %d bits long\n", sizeof(num) * 8); printf("num = 0x%x\n", num); printf("num + 1 = 0x%x\n", num + 1); }

More information

Test Automation. 20 December 2017

Test Automation. 20 December 2017 Test Automation 20 December 2017 The problem of test automation Testing has repetitive components, so automation is justified The problem is cost-benefit evaluation of automation [Kaner] Time for: test

More information

Three Important Testing Questions

Three Important Testing Questions Testing Part 2 1 Three Important Testing Questions How shall we generate/select test cases? Did this test execution succeed or fail? How do we know when we ve tested enough? 65 1. How do we know when we

More information

It was a dark and stormy night. Seriously. There was a rain storm in Wisconsin, and the line noise dialing into the Unix machines was bad enough to

It was a dark and stormy night. Seriously. There was a rain storm in Wisconsin, and the line noise dialing into the Unix machines was bad enough to 1 2 It was a dark and stormy night. Seriously. There was a rain storm in Wisconsin, and the line noise dialing into the Unix machines was bad enough to keep putting garbage characters into the command

More information

Information page for written examinations at Linköping University

Information page for written examinations at Linköping University Information page for written examinations at Linköping University Examination date 2017-08-23 Room (1) Time 8-12 Course code Exam code Course name Exam name Department Number of questions in the examination

More information

Fuzzing: Breaking software in an automated fashion

Fuzzing: Breaking software in an automated fashion Fuzzing: Breaking software in an automated fashion Ilja van Sprundel December 8, 2005 1 Introduction Fuzzing is the art of automatic bug finding. This is done by providing an application with semi-valid

More information

Symbolic Execution. Wei Le April

Symbolic Execution. Wei Le April Symbolic Execution Wei Le 2016 April Agenda What is symbolic execution? Applications History Interal Design: The three challenges Path explosion Modeling statements and environments Constraint solving

More information

Symbolic and Concolic Execution of Programs

Symbolic and Concolic Execution of Programs Symbolic and Concolic Execution of Programs Information Security, CS 526 Omar Chowdhury 10/7/2015 Information Security, CS 526 1 Reading for this lecture Symbolic execution and program testing - James

More information

Information page for written examinations at Linköping University

Information page for written examinations at Linköping University Information page for written examinations at Linköping University Examination date 2016-08-24 Room (1) TER4 Time 8-12 Course code Exam code Course name Exam name Department Number of questions in the examination

More information

CSC 405 Introduction to Computer Security Fuzzing

CSC 405 Introduction to Computer Security Fuzzing CSC 405 Introduction to Computer Security Fuzzing Alexandros Kapravelos akaprav@ncsu.edu Let s find some bugs (again) We have a potentially vulnerable program The program has some inputs which can be controlled

More information

Rabbit in the Loop. A primer on feedback directed fuzzing using American Fuzzy Lop. by Kevin Läufer

Rabbit in the Loop. A primer on feedback directed fuzzing using American Fuzzy Lop. by Kevin Läufer Rabbit in the Loop A primer on feedback directed fuzzing using American Fuzzy Lop Abstract by Kevin Läufer This guide aims to provide the reader with a good intuition about the

More information

Computer Security Course. Midterm Review

Computer Security Course. Midterm Review Computer Security Course. Dawn Song Midterm Review In class: Logistics On time: 4:10-5:30pm Wed 1 8x11 page cheat sheet allowed Special requirements: see TA Part I, II, III Scope Software Security Secure

More information

Analysis/Bug-finding/Verification for Security

Analysis/Bug-finding/Verification for Security Analysis/Bug-finding/Verification for Security VIJAY GANESH University of Waterloo Winter 2013 Analysis/Test/Verify for Security Instrument code for testing Heap memory: Purify Perl tainting (information

More information

KLEE Workshop Feeding the Fuzzers. with KLEE. Marek Zmysłowski MOBILE SECURITY TEAM R&D INSTITUTE POLAND

KLEE Workshop Feeding the Fuzzers. with KLEE. Marek Zmysłowski MOBILE SECURITY TEAM R&D INSTITUTE POLAND Feeding the Fuzzers with KLEE Marek Zmysłowski MOBILE SECURITY TEAM R&D INSTITUTE POLAND This presentation was created with help and commitment of the Samsung R&D Poland Mobile Security team. KLEE and

More information

Low level security. Andrew Ruef

Low level security. Andrew Ruef Low level security Andrew Ruef What s going on Stuff is getting hacked all the time We re writing tons of software Often with little regard to reliability let alone security The regulatory environment

More information

Buffer overflow background

Buffer overflow background and heap buffer background Comp Sci 3600 Security Heap Outline and heap buffer Heap 1 and heap 2 3 buffer 4 5 Heap Outline and heap buffer Heap 1 and heap 2 3 buffer 4 5 Heap Address Space and heap buffer

More information

Information page for written examinations at Linköping University

Information page for written examinations at Linköping University Information page for written examinations at Linköping University Examination date 2017-01-14 Room (1) Time 8-12 Course code Exam code Course name Exam name Department Number of questions in the examination

More information

Software Security IV: Fuzzing

Software Security IV: Fuzzing 1 Software Security IV: Fuzzing Chengyu Song Slides modified from Dawn Song 2 Administrivia Homework1 Due: Friday Oct 27 11:59pm Questions regarding reading materials Talk Security R&D in a Security Company:

More information

Fuzzing. compass-security.com 1

Fuzzing. compass-security.com 1 Fuzzing compass-security.com 1 Fuzzing Finding bugs by bombarding target with nonconform data Think: Flip a few bits in a PDF, then start Acrobat with that PDF Just more automated Steps: Create input corpus

More information

Introduction to Symbolic Execution

Introduction to Symbolic Execution Introduction to Symbolic Execution Classic Symbolic Execution 1 Problem 1: Infinite execution path Problem 2: Unsolvable formulas 2 Problem 3: symbolic modeling External function calls and system calls

More information

Reverse Engineering. Class 6. Fuzzing. Reverse Engineering Class 6 Martin Balao martin.uy/reverse v1.0 EN CC BY-SA

Reverse Engineering. Class 6. Fuzzing. Reverse Engineering Class 6 Martin Balao martin.uy/reverse v1.0 EN CC BY-SA Reverse Engineering Class 6 Fuzzing 1 Fuzzing Grey box testing May be guided by reverse engineering Send, in an automatized way, valid and invalid inputs to an application with the goal of triggering bad

More information

Fuzzing. Abstract. What is Fuzzing? Fuzzing. Daniel Basáez S. January 22, 2009

Fuzzing. Abstract. What is Fuzzing? Fuzzing. Daniel Basáez S.  January 22, 2009 Fuzzing Daniel Basáez S. dbasaez@inf.utfsm.cl dbasaez@stud.fh-offenburg.de January 22, 2009 Abstract Fuzzing is a technique for Testing, and is very effective for finding security vulnerabilities in software.

More information

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized

More information

C and C++ Secure Coding 4-day course. Syllabus

C and C++ Secure Coding 4-day course. Syllabus C and C++ Secure Coding 4-day course Syllabus C and C++ Secure Coding 4-Day Course Course description Secure Programming is the last line of defense against attacks targeted toward our systems. This course

More information

Taking White Hats to the Laundry: How to Strengthen Testing in Common Criteria

Taking White Hats to the Laundry: How to Strengthen Testing in Common Criteria Taking White Hats to the Laundry: How to Strengthen Testing in Common Criteria Apostol Vassilev, Principal Consultant September 23,2009. Product Testing in Common Criteria Product Testing in Common Criteria

More information

1.1 For Fun and Profit. 1.2 Common Techniques. My Preferred Techniques

1.1 For Fun and Profit. 1.2 Common Techniques. My Preferred Techniques 1 Bug Hunting Bug hunting is the process of finding bugs in software or hardware. In this book, however, the term bug hunting will be used specifically to describe the process of finding security-critical

More information

Lecture 4 September Required reading materials for this class

Lecture 4 September Required reading materials for this class EECS 261: Computer Security Fall 2007 Lecture 4 September 6 Lecturer: David Wagner Scribe: DK Moon 4.1 Required reading materials for this class Beyond Stack Smashing: Recent Advances in Exploiting Buffer

More information

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 15 Testing Where we are Some very basic software engineering topics in the midst of tools Today: testing (how, why, some terms) Later:

More information

In-Memory Fuzzing in JAVA

In-Memory Fuzzing in JAVA Your texte here. In-Memory Fuzzing in JAVA 2012.12.17 Xavier ROUSSEL Summary I. What is Fuzzing? Your texte here. Introduction Fuzzing process Targets Inputs vectors Data generation Target monitoring Advantages

More information

Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach. Moonzoo Kim

Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach. Moonzoo Kim Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach Moonzoo Kim Contents Automated Software Analysis Techniques Background Concolic testing process Example of concolic

More information

Budapest, October 2016 FUZZ TESTING ITS. Presented by Jürgen Großmann and Dorian Knoblauch. All rights reserved

Budapest, October 2016 FUZZ TESTING ITS. Presented by Jürgen Großmann and Dorian Knoblauch. All rights reserved Budapest, 26-28 October 2016 FUZZ TESTING ITS Presented by Jürgen Großmann and Dorian Knoblauch All rights reserved OVERVIEW AND GENERAL CONSIDERATIONS Why should Fuzz Testing be applied to ITS? All rights

More information

Automatizing vulnerability research

Automatizing vulnerability research Innova&on & Research Symposium Cisco and Ecole Polytechnique 8-9 April 2018 CEDRIC TESSIER INSTRUMENTATION TEAM LEADER / ctessier@quarkslab.com Automatizing vulnerability research to better face new software

More information

How to Break Software by James Whittaker

How to Break Software by James Whittaker How to Break Software by James Whittaker CS 470 Practical Guide to Testing Consider the system as a whole and their interactions File System, Operating System API Application Under Test UI Human invokes

More information

Attacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14

Attacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14 Attacks Against Websites 3 The OWASP Top 10 Tom Chothia Computer Security, Lecture 14 OWASP top 10. The Open Web Application Security Project Open public effort to improve web security: Many useful documents.

More information

OWASP 5/07/09. The OWASP Foundation OWASP Static Analysis (SA) Track Session 1: Intro to Static Analysis

OWASP 5/07/09. The OWASP Foundation  OWASP Static Analysis (SA) Track Session 1: Intro to Static Analysis Static Analysis (SA) Track Session 1: Intro to Static Analysis Eric Dalci Cigital edalci at cigital dot com 5/07/09 Copyright The Foundation Permission is granted to copy, distribute and/or modify this

More information

Overview AEG Conclusion CS 6V Automatic Exploit Generation (AEG) Matthew Stephen. Department of Computer Science University of Texas at Dallas

Overview AEG Conclusion CS 6V Automatic Exploit Generation (AEG) Matthew Stephen. Department of Computer Science University of Texas at Dallas CS 6V81.005 Automatic Exploit Generation (AEG) Matthew Stephen Department of Computer Science University of Texas at Dallas February 20 th, 2012 Outline 1 Overview Introduction Considerations 2 AEG Challenges

More information

Application Security through a Hacker s Eyes James Walden Northern Kentucky University

Application Security through a Hacker s Eyes James Walden Northern Kentucky University Application Security through a Hacker s Eyes James Walden Northern Kentucky University waldenj@nku.edu Why Do Hackers Target Web Apps? Attack Surface A system s attack surface consists of all of the ways

More information

Black Hat Webcast Series. C/C++ AppSec in 2014

Black Hat Webcast Series. C/C++ AppSec in 2014 Black Hat Webcast Series C/C++ AppSec in 2014 Who Am I Chris Rohlf Leaf SR (Security Research) - Founder / Consultant BlackHat Speaker { 2009, 2011, 2012 } BlackHat Review Board Member http://leafsr.com

More information

Security Testing. John Slankas

Security Testing. John Slankas Security Testing John Slankas jbslanka@ncsu.edu Course Slides adapted from OWASP Testing Guide v4 CSC 515 Software Security What is Security Testing? Validate security controls operate as expected What

More information

Foreword by Katie Moussouris... Acknowledgments... xvii. Introduction...xix. Chapter 1: The Basics of Networking... 1

Foreword by Katie Moussouris... Acknowledgments... xvii. Introduction...xix. Chapter 1: The Basics of Networking... 1 Brief Contents Foreword by Katie Moussouris.... xv Acknowledgments... xvii Introduction...xix Chapter 1: The Basics of Networking... 1 Chapter 2: Capturing Application Traffic... 11 Chapter 3: Network

More information

Other array problems. Integer overflow. Outline. Integer overflow example. Signed and unsigned

Other array problems. Integer overflow. Outline. Integer overflow example. Signed and unsigned Other array problems CSci 5271 Introduction to Computer Security Day 4: Low-level attacks Stephen McCamant University of Minnesota, Computer Science & Engineering Missing/wrong bounds check One unsigned

More information

CNIT 129S: Securing Web Applications. Ch 12: Attacking Users: Cross-Site Scripting (XSS) Part 2

CNIT 129S: Securing Web Applications. Ch 12: Attacking Users: Cross-Site Scripting (XSS) Part 2 CNIT 129S: Securing Web Applications Ch 12: Attacking Users: Cross-Site Scripting (XSS) Part 2 Finding and Exploiting XSS Vunerabilities Basic Approach Inject this string into every parameter on every

More information

CSE 565 Computer Security Fall 2018

CSE 565 Computer Security Fall 2018 CSE 565 Computer Security Fall 2018 Lecture 15: Software Security II Department of Computer Science and Engineering University at Buffalo 1 Software Vulnerabilities Buffer overflow vulnerabilities account

More information

CS 161 Computer Security

CS 161 Computer Security Paxson Spring 2017 CS 161 Computer Security Midterm 1 Print your name:, (last) (first) I am aware of the Berkeley Campus Code of Student Conduct and acknowledge that any academic misconduct will be reported

More information

CS 161 Computer Security

CS 161 Computer Security Paxson Spring 2017 CS 161 Computer Security Discussion 2 Question 1 Software Vulnerabilities (15 min) For the following code, assume an attacker can control the value of basket passed into eval basket.

More information

VUzzer: Application-Aware Evolutionary Fuzzing

VUzzer: Application-Aware Evolutionary Fuzzing VUzzer: Application-Aware Evolutionary Fuzzing Sanjay Rawat, Vivek Jain, Ashish Kumar, Lucian Cocojar, Cristiano Giuffrida, Herbert Bos (Presenter: Dennis Andriesse ) Vrije Universiteit Amsterdam IIIT

More information

Control Flow Hijacking Attacks. Prof. Dr. Michael Backes

Control Flow Hijacking Attacks. Prof. Dr. Michael Backes Control Flow Hijacking Attacks Prof. Dr. Michael Backes Control Flow Hijacking malicious.pdf Contains bug in PDF parser Control of viewer can be hijacked Control Flow Hijacking Principles Normal Control

More information

Secure Programming I. Steven M. Bellovin September 28,

Secure Programming I. Steven M. Bellovin September 28, Secure Programming I Steven M. Bellovin September 28, 2014 1 If our software is buggy, what does that say about its security? Robert H. Morris Steven M. Bellovin September 28, 2014 2 The Heart of the Problem

More information

CSE 127 Computer Security

CSE 127 Computer Security CSE 127 Computer Security Alex Gantman, Spring 2018, Lecture 19 SDLC: Secure Development Lifecycle Defining Security Security is not a functionality feature Most of computer science is about providing

More information

Structure-aware fuzzing

Structure-aware fuzzing Structure-aware fuzzing for real-world projects Réka Kovács Eötvös Loránd University, Hungary rekanikolett@gmail.com 1 Overview tutorial, no groundbreaking discoveries Motivation growing code size -> growing

More information

Applications. Cloud. See voting example (DC Internet voting pilot) Select * from userinfo WHERE id = %%% (variable)

Applications. Cloud. See voting example (DC Internet voting pilot) Select * from userinfo WHERE id = %%% (variable) Software Security Requirements General Methodologies Hardware Firmware Software Protocols Procedure s Applications OS Cloud Attack Trees is one of the inside requirement 1. Attacks 2. Evaluation 3. Mitigation

More information

Brave New 64-Bit World. An MWR InfoSecurity Whitepaper. 2 nd June Page 1 of 12 MWR InfoSecurity Brave New 64-Bit World

Brave New 64-Bit World. An MWR InfoSecurity Whitepaper. 2 nd June Page 1 of 12 MWR InfoSecurity Brave New 64-Bit World Brave New 64-Bit World An MWR InfoSecurity Whitepaper 2 nd June 2010 2010-06-02 Page 1 of 12 Abstract Abstract Memory requirements on server and desktop systems have risen considerably over the past few

More information

Software Testing CS 408. Lecture 6: Dynamic Symbolic Execution and Concolic Testing 1/30/18

Software Testing CS 408. Lecture 6: Dynamic Symbolic Execution and Concolic Testing 1/30/18 Software Testing CS 408 Lecture 6: Dynamic Symbolic Execution and Concolic Testing 1/30/18 Relevant Papers CUTE: A Concolic Unit Testing Engine for C Koushik Sen, Darko Marinov, Gul Agha Department of

More information

CS 103 Lab The Files are *In* the Computer

CS 103 Lab The Files are *In* the Computer CS 103 Lab The Files are *In* the Computer 1 Introduction In this lab you will modify a word scramble game so that instead of using a hardcoded word list, it selects a word from a file. You will learn

More information

Buffer overflow prevention, and other attacks

Buffer overflow prevention, and other attacks Buffer prevention, and other attacks Comp Sci 3600 Security Outline 1 2 Two approaches to buffer defense Aim to harden programs to resist attacks in new programs Run time Aim to detect and abort attacks

More information

Multi-trace Concolic Execution Framework

Multi-trace Concolic Execution Framework Multi-trace Concolic Execution Framework Kyel Ok, Joonwon Choi, and Chanwoo Chung {kyelok, joonwonc, cwchung}@mit.edu 1 Introduction Concolic execution is a powerful tool to automatically detect bugs that

More information

NET 311 INFORMATION SECURITY

NET 311 INFORMATION SECURITY NET 311 INFORMATION SECURITY Networks and Communication Department Lec12: Software Security / Vulnerabilities lecture contents: o Vulnerabilities in programs Buffer Overflow Cross-site Scripting (XSS)

More information

Why bother? Default configurations Buffer overflows Authentication mechanisms Reverse engineering Questions?

Why bother? Default configurations Buffer overflows Authentication mechanisms Reverse engineering Questions? Jeroen van Beek 1 Why bother? Default configurations Buffer overflows Authentication mechanisms Reverse engineering Questions? 2 Inadequate OS and application security: Data abuse Stolen information Bandwidth

More information

Limitations of the stack

Limitations of the stack The heap hic 1 Limitations of the stack int *table_of(int num, int len) { int table[len+1]; for (int i=0; i

More information

Secure Software Development: Theory and Practice

Secure Software Development: Theory and Practice Secure Software Development: Theory and Practice Suman Jana MW 2:40-3:55pm 415 Schapiro [SCEP] *Some slides are borrowed from Dan Boneh and John Mitchell Software Security is a major problem! Why writing

More information

Finding Vulnerabilities in Source Code

Finding Vulnerabilities in Source Code Finding Vulnerabilities in Source Code Jason Miller CSCE 813 Fall 2012 Outline Approaches to code review Signatures of common vulnerabilities Language-independent considerations Tools for code browsing

More information

CIS 700/002 : Special Topics : OWASP ZED (ZAP)

CIS 700/002 : Special Topics : OWASP ZED (ZAP) CIS 700/002 : Special Topics : OWASP ZED (ZAP) Hitali Sheth CIS 700/002: Security of EMBS/CPS/IoT Department of Computer and Information Science School of Engineering and Applied Science University of

More information

Software Security: Misc and Principles

Software Security: Misc and Principles CSE 484 / CSE M 584: Computer Security and Privacy Software Security: Misc and Principles Spring 2015 Franziska (Franzi) Roesner franzi@cs.washington.edu Thanks to Dan Boneh, Dieter Gollmann, Dan Halperin,

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #29 Arrays in C (Refer Slide Time: 00:08) This session will learn about arrays in C. Now, what is the word array

More information

CSE484/CSE584 BLACK BOX TESTING AND FUZZING. Dr. Benjamin Livshits

CSE484/CSE584 BLACK BOX TESTING AND FUZZING. Dr. Benjamin Livshits CSE484/CSE584 BLACK BOX TESTING AND FUZZING Dr. Benjamin Livshits Approaches to Finding Security Bugs 2 Runtime Monitoring Black-box Testing Static Analysis Fuzzing Basics 3 A form of vulnerability analysis

More information

CS 31: Introduction to Computer Systems. 03: Binary Arithmetic January 29

CS 31: Introduction to Computer Systems. 03: Binary Arithmetic January 29 CS 31: Introduction to Computer Systems 03: Binary Arithmetic January 29 WiCS! Swarthmore Women in Computer Science Slide 2 Today Binary Arithmetic Unsigned addition Subtraction Representation Signed magnitude

More information

CS 161 Computer Security

CS 161 Computer Security Paxson Spring 2011 CS 161 Computer Security Discussion 1 January 26, 2011 Question 1 Buffer Overflow Mitigations Buffer overflow mitigations generally fall into two categories: (i) eliminating the cause

More information

Lecture 4: Threats CS /5/2018

Lecture 4: Threats CS /5/2018 Lecture 4: Threats CS 5430 2/5/2018 The Big Picture Attacks are perpetrated by threats that inflict harm by exploiting vulnerabilities which are controlled by countermeasures. Once Upon a Time Bugs "bug":

More information

Model-based Behavioural Fuzzing. Martin Schneider (Fraunhofer FOKUS)

Model-based Behavioural Fuzzing. Martin Schneider (Fraunhofer FOKUS) Model-based Behavioural Fuzzing Martin Schneider (Fraunhofer FOKUS) Outline Introduction to fuzzing Behavioural fuzzing of UML sequence diagrams Test case selection by augmenting the model Conclusions

More information

CYSE 411/AIT 681 Secure Software Engineering. Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun

CYSE 411/AIT 681 Secure Software Engineering. Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun Reading This lecture [McGraw]: Ch. 7-9 2 Seven Touchpoints 1. Code review 2. Architectural

More information

ECE 3574: Applied Software Design: Unit Testing using Catch. Chris Wyatt

ECE 3574: Applied Software Design: Unit Testing using Catch. Chris Wyatt ECE 3574: Applied Software Design: Unit Testing using Catch Chris Wyatt The goal of today s meeting it to learn about a very important part of programming, testing. Unit tests Integration tests Testing

More information

4. Risk-Based Security Testing. Reading. CYSE 411/AIT 681 Secure Software Engineering. Seven Touchpoints. Application of Touchpoints

4. Risk-Based Security Testing. Reading. CYSE 411/AIT 681 Secure Software Engineering. Seven Touchpoints. Application of Touchpoints Reading This lecture [McGraw]: Ch. 7-9 CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun 2 Seven Touchpoints Application of Touchpoints

More information

Testing, Fuzzing, & Symbolic Execution

Testing, Fuzzing, & Symbolic Execution Testing, Fuzzing, & Symbolic Execution Software Testing The most common way of measuring & ensuring correctness Input 2 Software Testing The most common way of measuring & ensuring correctness Input Observed

More information

Web Application & Web Server Vulnerabilities Assessment Pankaj Sharma

Web Application & Web Server Vulnerabilities Assessment Pankaj Sharma Web Application & Web Server Vulnerabilities Assessment Pankaj Sharma Indian Computer Emergency Response Team ( CERT - IN ) Department Of Information Technology 1 Agenda Introduction What are Web Applications?

More information

Identifying Memory Corruption Bugs with Compiler Instrumentations. 이병영 ( 조지아공과대학교

Identifying Memory Corruption Bugs with Compiler Instrumentations. 이병영 ( 조지아공과대학교 Identifying Memory Corruption Bugs with Compiler Instrumentations 이병영 ( 조지아공과대학교 ) blee@gatech.edu @POC2014 How to find bugs Source code auditing Fuzzing Source Code Auditing Focusing on specific vulnerability

More information

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013! Testing Prof. Leon Osterweil CS 520/620 Spring 2013 Relations and Analysis A software product consists of A collection of (types of) artifacts Related to each other by myriad Relations The relations are

More information

DART: Directed Automated Random Testing

DART: Directed Automated Random Testing DART: Directed Automated Random Testing Patrice Godefroid Nils Klarlund Koushik Sen Bell Labs Bell Labs UIUC Presented by Wei Fang January 22, 2015 PLDI 2005 Page 1 June 2005 Motivation Software testing:

More information

CS 161 Computer Security

CS 161 Computer Security Wagner Spring 2014 CS 161 Computer Security Midterm 1 Print your name:, (last) (first) I am aware of the Berkeley Campus Code of Student Conduct and acknowledge that academic misconduct will be reported

More information

Homework 5: Exam Review

Homework 5: Exam Review CIS 331 April 18, 2017 Introduction to Networks & Security Homework 5: Exam Review Homework 5: Exam Review This homework is due Wednesday, April 26 at 10 p.m.. You will have a budget of five late days

More information

Analysis of MS Multiple Excel Vulnerabilities

Analysis of MS Multiple Excel Vulnerabilities Analysis of MS-07-036 Multiple Excel Vulnerabilities I. Introduction This research was conducted using the Office 2003 Excel Viewer application and the corresponding security patch for MS-07-036 - Vulnerabilities

More information

How to perform the DDoS Testing of Web Applications

How to perform the DDoS Testing of Web Applications How to perform the DDoS Testing of Web Applications Peerlyst November 02, 2017 Nasrumminallah Zeeshan (zeeshan@nzwriter.com) A Denial of Service (DoS) attack is consisted of carrying out traffic flooding

More information

MASTER PRAKTIKUM SS18 PROF. DR. ALEXANDER PRETSCHNER SAAHIL OGNAWALA HACKING FUZZERS FOR VULNERABILITY SCANNING

MASTER PRAKTIKUM SS18 PROF. DR. ALEXANDER PRETSCHNER SAAHIL OGNAWALA HACKING FUZZERS FOR VULNERABILITY SCANNING MASTER PRAKTIKUM SS18 PROF. DR. ALEXANDER PRETSCHNER SAAHIL OGNAWALA HACKING FUZZERS FOR VULNERABILITY SCANNING WHO WE ARE Prof. Dr. Alexander Pretschner Chair IV Software and Systems Engineering Saahil

More information

Guarding Vulnerable Code: Module 1: Sanitization. Mathias Payer, Purdue University

Guarding Vulnerable Code: Module 1: Sanitization. Mathias Payer, Purdue University Guarding Vulnerable Code: Module 1: Sanitization Mathias Payer, Purdue University http://hexhive.github.io 1 Vulnerabilities everywhere? 2 Common Languages: TIOBE 18 Jul 2018 Jul 2017 Change Language 1

More information

Memory Safety (cont d) Software Security

Memory Safety (cont d) Software Security Memory Safety (cont d) Software Security CS 161: Computer Security Prof. Raluca Ada Popa January 17, 2016 Some slides credit to David Wagner and Nick Weaver Announcements Discussion sections and office

More information

CS 161 Computer Security

CS 161 Computer Security Paxson Spring 2017 CS 161 Computer Security Discussion 4 Week of February 13, 2017 Question 1 Clickjacking (5 min) Watch the following video: https://www.youtube.com/watch?v=sw8ch-m3n8m Question 2 Session

More information

Static Program Analysis Part 1 the TIP language

Static Program Analysis Part 1 the TIP language Static Program Analysis Part 1 the TIP language http://cs.au.dk/~amoeller/spa/ Anders Møller & Michael I. Schwartzbach Computer Science, Aarhus University Questions about programs Does the program terminate

More information

LAB C Translating Utility Classes

LAB C Translating Utility Classes LAB C Translating Utility Classes Perform the following groups of tasks: LabC1.s 1. Create a directory to hold the files for this lab. 2. Create and run the following two Java classes: public class IntegerMath

More information

advanced data types (2) typedef. today advanced data types (3) enum. mon 23 sep 2002 defining your own types using typedef

advanced data types (2) typedef. today advanced data types (3) enum. mon 23 sep 2002 defining your own types using typedef today advanced data types (1) typedef. mon 23 sep 2002 homework #1 due today homework #2 out today quiz #1 next class 30-45 minutes long one page of notes topics: C advanced data types dynamic memory allocation

More information

Hunting Security Bugs

Hunting Security Bugs Microsoft Hunting Security Bugs * Tom Gallagher Bryan Jeffries Lawrence Landauer Contents at a Glance 1 General Approach to Security Testing 1 2 Using Threat Models for Security Testing 11 3 Finding Entry

More information

Automatic Software Verification

Automatic Software Verification Automatic Software Verification Instructor: Mooly Sagiv TA: Oded Padon Slides from Eran Yahav and the Noun Project, Wikipedia Course Requirements Summarize one lecture 10% one lecture notes 45% homework

More information

Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Quiz I

Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Quiz I Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.858 Fall 2010 Quiz I All problems are open-ended questions. In order to receive credit you must answer

More information

Security Analyses For The Lazy Superhero

Security Analyses For The Lazy Superhero #1 Security Analyses For The Lazy Superhero #2 One-Slide Summary We can statically detect buffer overruns in programs by modeling the space allocated for a buffer and the space used for a buffer. We cannot

More information