Static Taint-Analysis on Binary Executables
|
|
|
- Cathleen Day
- 9 years ago
- Views:
Transcription
1 Static Taint-Analysis on Binary Executables Sanjay Rawat, Laurent Mounier, Marie-Laure Potet VERIMAG University of Grenoble October 2011 Static Taint-Analysis on Binary Executables 1/29
2 Outline 1 Introduction 2 Intra-procedural taint analysis 3 Inter-procedural taint analysis 4 Tool plateform and experimental results 5 Conclusion Static Taint-Analysis on Binary Executables 2/29
3 Context: vulnerability analysis Vulnerable functions VF unsafe library functions (strcpy, memcpy, etc.) or code patterns (unchecked buffer copies, memory de-allocations) critical parts of the code (credential checkings) etc. Vulnerable paths = execution paths allowing to read external inputs (keyboard, network, files, etc.) on a memory location M i call a vulnerable function VF with parameter values depending on M i Static Taint-Analysis on Binary Executables 3/29
4 Vulnerable paths detection based on taint analysis Input: a set of input sources (IS) = tainted data a set of vulnerable functions (VF) Output: a set of tainted paths = tainted data-dependency paths from IS to VF x=is() y := x VF(y) Static Taint-Analysis on Binary Executables 4/29
5 Work objective Staticaly compute vulnerable execution paths: on large applications (several thousands of functions) scalability issues lightweight analysis from binary executable code Evaluation on existing vulnerable code (Firefox, Acroread, MediaPlayer,... ) Links with more general (test related) problems: interprocedural information flow analysis program chopping [T. Reps], impact analysis Static Taint-Analysis on Binary Executables 5/29
6 Outline 1 Introduction 2 Intra-procedural taint analysis 3 Inter-procedural taint analysis 4 Tool plateform and experimental results 5 Conclusion Static Taint-Analysis on Binary Executables 6/29
7 Taint Analysis Identify input dependent variables at each program location Two kinds of dependencies: Data dependencies // x is tainted y = x ; z = y + 1 ; y = 3 ; // z is tainted Control dependencies // x is tainted if (x > 0) y = 3 else y = 4 ; // y is tainted we focus on data dependencies... Static Taint-Analysis on Binary Executables 7/29
8 Static taint data-dependency analysis (classical) data-flow analysis problem: input functions return tainted values constants are untainted forward computation of a set of pairs (v, T ) at each program location: v is a variable T {Tainted, Untainted} is a taint value fix-point computation (backward dependencies inside loops) Main difficulties: memory aliases (pointers) non scalar variables (e.g., arrays) read (T[i]) ;... ; x = T[j] Static Taint-Analysis on Binary Executables 8/29
9 A source-level Example int x, y, z, t ;... read(y) ; read(t) ; y = 3 ; x = t ; z = y ; // x and t are now tainted Static Taint-Analysis on Binary Executables 9/29
10 Taint analysis at the assembly level y at ebp-8, x at ebp-4 and z at ebp-12. y = 3 ;... z = y ; 1: t3 := 3 2: t4 := ebp-8 3: Mem[t4] := t3... 7: t5 := ebp-8 8: t6 := Mem[t5] 9: t7 := ebp-12 10: Mem[t7] := t6 Needs to identify that: value written at ebp-8 mem. loc. written at line 3 content of reg. t4 at line 2 = content of reg. t5 at line 7 compute possible values of each registers and mem. locations... Static Taint-Analysis on Binary Executables 10/29
11 Value Set Analysis (VSA) Compute the sets of mem. addresses defined at each prog. loc. Difficult because: addresses and other values are not distinguishable both direct and indirect memory adresssing address arithmetic is pervasive Compute at each prog. loc. an over-approximation of: the set of (abstract) adresses that are defined the value contained in each register and each abstract address Can be expressed as a forward data-flow analysis... Static Taint-Analysis on Binary Executables 11/29
12 Memory model Memory = (unbounded) set of fix-sized memory cells Memloc = (consecutive) memory cells accessed during load/store ops. Memloc addresses: local variables and parameters offset w.r.t to ebp global variables fixed value dynamically allocated memory return values from malloc However: the exact value of ebp is unknown the value returned by a malloc() is unknown arithmetic computations to access non-scalar variables set of memory locations accessed is unknown statically Static Taint-Analysis on Binary Executables 12/29
13 Abstracting Adresses and Values Abstract address/value = - set of offsets w.r.t. register content at a given instruction - expressed as a pair < B, X > s.t.: B is an (abstract) base value, which can be either a pair (instruction, register) an element of {Empty, None, Any} X is a finite set of integers (X Z). Concrete values represented by < B, X > = if B = Empty (empty value) Z if B = Any (any value) X if B = None (constant value) {v + x x X v concrete val. of t at i} if B = (i, t) Static Taint-Analysis on Binary Executables 13/29
14 Example 1. t0 = ebp + 8 t0 =< (1, ebp), {8} > 2. t1 = Mem[t0] {the content of Mem[t0] is unknown... } t1 =< (2, t1), {0} > 3. t2 = t1 + 4 t2 =< (2, t1), {4} > 4. Mem[t2] = 50 < (2, t1), 4 >=< None, {50} > Static Taint-Analysis on Binary Executables 14/29
15 Intraprocedural VSA as a data-flow analysis Mapping { Register Abstract addresses } Abstract values associated to each CFG node Forward least-fix-point computation: lattice of abstract address/values (more precise less precise) widening operator (set of offsets is bounded) merge operator: least upper bound { < Any, > if B1 B2 < B1, X 1 > < B2, X 2 >= < B1, X 1 X 2 > if B1 = B2 transfer function: abstracts the instruction semantics... Static Taint-Analysis on Binary Executables 15/29
16 Example 1: conditional statement 1 # include <stdio.h> 2 int main () 3 { 4 int x, y=5, z ; 5 if (y <4) { 6 x =3; z =4; 7 } else { 8 x =4; z =3; 9 } ; 10 y=x+z; 11 return z; 12 } ebp = < , {0}> esp = < init, {4}> init-12 = < noval, {6, 7, 8}> init-16 = < noval, {3, 4}> init-8 = < noval, {3, 4}> Static Taint-Analysis on Binary Executables 16/29
17 Example 2: iterative statement 1 # include <stdio.h> 2 int main () 3 { 4 int x=0, i, y; 5 for (i =0; i <4; i ++) { 6 y =6; x=x+i; 7 } 8 return 0; 9 } ebp = < , {0}> esp = init, {4}> initesp-12 = < anyval, {}> initesp-16 = < noval, {6}> initesp-8 = < anyval, {}> Static Taint-Analysis on Binary Executables 17/29
18 Possible improvements use more sophisticated abstract domain? (e.g., stridded intervals?) restrict VSA to registers and memory locations involved in address computations Partially done... take into account the size of memory transfers Static Taint-Analysis on Binary Executables 18/29
19 Outline 1 Introduction 2 Intra-procedural taint analysis 3 Inter-procedural taint analysis 4 Tool plateform and experimental results 5 Conclusion Static Taint-Analysis on Binary Executables 19/29
20 Hypothesis on information flows Inside procedures: assigments: x := y + z From caller to callee: arguments: foo (x, y+12) From callee to caller: return value and pointer to arguments: z = foo (x, &y) And global variables... compute procedure summaries to express these dependencies. Static Taint-Analysis on Binary Executables 20/29
21 A summary-based inter-procedural data-flow analysis intra-procedural level: summary computation express side-effects wrt taintedness and aliases int foo(int x, int *y){ int z; z = x+1 ; *y = z ; return z ; } Summary: x is tainted z is tainted, z and *y are aliases inter-procedural level: apply summaries to effective parameters read(b) ; // taints b a = foo (b+12, &c) ; // a and c are now tainted... Static Taint-Analysis on Binary Executables 21/29
22 A summary-based inter-procedural data-flow analysis intra-procedural level: summary computation express side-effects wrt taintedness and aliases int foo(int x, int *y){ int z; z = x+1 ; *y = z ; return z ; } Summary: x is tainted z is tainted, z and *y are aliases inter-procedural level: apply summaries to effective parameters read(b) ; // taints b a = foo (b+12, &c) ; // a and c are now tainted... Static Taint-Analysis on Binary Executables 21/29
23 Scalability issues Fine-grained data-flow analysis not applicable on large programs needs some aggressive approximations: some deliberate over-approximations (global variables, complex data structures, etc.) consider only data-flow propagation operate at fine-grained level only on a program slice (parts of the code outside the slice either irrelevant or approximated) Static Taint-Analysis on Binary Executables 22/29
24 Slicing the Call Graph Inter-procedural information flow from IS to VF How to reduce the set of procedures to be analysed? A slice computation performed at the call graph level Split this set into 3 parts: 1 procedure that are not relevant 2 procedure those side-effect can be (implicitely) over-approximated use of default summaries... 3 procedure requiring a more detailed analysis summary computation through intra-procedural analysis Static Taint-Analysis on Binary Executables 23/29
25 Outline 1 Introduction 2 Intra-procedural taint analysis 3 Inter-procedural taint analysis 4 Tool plateform and experimental results 5 Conclusion Static Taint-Analysis on Binary Executables 24/29
26 Tool Highlights Based on two existing platforms: IDA Pro, a general purpose disassembler BinNavi: translation to an intermediate representation (REIL) a data-flow analysis engine (MonoREIL) + an additional set of Jython procedures But still under construction/evaluation... Static Taint-Analysis on Binary Executables 25/29
27 Tool Architecture Value Analysis Executable IDA Pro x86 BinNavi REIL Vulnerable Path detection var identification actual param identification VF detection Static Taint-Analysis on Binary Executables 26/29
28 Example of experimental result Name: Fox Player Total functions: 1074 Total vulnerable functions: 48 Total slices found: 16 (5 with a tainted data flow) Smallest slice: 3 func Largest slice: 40 func Average func in slice: 18 About 10 vulnerable paths discovered... Static Taint-Analysis on Binary Executables 27/29
29 Taintflow slice for Foxplayer Example sub_40de sscanf 975 sub_40dd sub_40d sub_4106a0 sub_ sub_40eb80 sub_40eed0 sub_40f6f Static Taint-Analysis on Binary Executables 28/29 ReadFile
30 Conclusion Part of a more complete tool chain for Vulnerability Detection and Exploitability Analysis To be continued within the BinSec ANR project... Static Taint-Analysis on Binary Executables 29/29
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
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
Detecting Software Vulnerabilities Static Taint Analysis
Vérimag - Distributed and Complex System Group Universitatea Politehnica București Detecting Software Vulnerabilities Static Taint Analysis Dumitru CEARĂ Supervisors Marie-Laure POTET, Ph.D, ENSIMAG, Grenoble
Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities (Technical Report)
Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities (Technical Report) Nenad Jovanovic, Christopher Kruegel, Engin Kirda Secure Systems Lab Vienna University of Technology Abstract
Platform-independent static binary code analysis using a metaassembly
Platform-independent static binary code analysis using a metaassembly language Thomas Dullien, Sebastian Porst zynamics GmbH CanSecWest 2009 Overview The REIL Language Abstract Interpretation MonoREIL
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code
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
Address Taken FIAlias, which is equivalent to Steensgaard. CS553 Lecture Alias Analysis II 2
Alias Analysis Last time Alias analysis I (pointer analysis) Address Taken FIAlias, which is equivalent to Steensgaard Today Alias analysis II (pointer analysis) Anderson Emami Next time Midterm review
Review; questions Discussion of Semester Project Arbitrary interprocedural control flow Assign (see Schedule for links)
Class 9 Review; questions Discussion of Semester Project Arbitrary interprocedural control flow Assign (see Schedule for links) Readings on pointer analysis Problem Set 5: due 9/22/09 Project proposal
Static Analysis of Virtualization- Obfuscated Binaries
Static Analysis of Virtualization- Obfuscated Binaries Johannes Kinder School of Computer and Communication Sciences École Polytechnique Fédérale de Lausanne (EPFL), Switzerland Virtualization Obfuscation
1 Classical Universal Computer 3
Chapter 6: Machine Language and Assembler Christian Jacob 1 Classical Universal Computer 3 1.1 Von Neumann Architecture 3 1.2 CPU and RAM 5 1.3 Arithmetic Logical Unit (ALU) 6 1.4 Arithmetic Logical Unit
How To Trace
CS510 Software Engineering Dynamic Program Analysis Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
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
X86-64 Architecture Guide
X86-64 Architecture Guide For the code-generation project, we shall expose you to a simplified version of the x86-64 platform. Example Consider the following Decaf program: class Program { int foo(int
CIS570 Modern Programming Language Implementation. Office hours: TDB 605 Levine [email protected]. [email protected].
CIS570 Modern Programming Language Implementation Instructor: Admin. Assistant: URL: E Christopher Lewis Office hours: TDB 605 Levine [email protected] Cheryl Hickey [email protected] 502
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
General Flow-Sensitive Pointer Analysis and Call Graph Construction
General Flow-Sensitive Pointer Analysis and Call Graph Construction Endre Horváth, István Forgács, Ákos Kiss, Judit Jász and Tibor Gyimóthy University of Szeged 4D Soft Ltd. Aradi Vértanúk tere 1. Soroksári
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
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Why Do Software Assurance Tools Have Problems Finding Bugs Like Heartbleed?
April 22 WP003 2014 Why Do Software Assurance Tools Have Problems Finding Bugs Like Heartbleed? James A. Kupsch and Barton P. Miller University of Wisconsin-Madison In response to the Heartbleed vulnerability,
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
Computer Organization and Architecture
Computer Organization and Architecture Chapter 11 Instruction Sets: Addressing Modes and Formats Instruction Set Design One goal of instruction set design is to minimize instruction length Another goal
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Lecture Notes on Static Analysis
Lecture Notes on Static Analysis Michael I. Schwartzbach BRICS, Department of Computer Science University of Aarhus, Denmark [email protected] Abstract These notes present principles and applications of static
Automated Program Behavior Analysis
Automated Program Behavior Analysis Stacy Prowell [email protected] March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is
Bypassing Browser Memory Protections in Windows Vista
Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov [email protected] [email protected] Setting back browser security by 10 years Part I: Introduction Thesis Introduction
Instruction Set Architecture of Mamba, a New Virtual Machine for Python
Instruction Set Architecture of Mamba, a New Virtual Machine for Python David Pereira and John Aycock Department of Computer Science University of Calgary 2500 University Drive N.W. Calgary, Alberta, Canada
Static analysis for detecting taint-style vulnerabilities in web applications
Journal of Computer Security 18 (2010) 861 907 861 DOI 10.3233/JCS-2009-0385 IOS Press Static analysis for detecting taint-style vulnerabilities in web applications Nenad Jovanovic a, Christopher Kruegel
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.
Stack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX
Overview CISC Developments Over Twenty Years Classic CISC design: Digital VAX VAXÕs RISC successor: PRISM/Alpha IntelÕs ubiquitous 80x86 architecture Ð 8086 through the Pentium Pro (P6) RJS 2/3/97 Philosophy
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
Introduction to Data-flow analysis
Introduction to Data-flow analysis Last Time LULESH intro Typed, 3-address code Basic blocks and control flow graphs LLVM Pass architecture Data dependencies, DU chains, and SSA Today CFG and SSA example
A Survey of Static Program Analysis Techniques
A Survey of Static Program Analysis Techniques Wolfgang Wögerer Technische Universität Wien October 18, 2005 Abstract Computer program analysis is the process of automatically analysing the bahavior of
Linux Kernel. Security Report
Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years
Scalable and Precise Static Analysis of JavaScript Applications via Loop-Sensitivity
Scalable and Precise Static Analysis of JavaScript Applications via Loop-Sensitivity Changhee Park and Sukyoung Ryu Department of Computer Science, KAIST, Daejeon, Republic of Korea {changhee.park,sryu.cs}@kaist.ac.kr
1 External Model Access
1 External Model Access Function List The EMA package contains the following functions. Ema_Init() on page MFA-1-110 Ema_Model_Attr_Add() on page MFA-1-114 Ema_Model_Attr_Get() on page MFA-1-115 Ema_Model_Attr_Nth()
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
Static Error Detection using Semantic Inconsistency Inference
Static Error Detection using Semantic Inconsistency Inference Isil Dillig Thomas Dillig Alex Aiken Computer Science Department Stanford University {isil, tdillig, aiken}@cs.stanford.edu Abstract Inconsistency
SAF: Static Analysis Improved Fuzzing
The Interdisciplinary Center, Herzlia Efi Arazi School of Computer Science SAF: Static Analysis Improved Fuzzing M.Sc. Dissertation Submitted in Partial Fulfillment of the Requirements for the Degree of
Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)
Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking
Upcompiling Legacy Code to Java
Master Thesis Upcompiling Legacy Code to Java Author Urs Fässler Supervisor ETH Zürich UC Irvine Prof. Dr. Thomas Gross Prof. Dr. Michael Franz Dr. Stefan Brunthaler Dr. Per Larsen September 7, 2012 Urs
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
A Comparison Of Shared Memory Parallel Programming Models. Jace A Mogill David Haglin
A Comparison Of Shared Memory Parallel Programming Models Jace A Mogill David Haglin 1 Parallel Programming Gap Not many innovations... Memory semantics unchanged for over 50 years 2010 Multi-Core x86
Software Fingerprinting for Automated Malicious Code Analysis
Software Fingerprinting for Automated Malicious Code Analysis Philippe Charland Mission Critical Cyber Security Section October 25, 2012 Terms of Release: This document is approved for release to Defence
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
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
Efficiency of algorithms. Algorithms. Efficiency of algorithms. Binary search and linear search. Best, worst and average case.
Algorithms Efficiency of algorithms Computational resources: time and space Best, worst and average case performance How to compare algorithms: machine-independent measure of efficiency Growth rate Complexity
Dynamic Spyware Analysis
Dynamic Spyware Analysis Manuel Egele, Christopher Kruegel, Engin Kirda, Heng Yin, and Dawn Song Secure Systems Lab Technical University Vienna {pizzaman,chris,ek}@seclab.tuwien.ac.at Carnegie Mellon University
Binary Code Extraction and Interface Identification for Security Applications
Binary Code Extraction and Interface Identification for Security Applications Juan Caballero Noah M. Johnson Stephen McCamant Dawn Song UC Berkeley Carnegie Mellon University Abstract Binary code reuse
Assembly Language: Function Calls" Jennifer Rexford!
Assembly Language: Function Calls" Jennifer Rexford! 1 Goals of this Lecture" Function call problems:! Calling and returning! Passing parameters! Storing local variables! Handling registers without interference!
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
16.1 MAPREDUCE. For personal use only, not for distribution. 333
For personal use only, not for distribution. 333 16.1 MAPREDUCE Initially designed by the Google labs and used internally by Google, the MAPREDUCE distributed programming model is now promoted by several
Binary storage of graphs and related data
EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics
A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
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
Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
Jakstab: A Static Analysis Platform for Binaries
Jakstab: A Static Analysis Platform for Binaries (Tool Paper) Johannes Kinder and Helmut Veith Technische Universität Darmstadt, 64289 Darmstadt, Germany Abstract. For processing compiled code, model checkers
Dynamic Spyware Analysis
Dynamic Spyware Analysis Manuel Egele, Christopher Kruegel, Engin Kirda Secure Systems Lab Technical University Vienna {pizzaman,chris,ek}@seclab.tuwien.ac.at Heng Yin Carnegie Mellon University and College
I PUC - Computer Science. Practical s Syllabus. Contents
I PUC - Computer Science Practical s Syllabus Contents Topics 1 Overview Of a Computer 1.1 Introduction 1.2 Functional Components of a computer (Working of each unit) 1.3 Evolution Of Computers 1.4 Generations
Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.
Code Generation I Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings: 9.1-9.7 Stack Machines A simple evaluation model No variables
How To Develop A Static Analysis System For Large Programs
Towards the Industrial Scale Development of Custom Static Analyzers John Anton, Eric Bush, Allen Goldberg, Klaus Havelund, Doug Smith, Arnaud Venet Kestrel Technology LLC 4984 El Camino Real #230 Los Altos,
Lecture 2 Introduction to Data Flow Analysis
Lecture 2 Introduction to Data Flow Analysis I. Introduction II. Example: Reaching definition analysis III. Example: Liveness analysis IV. A General Framework (Theory in next lecture) Reading: Chapter
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
Software security assessment based on static analysis
Software security assessment based on static analysis Christèle Faure Séminaire SSI et méthodes formelles Réalisé dans le projet Baccarat cofinancé par l union européenne Context > 200 static tools for
Practical Memory Leak Detection using Guarded Value-Flow Analysis
Practical Memory Leak Detection using Guarded Value-Flow Analysis Sigmund Cherem Lonnie Princehouse Radu Rugina Computer Science Department Cornell University Ithaca, NY 14853 {siggi, lonnie, rugina}@cs.cornell.edu
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,
Intermediate Code. Intermediate Code Generation
Intermediate Code CS 5300 - SJAllan Intermediate Code 1 Intermediate Code Generation The front end of a compiler translates a source program into an intermediate representation Details of the back end
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
Machine-Code Generation for Functions
Machine-Code Generation for Functions Cosmin Oancea [email protected] University of Copenhagen December 2012 Structure of a Compiler Programme text Lexical analysis Binary machine code Symbol sequence
Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
Dynamic Behavior Analysis Using Binary Instrumentation
Dynamic Behavior Analysis Using Binary Instrumentation Jonathan Salwan [email protected] St'Hack Bordeaux France March 27 2015 Keywords: program analysis, DBI, DBA, Pin, concrete execution, symbolic
Class notes Program Analysis course given by Prof. Mooly Sagiv Computer Science Department, Tel Aviv University second lecture 8/3/2007
Constant Propagation Class notes Program Analysis course given by Prof. Mooly Sagiv Computer Science Department, Tel Aviv University second lecture 8/3/2007 Osnat Minz and Mati Shomrat Introduction This
C++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
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
A Formally-Verified C Static Analyzer
A Formally-Verified C Static Analyzer Jacques-Henri Jourdan Inria Paris-Rocquencourt [email protected] Vincent Laporte IRISA and U. Rennes 1 [email protected] Sandrine Blazy IRISA and
Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers
CS 4 Introduction to Compilers ndrew Myers Cornell University dministration Prelim tomorrow evening No class Wednesday P due in days Optional reading: Muchnick 7 Lecture : Instruction scheduling pr 0 Modern
Why? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
An Introduction to Assembly Programming with the ARM 32-bit Processor Family
An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de
