Austin Rogers§, Milena Milenković‡, Aleksandar Milenković

Slides:



Advertisements
Similar presentations
ROP is Still Dangerous: Breaking Modern Defenses Nicholas Carlini et. al University of California, Berkeley USENIX Security 2014 Presenter: Yue Li Part.
Advertisements

Using Instruction Block Signatures to Counter Code Injection Attacks Milena Milenković, Aleksandar Milenković, Emil Jovanov The University of Alabama in.
Ensuring Operating System Kernel Integrity with OSck By Owen S. Hofmann Alan M. Dunn Sangman Kim Indrajit Roy Emmett Witchel Kent State University College.
Computer Security: Principles and Practice EECS710: Information Security Professor Hossein Saiedian Fall 2014 Chapter 10: Buffer Overflow.
Computer Security: Principles and Practice First Edition by William Stallings and Lawrie Brown Lecture slides by Lawrie Brown Chapter 11 – Buffer Overflow.
Lecture 16 Buffer Overflow modified from slides of Lawrie Brown.
Sim-alpha: A Validated, Execution-Driven Alpha Simulator Rajagopalan Desikan, Doug Burger, Stephen Keckler, Todd Austin.
Security Protection and Checking in Embedded System Integration Against Buffer Overflow Attacks Zili Shao, Chun Xue, Qingfeng Zhuge, Edwin H.-M. Sha International.
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks Feng Qin, Cheng Wang, Zhenmin Li, Ho-seop Kim, Yuanyuan.
1 RAKSHA: A FLEXIBLE ARCHITECTURE FOR SOFTWARE SECURITY Computer Systems Laboratory Stanford University Hari Kannan, Michael Dalton, Christos Kozyrakis.
Efficient Instruction Set Randomization Using Software Dynamic Translation Michael Crane Wei Hu.
Address Obfuscation: An Efficient Approach to Combat a Broad Range of Memory Error Exploits Sandeep Bhatkar, Daniel C. DuVarney, and R. Sekar Stony Brook.
On-Chip Control Flow Integrity Check for Real Time Embedded Systems Fardin Abdi Taghi Abad, Joel Van Der Woude, Yi Lu, Stanley Bak, Marco Caccamo, Lui.
Secure Embedded Processing through Hardware-assisted Run-time Monitoring Zubin Kumar.
Secure Virtual Architecture John Criswell, Arushi Aggarwal, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve University of Illinois at Urbana-Champaign.
Kenichi Kourai (Kyushu Institute of Technology) Takuya Nagata (Kyushu Institute of Technology) A Secure Framework for Monitoring Operating Systems Using.
Architecture for Protecting Critical Secrets in Microprocessors Ruby Lee Peter Kwan Patrick McGregor Jeffrey Dwoskin Zhenghong Wang Princeton Architecture.
Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems CSCI-6140 – Computer Operating Systems David Goldschmidt, Ph.D.
1 Architectural Support for Copy and Tamper Resistant Software David Lie, Chandu Thekkath, Mark Mitchell, Patrick Lincoln, Dan Boneh, John Mitchell and.
Is Out-Of-Order Out Of Date ? IA-64’s parallel architecture will improve processor performance William S. Worley Jr., HP Labs Jerry Huck, IA-64 Architecture.
R Enabling Trusted Software Integrity Darko Kirovski Microsoft Research Milenko Drinić Miodrag Potkonjak Computer Science Department University of California,
Title of Selected Paper: IMPRES: Integrated Monitoring for Processor Reliability and Security Authors: Roshan G. Ragel and Sri Parameswaran Presented by:
Midterm Meeting Pete Bohman, Adam Kunk, Erik Shaw.
Transactional Coherence and Consistency Presenters: Muhammad Mohsin Butt. (g ) Coe-502 paper presentation 2.
Next Generation ISA Itanium / IA-64. Operating Environments IA-32 Protected Mode/Real Mode/Virtual Mode - if supported by the OS IA-64 Instruction Set.
Efficient Software Based Fault Isolation Author: Robert Wahobe,Steven Lucco,Thomas E Anderson, Susan L Graham Presenter: Maitree kanungo Date:02/17/2010.
Exploiting Instruction Streams To Prevent Intrusion Milena Milenkovic.
Creating Security using Software and Hardware Bradley Herrup CS297- Security and Programming Languages.
Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software Paper by: James Newsome and Dawn Song.
3/12/2013Computer Engg, IIT(BHU)1 PARALLEL COMPUTERS- 2.
New-School Machine Structures Parallel Requests Assigned to computer e.g., Search “Katz” Parallel Threads Assigned to core e.g., Lookup, Ads Parallel Instructions.
A Framework For Trusted Instruction Execution Via Basic Block Signature Verification Milena Milenković, Aleksandar Milenković, and Emil Jovanov Electrical.
Embedded Systems. What is Embedded Systems?  Embedded reflects the facts that they are an integral.
Chapter Overview General Concepts IA-32 Processor Architecture
Mitigation against Buffer Overflow Attacks
Security of Digital Signatures
Hardware-rooted Trust for Secure Key Management & Transient Trust
EnGarde: Mutually Trusted Inspection of SGX Enclaves
William Stallings Computer Organization and Architecture 8th Edition
Cryptographic Hash Function
Outline What does the OS protect? Authentication for operating systems
Security mechanisms and vulnerabilities in .NET
Cache Memory Presentation I
Outline What does the OS protect? Authentication for operating systems
Microarchitectural for monitoring application specific instructions
Hyperthreading Technology
Pipelining: Advanced ILP
Continuous, Low Overhead, Run-Time Validation of Program Executions
Lecture 14 Virtual Memory and the Alpha Memory Hierarchy
Lecture: DRAM Main Memory
User-mode Secret Protection (SP) architecture
Topic 5: Processor Architecture Implementation Methodology
csci5233 computer security & integrity (Chap. 4)
Austin Rogers§, Milena Milenković‡, Aleksandar Milenković
Chapter 1 Introduction.
Morgan Kaufmann Publishers Memory Hierarchy: Cache Basics
Computer Architecture
CSE 451: Operating Systems Autumn 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 596 Allen Center 1.
Prof. Leonardo Mostarda University of Camerino
Introduction to Microprocessor Programming
Instruction Set Principles
Sai Krishna Deepak Maram, CS 6410
Shielding applications from an untrusted cloud with Haven
CSE 451: Operating Systems Winter 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 412 Sieg Hall 1.
Operating System Concepts
rePLay: A Hardware Framework for Dynamic Optimization
Understanding and Preventing Buffer Overflow Attacks in Unix
Presentation transcript:

