Remote Entrusting by Orthogonal Client Replacement. Ceccato Mariano 1, Mila Dalla Preda 2, Anirban Majumbar 3, Paolo Tonella 1.

Size: px
Start display at page:

Download "Remote Entrusting by Orthogonal Client Replacement. Ceccato Mariano 1, Mila Dalla Preda 2, Anirban Majumbar 3, Paolo Tonella 1."

Transcription

1 Remote Entrusting by Orthogonal Client Replacement Ceccato Mariano, Mila Dalla Preda 2, Anirban Majumbar 3, Paolo Tonella Fondazione Bruno Kessler, Trento, Italy 2 University of Verona, Italy 3 University of Trento, Italy Code integrity problem Orthogonal replacement Obfuscation Code splitting Empirical validation Outline 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 2

2 Remote software trusting Remote software authentication: ensuring a (server) that an un-trusted host (client) is running a healthy version of a program (code integrity) Before delivering any service the server wants to know that the client is executing according to its expectations Un-trusted client Un-trusted client Un-trusted client Un-trusted client Trusted server Un-trusted client 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 3 Attack model Attacker on un-trusted host: Any dynamic/static analysis tool Any software (buggers, emulators, ) Read/write any memory location, register, network message, file. Attacks: Reverse engineer and direct code change. Runtime modification of the memory. Produce (possibly tampered) copies of P that run in parallel. Interception and change of network messages. 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 4 2

3 Attacker goal Goal: to tamper with the application code without being detected by the server Substantial program understanding effort by a human to understand the inner logic to attack Client Server 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 5 Our approach Periodically replace the client code with a new version Orthogonal (obfuscated) Semantically different CP CP 2 CP 3 CP 0 Client Server 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 6 3

