A Binary Agent Technology for COTS Software Integrity Richard Schooler Anant Agarwal InCert Software.

Slides:



Advertisements
Similar presentations
Instrumentation of Linux Programs with Pin Robert Cohn & C-K Luk Platform Technology & Architecture Development Enterprise Platform Group Intel Corporation.
Advertisements

TaintScope: A Checksum-Aware Directed Fuzzing Tool for Automatic Software Vulnerability Detection Tielei Wang 1, Tao Wei 1, Guofei Gu 2, Wei Zou 1 1 Peking.
Ensuring Operating System Kernel Integrity with OSck By Owen S. Hofmann Alan M. Dunn Sangman Kim Indrajit Roy Emmett Witchel Kent State University College.
Dec 5, 2007University of Virginia1 Efficient Dynamic Tainting using Multiple Cores Yan Huang University of Virginia Dec
C Programming and Assembly Language Janakiraman V – NITK Surathkal 2 nd August 2014.
Bouncer securing software by blocking bad input Miguel Castro Manuel Costa, Lidong Zhou, Lintao Zhang, and Marcus Peinado Microsoft Research.
Assembly Code Verification Using Model Checking Hao XIAO Singapore University of Technology and Design.
1 Detection of Injected, Dynamically Generated, and Obfuscated Malicious Code (DOME) Subha Ramanathan & Arun Krishnamurthy Nov 15, 2005.
Pipelined Profiling and Analysis on Multi-core Systems Qin Zhao Ioana Cutcutache Weng-Fai Wong PiPA.
RUGRAT: Runtime Test Case Generation using Dynamic Compilers Ben Breech NASA Goddard Space Flight Center Lori Pollock John Cavazos University of Delaware.
TaintCheck and LockSet LBA Reading Group Presentation by Shimin Chen.
Securing software by enforcing data-flow integrity Manuel Costa Joint work with: Miguel Castro, Tim Harris Microsoft Research Cambridge University of Cambridge.
PC hardware and x86 3/3/08 Frans Kaashoek MIT
1 ICS 51 Introductory Computer Organization Fall 2006 updated: Oct. 2, 2006.
An Integrated Framework for Dependable Revivable Architectures Using Multi-core Processors Weiding Shi, Hsien-Hsin S. Lee, Laura Falk, and Mrinmoy Ghosh.
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks Feng Qin, Cheng Wang, Zhenmin Li, Ho-seop Kim, Yuanyuan.
San Diego Supercomputer Center Performance Modeling and Characterization Lab PMaC Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation.
Institute of Computing Jaca: a Reflective Fault Injection Tool based on Patterns Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State.
1 RAKSHA: A FLEXIBLE ARCHITECTURE FOR SOFTWARE SECURITY Computer Systems Laboratory Stanford University Hari Kannan, Michael Dalton, Christos Kozyrakis.
0wning Antivirus Alex Wheeler Neel Mehta
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
6.828: PC hardware and x86 Frans Kaashoek
Stamping out worms and other Internet pests Miguel Castro Microsoft Research.
Dr. José M. Reyes Álamo 1.  The 80x86 memory addressing modes provide flexible access to memory, allowing you to easily access ◦ Variables ◦ Arrays ◦
Computer Science Open Research Questions Adversary models –Define/Formalize adversary models Need to incorporate characteristics of new technologies and.
A Binary Technology for COTS Software Integrity Anant Agarwal Richard Schooler InCert Software.
Learning, Monitoring, and Repair in Application Communities Martin Rinard Computer Science and Artificial Intelligence Laboratory Massachusetts Institute.
Native Client: A Sandbox for Portable, Untrusted x86 Native Code
CS533 Concepts of Operating Systems Jonathan Walpole.
CPRG 215 Introduction to Object-Oriented Programming with Java Module 1-Introduction to Java Topic 1.1 Basics of Java Produced by Harvey Peters, 2008 Copyright.
Automatic Diagnosis and Response to Memory Corruption Vulnerabilities Presenter: Jianyong Dai Jun Xu, Peng Ning, Chongkyung Kil, Yan Zhai, Chris Bookhot.
DARPA Jul A Binary Agent Technology for COTS Software Integrity Anant Agarwal Richard Schooler InCert Software.
Title of Selected Paper: IMPRES: Integrated Monitoring for Processor Reliability and Security Authors: Roshan G. Ragel and Sri Parameswaran Presented by:
Stamping out worms and other Internet pests Miguel Castro Microsoft Research.
1 cs205: engineering software university of virginia fall 2006 Forgiveness and Permissions.
1 IA&S IA&S Roadmap and ITS Direction Dr. Jay Lala ITS Program Manager 23 February, 2000.
Assembly Code Optimization Techniques for the AMD64 Athlon and Opteron Architectures David Phillips Robert Duckles Cse 520 Spring 2007 Term Project Presentation.
Buffer Overflow Proofing of Code Binaries By Ramya Reguramalingam Graduate Student, Computer Science Advisor: Dr. Gopal Gupta.
Using Dynamic Compilers for Software Testing Ben Breech Lori Pollock John Cavazos.
Where’s the FEEB?: Effectiveness of Instruction Set Randomization Nora Sovarel, David Evans, Nate Paul University of Virginia Computer Science USENIX Security.
Progress Report Armando Fox with George Candea, James Cutler, Ben Ling, Andy Huang.
Efficient software-based fault isolation Robert Wahbe, Steven Lucco, Thomas Anderson & Susan Graham Presented by: Stelian Coros.
A Binary Agent Technology for COTS Software Integrity Anant Agarwal Richard Schooler InCert Software.
Convicting Exploitable Software Vulnerabilities: An Efficient Input Provenance Based Approach Zhiqiang Lin Xiangyu Zhang, Dongyan Xu Purdue University.
13/July/1999Third USENIX Windows NT Symposium1 Detours: Binary Interception of Win32 Functions Galen Hunt and Doug Brubacher Systems and Networking Group.
A Binary Agent Technology for COTS Software Integrity Anant Agarwal Richard Schooler.
Enterprise Wrappers OASIS PI Meeting March 12, 2002 Bob Balzer Neil Goldman Mahindra
A Binary Agent Technology for COTS Software Integrity Anant Agarwal Richard Schooler.
MIT/Determina Application Communities, page 1 Approved for Public Release, Distribution Unlimited - Case 9649 Collaborative learning for security and repair.
Pinpoint: Problem Determination in Large, Dynamic Internet Services Mike Chen, Emre Kıcıman, Eugene Fratkin {emrek,
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Enabling Control over Adaptive Program Transformation for Dynamically Evolving Mobile Software Validation Mike Jochen, Anteneh Anteneh, Lori Pollock University.
Paradyn Project Paradyn / Dyninst Week Madison, Wisconsin April 12-14, 2010 Paradyn Project Safe and Efficient Instrumentation Andrew Bernat.
Fermilab Scientific Computing Division Fermi National Accelerator Laboratory, Batavia, Illinois, USA. Off-the-Shelf Hardware and Software DAQ Performance.
Qin Zhao1, Joon Edward Sim2, WengFai Wong1,2 1SingaporeMIT Alliance 2Department of Computer Science National University of Singapore
Memory Protection through Dynamic Access Control Kun Zhang, Tao Zhang and Santosh Pande College of Computing Georgia Institute of Technology.
Constraint Framework, page 1 Collaborative learning for security and repair in application communities MIT site visit April 10, 2007 Constraints approach.
Chapter Overview General Concepts IA-32 Processor Architecture
Mingwei Zhang Aravind Prakash Xiaolei Li Zhenkai Liang Heng Yin
IA32 Processors Evolutionary Design
Olatunji Ruwase* Shimin Chen+ Phillip B. Gibbons+ Todd C. Mowry*
Cyber Grand Challenge “Cyber Grand Challenge (CGC) is a contest to build high-performance computers capable of playing in a Capture-the-Flag style cyber-security.
Secure Software Development: Theory and Practice
Hardware Support for Embedded Operating System Security
Fault Injection: A Method for Validating Fault-tolerant System
        Jefferson’s Polygraph
0wning Antivirus Alex Wheeler
Dynamic Binary Translators and Instrumenters
Computer Architecture and System Programming Laboratory
Presentation transcript:

A Binary Agent Technology for COTS Software Integrity Richard Schooler Anant Agarwal InCert Software

The Mission Critical Environment Output Input Operating System SAP COTS Binary The development environment The deployment environment COTS Binary

Objective COTS Binary Input Output Operating System SAP To improve the integrity of the deployment environment with COTS software in the presence of attacks, bugs

Our Focus COTS Binary Input Output Operating System SAP Outer security defences will be breached by attackers Use a practical, systems level approach – execution- time monitoring On COTS program or data corruption, rapidly d- detect problems a- trigger an alarm p- try to protect r- recover

Our Approach: Execution-Time Monitoring of COTS through Binary Instrumentation The development environment The deployment environment COTS New Missing source Legacy COTS Binary COTS New Missing source Legacy d- Policy specs for detection d- Heartbeat insertion d- Argument range checks d- Rare code execution/sigs. a- Alarm messages to console p- Defaults for fault tolerance p- Access constraints, redund. r- Logging COTS New Missing source Legacy

Our Approach to Integrity l A pragmatic system level approach l Works with COTS binaries, even legacy codes l Allows a user to establish desired security levels and to some extent modify policy on the fly l Allows monitoring of all user code execution, not selected OS calls l Can work completely at the user’s deployment site

Drawbacks of Binary Insertion l Specific to a single platform, needs new technology development for different platform l Challenging to relate low-level observable events back to high-level user actions n hard to detect some types of intrusions that only affect data corruption n hard to protect or correct problems at higher semantic levels

Three Major Components in the Prototype, Three Major Tasks l Core technology for customizable agent insertion into PC/NT, PC/Linux l Anomaly detection and reporting l Rapid recovery and problem pinpointing

Selected Challenges and Ideas l Core technology for agent insertion into binary n How to deal with unknown relocations, e.g., for dusty decks – incremental control and dataflow analysis; an integrated static and dynamic method n Dealing with multithreading, in particular, time syncing and monitoring events in a distributed environment l Anomaly detection n Runtime comparison against execution path signatures? n State machines for control flow checks (e.g., Abraham) n How to minimize runtime overhead – borrow compiler optimization techniques (e.g., steal registers, inline code, sampling, multilevel checks) l Rapid recovery and problem pinpointing technology n Instrumentation records trace in circular buffer to pinpoint problem and facilitate recovery from crash/alert following an actual or suspected attack n Can we get data values? Use dataflow analysis and offline simulation to obtain intermediate data values

Measures of Success l Core technology for agent insertion into binary: n Can we handle all binaries, even dusty decks? n Target: Performance degradation to be under 1 percent l Anomaly detection n What fraction of injected problems can we detect u automatically u with user spec l Rapid recovery technology n Performance degradation to be under 1 percent n Can we cut recovery time significantly? We will measure recovery time with and without n As a bonus, can we catch problems before system goes down? l We are building a prototype system, work with real users, and measure

Current Progress l Work on NT binary insertion prototype ongoing l Demo of early capability showing n instrumentation n simple recovery log n detecting application has crashed n taking control and n writing out log l Handling multithreading, DLLs imminent l Ongoing thinking on detection capability

AGENT test al,0x3 jnz 0x1143 AGENT add ebx,ecx jc 0x1101 AGENT shr edx,0x1 add ebx,edx AGENT test al,0x3 jnz 0x1143 AGENT inc eax add ecx,edi add edx,esi cmp eax,0xa while ((c = ++ci)) { INSTRUCTION_ITERATOR ii = c->Instructions(); while ((inst = ++ii)) inst->Lift(null_state); while ((inst = ++ii)) inst->Lift(null_state); while ((c = ++ci)) { INSTRUCTION_ITERATOR ii = c->Instructions(); while ((inst = ++ii)) inst->Lift(null_state); while ((inst = ++ii)) inst->Lift(null_state); Instrumentation for Recovery: Basic Idea l At each program block, record the progress of program execution.

Instrumentation Runtime Naïve implementation: Write block id Increment index (in memory) Check for wrap-around Too big/slow: many instructions per block; large buffer DAG Header setup new trace record DAG Block 1 set bit in current record DAG id

Instrumentation Example 1 test al,0x3 jnz 0x1143 add ebx,ecx jmp short 0x1156 shr edx,0x1 add ebx,edx inc eax add ecx,edi add edx,esi cmp eax,byte 0xa jc 0x1101 Original

Instrumentation Example 2 mov eax,[0x300c] mov ecx,[byte eax+0xc] mov [byte eax+0xc],dword 0x1 mov edx,[byte eax+0x8] mov [dword eax+edx+0xffe],ecx add edx,0x4 and edx,[byte eax+0x4] mov [byte eax+0x8],edx test al,0x3 jnz 0x1143 or [byte ebp+0xe],byte 0x2 add ebx,ecx jmp short 0x1156 or [byte ebp+0xe],byte 0x1 shr edx,0x1 add ebx,edx or [byte ebp+0xe],byte 0x4 inc eax add ecx,edi add edx,esi cmp eax,byte 0xa jc 0x1101 Instrumentation Original

Instrumentation Example 3 mov eax,[0x300c] mov ecx,[byte eax+0xc] mov [byte eax+0xc],dword 0x1 mov edx,[byte eax+0x8] mov [dword eax+edx+0xffe],ecx add edx,0x4 and edx,[byte eax+0x4] mov [byte eax+0x8],edx test al,0x3 jnz 0x1147 or [byte ebp+0xe],byte 0x2 add ebx,ecx jmp short 0x1164 or [byte ebp+0xe],byte 0x1 shr edx,0x1 add ebx,edx or [byte ecp+0xe],byte 0x4 inc eax add ecx,edi add edx,esi cmp eax,byte 0xa jc 0x1103 Instrumentation Displacement Fixup Original

Instrumentation Example 4 mov eax,[0x300c] mov ecx,[byte eax+0xc] mov [byte eax+0xc],dword 0x1 mov edx,[byte eax+0x8] mov [dword eax+edx+0xffe],ecx add edx,0x4 and edx,[byte eax+0x4] mov [byte eax+0x8],edx test al,0x3 jnz 0x1147 or [byte ebp+0xe],byte 0x2 add ebx,ecx jmp short 0x1164 or [byte ebp+0xe],byte 0x1 shr edx,0x1 add ebx,edx mov ecp,ebp or [byte ecp+0xe],byte 0x4 inc eax add ecx,edi add edx,esi cmp eax,byte 0xa jc 0x1103 Instrumentation Displacement Fixup Original Register Transfer

Related Approaches l Applied at source level during development n e.g., type based safety; work of Lee et al. l Applied at link time with special object formats n e.g., software fault isolation; work of Pandey et al. l Applied through interpretor n e.g., safe Java interpreters l Applied during program execution – works with existing COTS n e.g., sandboxing through middleware software n e.g., modify OS with extensions to catch OS calls, Ghosh n e.g., wrap application to steer OS calls to intermediary, Ghosh

The Current Commercial Solution: Middleware COTS Binary Input Output Operating System SAP Middleware wrappers Slow Cannot deal with viruses Cannot improve fault tolerance of COTS package itself

Sandboxing through OS Call Interception (OS extensions or wrapping executable) COTS Binary Input Output Operating System SAP This is the right first step, and less intrusive than binary instrumentation Cannot improve fault tolerance of COTS package itself Cannot handle communication through shared memory Cannot observe internal app behavior OS extensions can slow OS for others

Summary l A systems approach to COTS Integrity l Approach based on execution-time monitoring using binary insertion l We have an early prototype version of NT binary insertion implemented