Austin Rogers§, Milena Milenković‡, Aleksandar Milenković A Low Overhead Hardware Technique for Software Integrity and Confidentiality Austin Rogers§, Milena Milenković‡, Aleksandar Milenković § Dynetics Inc., Huntsville, AL ‡ WebSphere Process Server Performance, IBM The LaCASA Laboratory Electrical and Computer Engineering Department The University of Alabama in Huntsville http://www.ece.uah.edu/~lacasa

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Experimental Evaluation Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Motivation Evolution of computer security Economic, technology, and social trends Proliferation of embedded computing systems Ubiquitous accessibility and connectivity Diversification of architectures Tightening time-to-market constraints Growing number of computer security exploits Software vulnerabilities Piracy Reverse engineering Computer security today is a critical issue …even more so in the future In the past, attackers in most cases needed physical access to the computer system Today: connectivity to Internet and SW vulnerabilities permit remote attacks In the future, expected proliferation of Internet-enabled embedded systems, increased sw complexity and reduced time-to-market will set the stage for disaster. e.g., the health-monitoring system of the guy in the picture can be the target of a remote attack, but so can be his smart car or his smart refrigerator, resulting for example in false emergency calls or in ordering 100 gallons of chocolate milk. (and most likely sw running on these systems will not be tested enough to remove all security-related defects.)

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Experimental Evaluation Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Computer Security Integrity Confidentiality Availability Prevent execution of unauthorized code and use of unauthorized data Confidentiality Prevent unauthorized copying Availability Ensure system is available to legitimate users Integrity and confidentiality influence availability

Software Attacks Examples Buffer Overflow Exceed buffer size, overwrite return address Format String Vulnerabilities in printf-family functions Integer Error Integer arithmetic errors leading to undersized buffers Dangling Pointer Vulnerability when free called twice Arc-Injection Cause jump to library function Ability to run programs at lower permission levels or access system over the network Inject malicious code Overwrite a return address Buf[0] local variables Buf[0] ... ... Buf[n-1] Buf[n-1] Local var #2 Local var #2 Local var #1 Old pointer Local var #1 FP Previous FP FP Previous FP Ret. Address Ret. Address Arg #1 Arg #1 function arguments ... ... Arg #n Arg #n … Attack Code