4 Obfuscation Transforming a program CP into an equivalent one CP that is harder to reverse engineer, while maintaining its semantics. Potency: obscurity added to a program Resilience: how difficult is to automatically de-obfuscate Cost: computation overhead of P CP T T 2 T 3 CP 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 7 Obfuscation!! "!! # " "#! $%&'( $%&'))( '( '!( '"( '!( '"( '"( )*! + #,, -. Layout obfuscation 2. Data obfuscation 3. Control flow obfuscation 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 8 4

5 Splitting The code of CP i can be split into (C i, S i ) where: C i remains on the client S i runs on the server This process ensures that the code left on the client is orthogonal with respect to the previous clients An expired client can not longer be used (it would not work with the new server) CP i Client C i Server S i 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 9 Orthogonality c CP i p CP j Statement orthogonality c p if: the understanding of the of c the role in CP i does not reveal information about the role of p in CP j Program orthogonality CP i CP j if: they contains only* orthogonal statements *Not possible to transform or move to the server: System calls Library calls Input output operations 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 0 5

6 Orthogonal client generation CP C,,C i- repeat CP i = RendomTransform (CP) CP = CP i (C i, S i ) = MoveCompToServer(CP i, C,,C i- ) until (C i C ) (C i C i- ) (C i, S i ) 9/06/2008 Remote Entrusting by Orthogonal Client Replacement Transformation repeat CP i = RendomTransform (CP) CP = CP i (C i, S i ) = MoveCompToServer(CP i, C,,C i- ) until (C i C ) (C i C i- ) Pool of semantic preserving transformations from a catalog Propagations of annotations about black statements and performance information The goal is to obstruct code comprehension 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 2 6

7 Splitting repeat CP i = RendomTransform (CP) CP = CP i (C i, S i ) = MoveCompToServer(CP i, C,,C i- ) until (C i C ) (C i C i- ) Leave on the client: Statement of CP i that are orthogonal to all previous C C i- Invariable part (black) Performance intensive statements 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 3 Acceptance condition repeat CP i = RendomTransform (CP) CP = CP i (C i, S i ) = MoveCompToServer(CP i, C,,C i- ) until (C i C ) (C i C i- ) The new client is orthogonal is not just black statements (performance) Iteration in case the condition is not met 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 4 7

8 Empirical validation 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 5 Clone based orthogonality Orthogonality from a program comprehension point of view is hard to define and quantify Practical and computable approximation of orthogonality: based on clones Clones Statement orthogonality c p if: the understanding of the of c the role in CP i does not reveal information about the role of p in CP j CP i CP j 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 6 8

9 Alias based opaque predicates Opaque predicate: conditional expression whose value is known to the obfuscator, but is difficult for an adversary to deduce statically Precise inter-procedural static analysis is intractable 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 7 Aliases : f = = g g! = h Update : updatealias ( ) class A { int f ; int f2 ; void m ( ) { f = ; f2 = f ++; int tmp = f ; tmp = tmp - f ; f = f + f2 ; Alias based opaque predicates class A { if ( g!= h ) { int f ; updatealias( ) ; int f2 ; tmp = f ; void m ( ) { tmp = tmp - f ; int tmp ; updatealias( ) ; if ( f ==g ) { f = f +f2 ; f = ; updatealias( ) ; else { f2 = f ++; f = tmp / f2 ; tmp = f2%59+f2 ; else { updatealias( ) ; updatealias( ) ; tmp = f +f2 / 5 ; f = f2 - tmp ; 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 8 9

10 Case studies CarRace (on-line game) CP race = 220 loc Chat application CP chat = 0 loc On line applications Written in java (~K loc each) Source code is sensitive to malicious modifications 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 9 Clone size threshold Small threshold Too many iterations of the algorithm exponential grown of the source code Most of the reposted clones are false positives Improvements do not bring more security Large threshold Algorithm is fast Too many false positives Clients contains clones that could leak information to an attacker repeat CP i = RendomTransform (CP) CP = CP i (C i, S i ) = MoveCompToServer(CP i, C,,C i- ) until (C i C ) (C i C i- ) 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 20 0

11 Clone size threshold Application CarRace ChatClinet Min. clone length Statements Tokens Clones /06/2008 Remote Entrusting by Orthogonal Client Replacement 2 Generation Performance Application CarRace ChatClient Application lifetime 5 years A replacement every 2 days No. of clients No. of clones /06/2008 Remote Entrusting by Orthogonal Client Replacement 22

12 Attacks Opaque predicates could be attacked through dynamic analysis (debugging) Removing branches that are not executed could cause the elimination of useful code We could add predicates that infrequently evaluate to True (False) and if removed cause the application to malfunction 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 23 Future works Clone size threshold estimation requires further investigation Implementation of a full catalog of obfuscations e.g., variable splitting/encoding of the code left on the client Evaluating how long a piece of code can resist before been attacked Correct estimation of the replacement frequency 9/06/2008 Remote Entrusting by Orthogonal Client Replacement 24 2

Remote Entrusting by Orthogonal Client Replacement

Remote Entrusting by Orthogonal Client Replacement Remote Entrusting by Orthogonal Client Replacement Mariano Ceccato 1, Mila Dalla Preda 2, Anirban Majumdar 3, Paolo Tonella 1 1 Fondazione Bruno Kessler, Trento, Italy 2 University of Verona, Italy 3 University

More information

Remote software protection by orthogonal client replacement

Remote software protection by orthogonal client replacement Remote software protection by orthogonal client replacement Mariano Ceccato, Paolo Tonella Fondazione Bruno Kessler IRST Trento, Italy {ceccato,tonella@fbk.eu Mila Dalla Preda University of Verona Verona,

More information

Probfuscation: An Obfuscation Approach using Probabilistic Control Flows

Probfuscation: An Obfuscation Approach using Probabilistic Control Flows Probfuscation: An Obfuscation Approach using Probabilistic Control Flows Andre Pawlowski, Moritz Contag, and Thorsten Holz Horst Görtz Institute (HGI), Ruhr-University Bochum, Germany Abstract. Sensitive

More information

First year review WP4 overview. Trento - September 24th, 2007

First year review WP4 overview. Trento - September 24th, 2007 First year review WP4 overview Trento - September 24th, 2007 Goal of WP4 Trust and Security Analysis of the various SW-based and combined HW/SW-based methods for the RE-TRUST problem 2 Participants UNITN

More information

Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 4: Code Obfuscation Minsk, Belarus, Spring 2014

Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 4: Code Obfuscation Minsk, Belarus, Spring 2014 Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 4: Code Obfuscation Minsk, Belarus, Spring 2014 Christian Collberg University of Arizona www.cs.arizona.edu/ collberg c June

More information

Industrial Approach: Obfuscating Transformations

Industrial Approach: Obfuscating Transformations Industrial Approach: Obfuscating Transformations Yury Lifshits Steklov Institute of Mathematics, St.Petersburg, Russia yura@logic.pdmi.ras.ru Tartu University 17/03/2006 Yury Lifshits (Steklov Inst. of

More information

ISSISP 2014 Code Obfuscation Verona, Italy

ISSISP 2014 Code Obfuscation Verona, Italy ISSISP 2014 Code Obfuscation Verona, Italy Christian Collberg University of Arizona www.cs.arizona.edu/ collberg c July 27, 2014 Christian Collberg Overview 3 / 109 Code obfuscation what is it? Informally,

More information

Obfuscating Transformations. What is Obfuscator? Obfuscation Library. Obfuscation vs. Deobfuscation. Summary

Obfuscating Transformations. What is Obfuscator? Obfuscation Library. Obfuscation vs. Deobfuscation. Summary ? Obfuscating Outline? 1? 2 of Obfuscating 3 Motivation: Java Virtual Machine? difference between Java and others? Most programming languages: Java: Source Code Machine Code Predefined Architecture Java

More information

RUHR-UNIVERSITÄT BOCHUM. Probfuscation: An Obfuscation Approach using Probabilistic Control Flows

RUHR-UNIVERSITÄT BOCHUM. Probfuscation: An Obfuscation Approach using Probabilistic Control Flows RUHR-UNIVERSITÄT BOCHUM Horst Görtz Institute for IT Security Technical Report TR-HGI-2016-002 Probfuscation: An Obfuscation Approach using Probabilistic Control Flows Andre Pawlowski, Moritz Contag, Thorsten

More information

Implementation of an Obfuscation Tool for C/C++ Source Code Protection on the XScale Architecture *

Implementation of an Obfuscation Tool for C/C++ Source Code Protection on the XScale Architecture * Implementation of an Obfuscation Tool for C/C++ Source Code Protection on the XScale Architecture * Seongje Cho 1, Hyeyoung Chang 1, and Yookun Cho 2 1 Dept. of Computer Science & Engineering, Dankook

More information

Code Obfuscation 10**2+(2*a+3)%2. When 2018/11/29 Where JSecIn Who Gaetan Ferry Why For fun!

Code Obfuscation 10**2+(2*a+3)%2. When 2018/11/29 Where JSecIn Who Gaetan Ferry Why For fun! Code Obfuscation 10**2+(2*a+3)%2 When 2018/11/29 Where JSecIn Who Gaetan Ferry Why For fun! me@jsecin:/ $ whoami Gaetan Ferry @mabo^w Not on twitter Security expert @Synacktiv : Offensive security company

More information

PLT Course Project Demo Spring Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang

PLT Course Project Demo Spring Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang PLT Course Project Demo Spring 2013 Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang 1. Introduction To Code Obfuscation 2. LLVM 3. Obfuscation Techniques 1. String Transformation 2. Junk Code

More information

Formal verification of program obfuscations

Formal verification of program obfuscations Formal verification of program obfuscations Sandrine Blazy joint work with Roberto Giacobazzi and Alix Trieu IFIP WG 2.11, 2015-11-10 1 Background: verifying a compiler Compiler + proof that the compiler

More information

Software Similarity Analysis. c April 28, 2011 Christian Collberg

Software Similarity Analysis. c April 28, 2011 Christian Collberg Software Similarity Analysis c April 28, 2011 Christian Collberg Clone detection Duplicates are the result of copy-paste-modify programming. 2/49 Clone detection Duplicates are the result of copy-paste-modify

More information

Software Protection via Obfuscation

Software Protection via Obfuscation Software Protection via Obfuscation Ciprian Lucaci InfoSec Meetup #1 1 About me Software Protection via Obfuscation - Ciprian LUCACI 2 About me 2008-2012 # Bachelor Computer Science @ Politehnica Univerity

More information

Third year review WP3 overview HW/SW-based methods. Riva del Garda October 2 nd, 2009

Third year review WP3 overview HW/SW-based methods. Riva del Garda October 2 nd, 2009 Third year review WP3 overview HW/SW-based methods Riva del Garda October 2 nd, 2009 Tasks D3.3 D3.4 D3.1 D3.2 D3.5 M0 M3 M6 M9 M12 M15 M18 M21 M24 M27 M30 M33 M36 T3.1 T3.4 T3.3 T3.5 2 Task 3.2 M23 M24

More information

Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 7: Tamperproofing II Minsk, Belarus, Spring 2014

Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 7: Tamperproofing II Minsk, Belarus, Spring 2014 Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 7: Tamperproofing II Minsk, Belarus, Spring 2014 Christian Collberg University of Arizona www.cs.arizona.edu/ collberg c

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Intellectual Property Protection using Obfuscation

Intellectual Property Protection using Obfuscation Intellectual Property Protection using Obfuscation Stephen Drape Collaboration between Siemens AG, Munich and the University of Oxford Research Project sponsored by Siemens AG, Munich March 2009 Contents

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Verfying the SSH TLP with ProVerif

Verfying the SSH TLP with ProVerif A Demo Alfredo Pironti Riccardo Sisto Politecnico di Torino, Italy {alfredo.pironti,riccardo.sisto}@polito.it CryptoForma Bristol, 7-8 April, 2010 Outline Introduction 1 Introduction 2 3 4 Introduction

More information

Android App Protection via Interpretation Obfuscation

Android App Protection via Interpretation Obfuscation Android App Protection via Interpretation Obfuscation Junliang Shu, Juanru Li, Yuanyuan Zhang and Dawu Gu Lab of Cryptology and Computer Security Shanghai Jiao Tong University Shanghai, China, Abstract

More information

VOT4CS: A Virtualization Obfuscation Tool for C#

VOT4CS: A Virtualization Obfuscation Tool for C# VOT4CS: A Virtualization Obfuscation Tool for C# Sebastian Banescu, Ciprian Lucaci, Benjamin Kraemer, Alexander Pretschner Technical University of Munich, Germany 2 nd International Workshop on Software

More information

An On-demand Secure Routing Protocol Resilient to Byzantine Failures. Routing: objective. Communication Vulnerabilities

An On-demand Secure Routing Protocol Resilient to Byzantine Failures. Routing: objective. Communication Vulnerabilities An On-demand Secure Routing Protocol Resilient to Byzantine Failures Baruch Awerbuch Johns Hopkins University On-Demand vs. Proactive Routing Security Concerns On-Demand Source Authentication Caching presents

More information

Obfuscation Omer Paneth

Obfuscation Omer Paneth Obfuscation Omer Paneth What does it do? #include void primes(int cap) { int i, j, composite; for(i = 2; i < cap; ++i) { composite = 0; for(j = 2; j * j

More information

An On-demand Secure Routing Protocol Resilient to Byzantine Failures

An On-demand Secure Routing Protocol Resilient to Byzantine Failures An On-demand Secure Routing Protocol Resilient to Byzantine Failures Baruch Awerbuch Johns Hopkins University Joint work with David Holmer, Cristina Nita-Rotaru, and Herbert Rubens Based on paper at WiSe2002

More information

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation CSE 501: Compiler Construction Course outline Main focus: program analysis and transformation how to represent programs? how to analyze programs? what to analyze? how to transform programs? what transformations

More information

Obfuscation Studio Executive

Obfuscation Studio Executive PROCEEDINGS OF WORLD ACADEMY OF SCIENCE, ENGINEERING AND TECHNOLOGY VOLUME 1 DECEMBER 25 ISSN 137-6884 Obfuscation Studio Executive Siarhei Petryk, and Vyacheslav Yarmolik Abstract New software protection

More information

How to (not) Share a Password:

How to (not) Share a Password: How to (not) Share a Password: Privacy preserving protocols for finding heavy hitters with adversarial behavior Moni Naor Benny Pinkas Eyal Ronen Passwords First modern use in MIT's CTSS (1961) Passwords

More information

Symbolic Evaluation/Execution

Symbolic Evaluation/Execution Symbolic Evaluation/Execution Reading Assignment *R.W. Floyd, "Assigning Meaning to Programs, Symposium on Applied Mathematics, 1967, pp. 19-32 (Appeared as volume 19 of Mathematical Aspects of Computer

More information

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS ABOUT THIS COURSE In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools and technologies. The focus will be on coding activities that enhance the

More information

Data Structures And Algorithms

Data Structures And Algorithms Data Structures And Algorithms Recursion Eng. Anis Nazer First Semester 2016-2017 Recursion Recursion: to define something in terms of itself Example: factorial n!={ 1 n=0 n (n 1)! n>0 Recursion Example:

More information

20486: Developing ASP.NET MVC 4 Web Applications (5 Days)

20486: Developing ASP.NET MVC 4 Web Applications (5 Days) www.peaklearningllc.com 20486: Developing ASP.NET MVC 4 Web Applications (5 Days) About this Course In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework

More information

Delayed and Controlled Failures in Tamper-Resistant Software

Delayed and Controlled Failures in Tamper-Resistant Software Delayed and Controlled Failures in Tamper-Resistant Software Gang Tan *, Yuqun Chen #, and Mariusz H. Jakubowski # * Boston College # Microsoft Research Software Piracy Worldwide 40 35 30 25 20 15 10 5

More information

Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 4 Web Applications Developing ASP.NET MVC 4 Web Applications Course 20486B; 5 days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5

More information

20486-Developing ASP.NET MVC 4 Web Applications

20486-Developing ASP.NET MVC 4 Web Applications Course Outline 20486-Developing ASP.NET MVC 4 Web Applications Duration: 5 days (30 hours) Target Audience: This course is intended for professional web developers who use Microsoft Visual Studio in an

More information

How to (not) Share a Password:

How to (not) Share a Password: How to (not) Share a Password: Privacy preserving protocols for finding heavy hitters with adversarial behavior Moni Naor Benny Pinkas Eyal Ronen Passwords First modern use in MIT's CTSS (1961) Passwords

More information

Program Vulnerability Analysis Using DBI

Program Vulnerability Analysis Using DBI Program Vulnerability Analysis Using DBI CodeEngn Co-Administrator DDeok9@gmail.com 2011.7.2 www.codeengn.com CodeEngn ReverseEngineering Conference Outline What is DBI? Before that How? A simple example

More information

CODESSEAL: Compiler/FPGA Approach to Secure Applications

CODESSEAL: Compiler/FPGA Approach to Secure Applications CODESSEAL: Compiler/FPGA Approach to Secure Applications Olga Gelbart 1, Paul Ott 1, Bhagirath Narahari 1, Rahul Simha 1, Alok Choudhary 2, and Joseph Zambreno 2 1 The George Washington University, Washington,

More information

Data Structures Lecture 3 Order Notation and Recursion

Data Structures Lecture 3 Order Notation and Recursion Data Structures Lecture 3 Order Notation and Recursion 1 Overview The median grade.cpp program from Lecture 2 and background on constructing and using vectors. Algorithm analysis; order notation Recursion

More information

Failure Diagnosis and Cyber Intrusion Detection in Transmission Protection System Assets Using Synchrophasor Data

Failure Diagnosis and Cyber Intrusion Detection in Transmission Protection System Assets Using Synchrophasor Data Failure Diagnosis and Cyber Intrusion Detection in Transmission Protection System Assets Using Synchrophasor Data Anurag Srivastava, Bo Cui, P. Banerjee Washington State University NASPI March 2017 Outline

More information

THE POWER AND RISK OF MOBILE. White paper

THE POWER AND RISK OF MOBILE. White paper THE POWER AND RISK OF MOBILE White paper TABLE OF CONTENTS Executive Summary - 3 Introduction - 4 The Power and Risk of Mobile - 4 Growing Dominance of Android - 5 Best Practices to Develop Secure Mobile

More information

Lecture 16 Pointer Analysis

Lecture 16 Pointer Analysis Pros and Cons of Pointers Lecture 16 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers

More information

Developing ASP.NET MVC 5 Web Applications

Developing ASP.NET MVC 5 Web Applications Developing ASP.NET MVC 5 Web Applications Course 20486C; 5 days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework tools

More information

CS111: PROGRAMMING LANGUAGE II

CS111: PROGRAMMING LANGUAGE II CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 1(c): Java Basics (II) Lecture Contents Java basics (part II) Conditions Loops Methods Conditions & Branching Conditional Statements A

More information

Topics in Systems and Program Security

Topics in Systems and Program Security Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Topics in Systems and

More information

HOST Authentication Overview ECE 525

HOST Authentication Overview ECE 525 Authentication Overview Authentication refers to the process of verifying the identity of the communicating principals to one another Usually sub-divided into Entity authentication Authentication in real-time

More information

Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes

Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes Supporting Documentation and Evolution of Crosscutting Concerns in Business Processes Chiara Di Francescomarino supervised by Paolo Tonella dfmchiara@fbk.eu - Fondazione Bruno Kessler, Trento, Italy Abstract.

More information

Advanced MEIC. (Lesson #18)

Advanced MEIC. (Lesson #18) Advanced Programming @ MEIC (Lesson #18) Last class Data races Java Memory Model No out-of-thin-air values Data-race free programs behave as expected Today Finish with the Java Memory Model Introduction

More information

Machine-Independent Optimizations

Machine-Independent Optimizations Chapter 9 Machine-Independent Optimizations High-level language constructs can introduce substantial run-time overhead if we naively translate each construct independently into machine code. This chapter

More information

Hint-based Static Analysis for Automatic Program Parallelization. Steve Simon Joseph Fernandez CSCI 5535 University of Colorado, Boulder

Hint-based Static Analysis for Automatic Program Parallelization. Steve Simon Joseph Fernandez CSCI 5535 University of Colorado, Boulder Hint-based Static Analysis for Automatic Program Parallelization Steve Simon Joseph Fernandez CSCI 5535 University of Colorado, Boulder Background Year Hardware Software (mostly) 1998 Single Core Single

More information

Module: Future of Secure Programming

Module: Future of Secure Programming Module: Future of Secure Programming Professor Trent Jaeger Penn State University Systems and Internet Infrastructure Security Laboratory (SIIS) 1 Programmer s Little Survey Problem What does program for

More information

Reading Assignment. Symbolic Evaluation/Execution. Move from Dynamic Analysis to Static Analysis. Move from Dynamic Analysis to Static Analysis

Reading Assignment. Symbolic Evaluation/Execution. Move from Dynamic Analysis to Static Analysis. Move from Dynamic Analysis to Static Analysis Reading Assignment Symbolic Evaluation/Execution *R.W. Floyd, "Assigning Meaning to Programs, Symposium on Applied Mathematics, 1967, pp. 19-32 (Appeared as volume 19 of Mathematical Aspects of Computer

More information

Developing ASP.NET MVC 5 Web Applications. Course Outline

Developing ASP.NET MVC 5 Web Applications. Course Outline Developing ASP.NET MVC 5 Web Applications Course Outline Module 1: Exploring ASP.NET MVC 5 The goal of this module is to outline to the students the components of the Microsoft Web Technologies stack,

More information

20486 Developing ASP.NET MVC 5 Web Applications

20486 Developing ASP.NET MVC 5 Web Applications Course Overview In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework tools and technologies. The focus will be on coding activities that enhance the performance

More information

Protecting binaries. Andrew Griffiths

Protecting binaries. Andrew Griffiths Protecting binaries Andrew Griffiths andrewg@felinemenace.org Introduction This presentation is meant to be useful for people of all skill levels. Hopefully everyone will get something out of this presentation.

More information

Aegis: Automatic Enforcement of Security Policies in Workflow-driven Web Applications

Aegis: Automatic Enforcement of Security Policies in Workflow-driven Web Applications Aegis: Automatic Enforcement of Security Policies in Workflow-driven Web Applications Luca Compagna 2, Daniel Ricardo dos Santos 1,2,3, Serena Elisa Ponta 2, Silvio Ranise 1 1 Fondazione Bruno Kessler

More information

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion Review from Lectures 5 & 6 Arrays and pointers, Pointer arithmetic and dereferencing, Types of memory ( automatic, static,

More information

Context-Based Detection of Clone-Related Bugs. Lingxiao Jiang, Zhendong Su, Edwin Chiu University of California at Davis

Context-Based Detection of Clone-Related Bugs. Lingxiao Jiang, Zhendong Su, Edwin Chiu University of California at Davis Context-Based Detection of Clone-Related Bugs Lingxiao Jiang, Zhendong Su, Edwin Chiu University of California at Davis 1 Outline Introduction and samples of cloning errors Definitions of inconsistencies

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

CSE 307: Principles of Programming Languages

CSE 307: Principles of Programming Languages CSE 307: Principles of Programming Languages Variables and Constants R. Sekar 1 / 22 Topics 2 / 22 Variables and Constants Variables are stored in memory, whereas constants need not be. Value of variables

More information

On Demand secure routing protocol resilient to Byzantine failures

On Demand secure routing protocol resilient to Byzantine failures On Demand secure routing protocol resilient to Byzantine failures Primary Reference: B. Awerbuch, D. Holmer, C. Nita-Rotaru, and H. Rubens, An on-demand secure routing protocol resilient to Byzantine failures,

More information

LL(k) Parsing. Predictive Parsers. LL(k) Parser Structure. Sample Parse Table. LL(1) Parsing Algorithm. Push RHS in Reverse Order 10/17/2012

LL(k) Parsing. Predictive Parsers. LL(k) Parser Structure. Sample Parse Table. LL(1) Parsing Algorithm. Push RHS in Reverse Order 10/17/2012 Predictive Parsers LL(k) Parsing Can we avoid backtracking? es, if for a given input symbol and given nonterminal, we can choose the alternative appropriately. his is possible if the first terminal of

More information

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Alan Bateman Java Platform Group, Oracle November 2018 Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Project Loom Continuations Fibers Tail-calls Copyright 2018, Oracle and/or its

More information

A Practical Approach to Programming With Assertions

A Practical Approach to Programming With Assertions A Practical Approach to Programming With Assertions Ken Bell Christian-Albrechts Universität Kiel Department of Computer Science and Applied Mathematics Real-Time Systems and Embedded Systems Group July

More information

Approximation of the Worst-Case Execution Time Using Structural Analysis. Matteo Corti and Thomas Gross Zürich

Approximation of the Worst-Case Execution Time Using Structural Analysis. Matteo Corti and Thomas Gross Zürich Approximation of the Worst-Case Execution Time Using Structural Analysis Matteo Corti and Thomas Gross Zürich Goal Worst-case execution time estimation of softreal time Java applications. We focus on semantic

More information

Using Exception Handling to Build Opaque Predicates in Intermediate Code Obfuscation Techniques

Using Exception Handling to Build Opaque Predicates in Intermediate Code Obfuscation Techniques Using Exception Handling to Build Opaque Predicates in Intermediate Code Obfuscation Techniques Daniel Dolz Gerardo Parra Grupo de Investigación en Robótica Inteligente Departamento de Ciencias de la Computación

More information

Java obfuscator: implementation. Re-Trust quarterly meeting Villach, March 11, 2008

Java obfuscator: implementation. Re-Trust quarterly meeting Villach, March 11, 2008 Java obfuscator: implementation Pierre.Girard@gemalto.com Re-Trust quarterly meeting Villach, March 11, 2008 Introduction Java obfuscator design presented one year ago Use cases for Java obfuscation in

More information

Developing ASP.Net MVC 4 Web Application

Developing ASP.Net MVC 4 Web Application Developing ASP.Net MVC 4 Web Application About this Course In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools and technologies. The focus will

More information

CS553 Lecture Dynamic Optimizations 2

CS553 Lecture Dynamic Optimizations 2 Dynamic Optimizations Last time Predication and speculation Today Dynamic compilation CS553 Lecture Dynamic Optimizations 2 Motivation Limitations of static analysis Programs can have values and invariants

More information

Introduction to JavaCard Dynamic Logic

Introduction to JavaCard Dynamic Logic Introduction to JavaCard Dynamic Logic Prof. P. H. Schmitt, Christian Engel, Benjamin Weiß December 10, 2008 Introduction to JavaCard Dynamic Logic December 10, 2008 1 / 13 Some Java Features Assignments,

More information

Trojan-tolerant Hardware & Supply Chain Security in Practice

Trojan-tolerant Hardware & Supply Chain Security in Practice Trojan-tolerant Hardware & Supply Chain Security in Practice Who we are Vasilios Mavroudis Doctoral Researcher, UCL Dan Cvrcek CEO, Enigma Bridge George Danezis Professor, UCL Petr Svenda CTO, Enigma Bridge

More information

The Checker Framework: pluggable static analysis for Java

The Checker Framework: pluggable static analysis for Java The Checker Framework: pluggable static analysis for Java http://checkerframework.org/ Werner Dietl University of Waterloo https://ece.uwaterloo.ca/~wdietl/ Joint work with Michael D. Ernst and many others.

More information

IA-64 Compiler Technology

IA-64 Compiler Technology IA-64 Compiler Technology David Sehr, Jay Bharadwaj, Jim Pierce, Priti Shrivastav (speaker), Carole Dulong Microcomputer Software Lab Page-1 Introduction IA-32 compiler optimizations Profile Guidance (PGOPTI)

More information

Bouncer: Securing Software by Blocking Bad Input

Bouncer: Securing Software by Blocking Bad Input Bouncer: Securing Software by Blocking Bad Input Sathish Kuppuswamy & Yufei Fu Department of computer Science University of Texas at Dallas March 21 st, 2012 Outline Bouncer Existing Techniques Bouncer

More information

Developing ASP.NET MVC 5 Web Applications

Developing ASP.NET MVC 5 Web Applications 20486C - Version: 1 23 February 2018 Developing ASP.NET MVC 5 Web Developing ASP.NET MVC 5 Web 20486C - Version: 1 5 days Course Description: In this course, students will learn to develop advanced ASP.NET

More information

TRUSTSHADOW: SECURE EXECUTION OF UNMODIFIED APPLICATIONS WITH ARM TRUSTZONE Florian Olschewski

TRUSTSHADOW: SECURE EXECUTION OF UNMODIFIED APPLICATIONS WITH ARM TRUSTZONE Florian Olschewski TRUSTSHADOW: SECURE EXECUTION OF UNMODIFIED APPLICATIONS WITH ARM TRUSTZONE 14.11.2018 Florian Olschewski 1 OUTLINE 1) Introduction 2) Trustzone 3) Threat Model 4) Overview 5) Runtime System 6) Implementation

More information

Lecture 27. Pros and Cons of Pointers. Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis

Lecture 27. Pros and Cons of Pointers. Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Pros and Cons of Pointers Lecture 27 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers

More information

Module: Future of Secure Programming

Module: Future of Secure Programming Module: Future of Secure Programming Professor Trent Jaeger Penn State University Systems and Internet Infrastructure Security Laboratory (SIIS) 1 Programmer s Little Survey Problem What does program for

More information

Lecture 20 Pointer Analysis

Lecture 20 Pointer Analysis Lecture 20 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis (Slide content courtesy of Greg Steffan, U. of Toronto) 15-745:

More information

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world.

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Supercharge your PS3 game code Part 1: Compiler internals.

More information

Hybrid STT CMOS Designs for Reverse engineering Prevention

Hybrid STT CMOS Designs for Reverse engineering Prevention Hybrid STT CMOS Designs for Reverse engineering Prevention Theodore Winograd George Mason University Hassan Salmani* Howard University Hamid Mahmoodi San Francisco State University Kris Gaj George Mason

More information

A Simple SQL Injection Pattern

A Simple SQL Injection Pattern Lecture 12 Pointer Analysis 1. Motivation: security analysis 2. Datalog 3. Context-insensitive, flow-insensitive pointer analysis 4. Context sensitivity Readings: Chapter 12 A Simple SQL Injection Pattern

More information

University of East London Institutional Repository:

University of East London Institutional Repository: University of East London Institutional Repository: http://roar.uel.ac.uk This paper is made available online in accordance with publisher policies. Please scroll down to view the document itself. Please

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

A Tree Kernel Based Approach for Clone Detection

A Tree Kernel Based Approach for Clone Detection A Tree Kernel Based Approach for Clone Detection Anna Corazza 1, Sergio Di Martino 1, Valerio Maggio 1, Giuseppe Scanniello 2 1) University of Naples Federico II 2) University of Basilicata Outline Background

More information

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164) Introduction to Programming Languages and Compilers CS164 11:00-12:30 TT 10 Evans 1 ICOM 4036 - Outline Prontuario Course Outline Brief History of PLs Programming Language Design Criteria Programming Language

More information

DETERMINISTIC VARIATION FOR ANTI-TAMPER APPLICATIONS

DETERMINISTIC VARIATION FOR ANTI-TAMPER APPLICATIONS DETERMINISTIC VARIATION FOR ANTI-TAMPER APPLICATIONS J. Todd McDonald, Yong C. Kim, Daniel Koranek Dr. Jeffrey Todd McDonald, Ph.D. Center for Forensics, Information Technology, and Security School of

More information

20486C: Developing ASP.NET MVC 5 Web Applications

20486C: Developing ASP.NET MVC 5 Web Applications 20486C: Developing ASP.NET MVC 5 Web Course Details Course Code: Duration: Notes: 20486C 5 days This course syllabus should be used to determine whether the course is appropriate for the students, based

More information

Sung-Eun Choi and Steve Deitz Cray Inc.

Sung-Eun Choi and Steve Deitz Cray Inc. Sung-Eun Choi and Steve Deitz Cray Inc. Domains and Arrays Overview Arithmetic Other Domain Types Data Parallel Operations Examples Chapel: Data Parallelism 2 A first-class index set Specifies size and

More information

Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory.

Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory. Memory Management Page 1 Memory Management Wednesday, October 27, 2004 4:54 AM Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory. Two kinds

More information

Lecturers: Mark D. Ryan and David Galindo. Cryptography Slide: 24

Lecturers: Mark D. Ryan and David Galindo. Cryptography Slide: 24 Assume encryption and decryption use the same key. Will discuss how to distribute key to all parties later Symmetric ciphers unusable for authentication of sender Lecturers: Mark D. Ryan and David Galindo.

More information

Complexity, General. Standard approach: count the number of primitive operations executed.

Complexity, General. Standard approach: count the number of primitive operations executed. Complexity, General Allmänt Find a function T(n), which behaves as the time it takes to execute the program for input of size n. Standard approach: count the number of primitive operations executed. Standard

More information

Software security, secure programming

Software security, secure programming Software security, secure programming Lecture 4: Protecting your code against software vulnerabilities? (overview) Master on Cybersecurity Master MoSiG Academic Year 2017-2018 Preamble Bad news several

More information

Software Analysis Tools

Software Analysis Tools CSCE 790 Introduction to Software Analysis Software Analysis Tools Professor Lisa Luo Fall 2018 Overview Source code CFG generator Binary code analysis Code obfuscation Symbolic Execution Dynamic analysis

More information

Simone Campanoni Loop transformations

Simone Campanoni Loop transformations Simone Campanoni simonec@eecs.northwestern.edu Loop transformations Outline Simple loop transformations Loop invariants Induction variables Complex loop transformations Simple loop transformations Simple

More information

Automated static deobfuscation in the context of Reverse Engineering

Automated static deobfuscation in the context of Reverse Engineering Automated static deobfuscation in the context of Reverse Engineering Sebastian Porst (sebastian.porst@zynamics.com) Christian Ketterer (cketti@gmail.com) Sebastian zynamics GmbH Lead Developer BinNavi

More information

Naming in OOLs and Storage Layout Comp 412

Naming in OOLs and Storage Layout Comp 412 COMP 412 FALL 2018 Naming in OOLs and Storage Layout Comp 412 source IR IR target Front End Optimizer Back End Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in

More information

SE352b: Roadmap. SE352b Software Engineering Design Tools. W3: Programming Paradigms

SE352b: Roadmap. SE352b Software Engineering Design Tools. W3: Programming Paradigms SE352b Software Engineering Design Tools W3: Programming Paradigms Feb. 3, 2005 SE352b, ECE,UWO, Hamada Ghenniwa SE352b: Roadmap CASE Tools: Introduction System Programming Tools Programming Paradigms

More information