Physical Attacks Examples Direct physical tampering Spoofing Substitute with malicious block Splicing Substitute with different valid block Replay Substitute with stale block Direct physical tampering Attacker has access to physical hardware Attacker can modify and override bus transactions Useful for reverse engineering BusRd(IBJ) IBJ MJ BusRd(IBJ) IBI IBJ IBJ BusRd(IBJ) CPU Main Memory DBJ DBJ* Bus

Side-channel Attacks Learn secrets by indirect analysis Examples Ability to run programs with lower permissions or direct physical access Two phases: collect information about system, then deduce secrets from that information Examples Timing Analysis Different operations take different amounts of time Differential Power Analysis Processor consumes different amounts of power for different instructions Fault Exploitation Compare results produced with and without a hardware fault Architectural Exploitation Take advantage of known architectural features

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Experimental Evaluation Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Research in Academia Individual Attack Solutions Secure stack, pointer encryption, etc. Execute Only Memory (XOM) (Stanford) Seminal work, several extensions Sign & Verify (UAH, Microsoft) Embedded signatures in code, verify at runtime AEGIS Secure Processor (MIT) Implemented on FPGA Uses physical unclonable functions Static software techniques try to find vulnerabilities using code analysis. however, completely automated tools are either not scalable or not precise. Programmers annotations can improve scalability and precision issues, but put an additional burden on programmers, and one can argue that annotations may be as error-prone as programming. Dynamic software techniques aim to prevent code injection attacks or to make attack less likely to succeed Various techniques have been proposed, from code augmentation with run-time checks, safe dialects of C language, to code or address obfuscation and monitoring of program behavior Often require recompilation and incur significant performance and power overhead

Industrial Solutions Flag portions of memory as not usable for instructions Intel Execute Disable Bit AMD No Execute Bit Augment existing processor designs IBM SecureBlue ARM TrustZone Maxim DS5250 Secure Microprocessor Co-processor for handling sensitive operations further increase in the number of transistors on a chip will enable integrated hw support for security-related tasks that were so far restricted to the sw domain. hw based defense techniques promise lower overhead in performance and energy compared to solely software solutions several researchers proposed hw support to prevent ss attacks various obfuscation techniques can also benefit from hw support, and one possibility is to completely encrypt the code Another approach is to tag untrustworthy data that cannot be used for control transfer The code integrity in run-time can be successfully protected if all instruction blocks are signed with a cryptographically secure signature. We did preliminary research on protection of basic blocks and cache blocks using signatures. and another independent research also propose to sign all cache blocks and to verify signatures in run-time. Hw based techniques have already found their way into mainstream processors, e.g., Intel – execute disable bit, which OS can set to prevent execution of a memory page

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Results Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Architectures for Runtime Verification Goal: come up with architectural extensions that are Universal Cost-effective Power efficient Performance effective Applicable to legacy software Offer protection from a wide range of vulnerabilities, rather than vulnerability specific solutions Require minimal additional HW resources and minimal or no changes in the ISA Minimal overhead in consumed power Minimal overhead in performance

Architectures for Runtime Verification Assume processor chip is secure Ensure integrity and confidentiality at boundaries 3-step sign-and-verify mechanism Secure installation Secret keys and instruction block signatures are generated and stored together with the program binary Secure Loading Extract secret program keys Secure execution Signatures are calculated from fetched instructions and compared to stored signatures

Mechanism for Software Integrity and Confidentiality Secure Installation Program Loading Original Code Signed Code Trusted Code Generate Keys Program Header Secure Mode Key1,Key2,Key3 ECPU.Key(Key1) Decrypt Keys Key1,Key2,Key3 ECPU.Key (Key2) Secure Execution Encrypt Keys ECPU.Key(Key3) A I-Block EKey3(I-Block) I-Block Encrypt I-Block Decrypt I-Block Instruction Fetch here is an illustration of the sign and verify mechanism here is an instr block in the original code During secure installation, the instructions in this block pass through a MISR – a shift reg with linear feedback. the final MISR output is encrypted using AES and stored with the code The keys for MISR and AES are stored in hardware and available only to the secure installer, which is protected by a password or a smart card. On a cache miss, the signature is fetched from memory and decrypted using AES. fetched instructions pass through a same MISR, and two signatures are compared the result of this comparison determines whether the fetched code can be trusted Signature Sign I-Block Re-Sign I-Block =? Signature Fetch Signature Match

Basic Implementation: Wait ‘till Verify, CBC-MAC

Architectural Enhancements Reducing performance overhead Parallelizable Message Authentication Code (PMAC) [Black, Rogaway 2002] Speculative instruction execution -- Run before Verification (RbV) Reducing memory overhead Protect multiple cache blocks with a signature

Parallel MAC: SIOM 31 I0 I1 A(SB0) I0 I2 I3 I1 I4 I5 I2 I6 I7 I3 S0 S1 I0 I1 A(SB0) I0 I2 I3 I1 I4 I5 I2 I6 I7 I3 S0 S1 A(SB1) I4 SP[A(SB0)] SP[A(SB1)] S2 S3 I5 I6 AES AES I7 KEY1 KEY1 S0 x x S1 S2 AES AES S3 KEY2 KEY2 S(SB0) S(SB1) x =?

Parallel MAC: SICM C0 C1 31 C2 C3 A(SB0) C0 C4 C5 C1 C6 C7 C2 eS0 eS1 C2 C3 A(SB0) C0 C4 C5 C1 C6 C7 C2 eS0 eS1 C3   eS2 eS3 A(SB1) C4 C5 AES AES C6 KEY3 KEY3  C7 SP[A(SB0)] SP[A(SB1)] eS0 AES eS1 AES AES KEY3 eS2 SP[A(eS)] KEY1 KEY1 eS3 x x AES AES KEY2 KEY2 S(SB0) S(SB1) x =?

Verification Latency Integrity Only Integrity and Confidentiality

Run Before Verification Speculative execution: continue executing once I-block is fetched, in parallel with verification Do not commit instructions before verification Instruction Verification Buffer for in-order processors Modify reorder buffer in out-of-order processors Instruction Verification Buffer Ready Flag Verified Flag IType Destination Value 1 ... n-1

Reducing Memory Overhead Protect two I-blocks with one signature Signature produced by XORing signatures of all sub-blocks Need both blocks to calculate signature, other block may or may not be in cache Sub-block 0 Sub-block 1 Sub-block 2 Sub-block 3 Signature Block A Block B Instruction Opportunity Buffer Miss on Condition Action Block A Block B in cache Fetch block A and Signature Block B not in cache Fetch blocks A and B (stored in IOB) and Signature Block B Block A in cache Fetch block B and Signature Block A not in cache Fetch A, B, and Signature Valid Flag Tag I-block 1 ... m-1

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Experimental Evaluation Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Experimental Environment Benchmark Inputs Benchmark Source Code (MiBench, MediaBench, BasicCrypt) ARM Cross Compiler Architecture Parameters Executable Baseline Simulator Secure Installation Emulator Simulator based on Sim-Panalyzer Performance metric: sim_cycle Energy metric: uarch.pdissipation Normalized to the baseline architecture Baseline Results Secure Executable Benchmark Inputs Extended Simulator Architecture Parameters Results

Instruction Block Signature Verification Unit Data bus Processor … MMU L1 D-cache … sig sig FSig Datapath L1 I-cache XOR =? match FPUs IF CSig I-cache Crypto Pipeline (57K gates) IVB (FIFO) IBSVU Control IOB (FIFO) Program keys

Performance Overhead

IVB Buffer Depth

Energy Overhead

Outline Motivation Computer Security – Threat Models Related Work Architectures for Run-Time Verification of Software Integrity and Confidentiality Results Conclusion Here is the outline of my presentation: First I will explain our motivation to study hardware techniques for ensuring code integrity. next, I will give a short overview of techniques to counter code injection attacks. Then I will introduce a common mechanism for instruction block verification and its 4 implementations. After that I will explain the experimental methodology and present evaluation results. Finally, I will conclude my presentation.

Conclusions Contributions Future work Extension of the sign-and-verify mechanism to ensure both software integrity and confidentiality Architectural enhancements for low performance and power overheads Double key parallelizable MAC Instruction Verification Buffer Reducing memory overhead Protect multiple blocks with a single signature Future work Ensuring data integrity and confidentiality Resilience to side-channel attacks