Carmine Abate Rob Blanco Deepak Garg Cătălin Hrițcu Jérémy Thibault

Slides:



Advertisements
Similar presentations
Chapt.2 Machine Architecture Impact of languages –Support – faster, more secure Primitive Operations –e.g. nested subroutine calls »Subroutines implemented.
Advertisements

Operating System Security
An Abstract Interpretation Framework for Refactoring P. Cousot, NYU, ENS, CNRS, INRIA R. Cousot, ENS, CNRS, INRIA F. Logozzo, M. Barnett, Microsoft Research.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Current Techniques in Language-based Security David Walker COS 597B With slides stolen from: Steve Zdancewic University of Pennsylvania.
Mehmet Can Vuran, Instructor University of Nebraska-Lincoln Acknowledgement: Overheads adapted from those provided by the authors of the textbook.
A Logic of Secure Systems and its Application to Trusted Computing Anupam Datta, Jason Franklin, Deepak Garg, and Dilsun Kaynar Carnegie Mellon University.
Hyperproperties Michael Clarkson and Fred B. Schneider Cornell University IEEE Symposium on Computer Security Foundations June 23, 2008 TexPoint fonts.
New Direction for Software Protection in Embedded Systems Department of EECS University of Michigan Feb 22, 2007 Kang G. Shin.
Ashish Kundu CS590F Purdue 02/12/07 Language-Based Information Flow Security Andrei Sabelfield, Andrew C. Myers Presentation: Ashish Kundu
Secure web browsers, malicious hardware, and hardware support for binary translation Sam King.
Breno de MedeirosFlorida State University Fall 2005 Buffer overflow and stack smashing attacks Principles of application software security.
Steve Zdancewic ESOP011 Secure Information Flow and CPS Steve Zdancewic Joint work with Andrew Myers Cornell University.
Extensibility, Safety and Performance in the SPIN Operating System Bershad et al Presentation by norm Slides shamelessly “borrowed” from Stefan Savage’s.
1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University.
CMSC 414 Computer and Network Security Lecture 9 Jonathan Katz.
Robust Declassification Steve Zdancewic Andrew Myers Cornell University.
A Type System for Expressive Security Policies David Walker Cornell University.
Slide 6-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 6.
Towards High-Assurance Hypervisors Jason Franklin Joint with Anupam Datta, Sagar Chaki, Ning Qu, Arvind Seshadri.
Automatic Implementation of provable cryptography for confidentiality and integrity Presented by Tamara Rezk – INDES project - INRIA Joint work with: Cédric.
FLOWFOX A WEB BROWSER WITH FLEXIBLE AND PRECISE INFORMATION CONTROL.
Secure Virtual Architecture John Criswell, Arushi Aggarwal, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve University of Illinois at Urbana-Champaign.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Computer Science Open Research Questions Adversary models –Define/Formalize adversary models Need to incorporate characteristics of new technologies and.
Intro to Architecture – Page 1 of 22CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Introduction Reading: Chapter 1.
Containment and Integrity for Mobile Code Security policies as types Andrew Myers Fred Schneider Department of Computer Science Cornell University.
Native Client: A Sandbox for Portable, Untrusted x86 Native Code
Reasoning about Information Leakage and Adversarial Inference Matt Fredrikson 1.
WSMX Execution Semantics Executable Software Specification Eyal Oren DERI
Securing Class Initialization in Java-like Languages.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
High Integrity Ada in a UML and C world Peter Amey, Neil White Presented by Liping Cai.
Secure Compiler Seminar 4/11 Visions toward a Secure Compiler Toshihiro YOSHINO (D1, Yonezawa Lab.)
Lecture 4 Page 1 CS 111 Online Modularity and Virtualization CS 111 On-Line MS Program Operating Systems Peter Reiher.
Version 02U-1 Computer Security: Art and Science1 Correctness by Construction: Developing a Commercial Secure System by Anthony Hall Roderick Chapman.
Hyperproperties Michael Clarkson and Fred B. Schneider Cornell University Ph.D. Seminar Northeastern University October 14, 2010.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
Duminda WijesekeraSWSE 623: Introduction1 Introduction to Formal and Semi- formal Methods Based on A Specifier's Introduction to Formal Methods (J. Wing)
Efficient Software-Based Fault Isolation Authors: Robert Wahbe Steven Lucco Thomas E. Anderson Susan L. Graham Presenter: Gregory Netland.
CS533 Concepts of Operating Systems Jonathan Walpole.
PREPARED BY: MS. ANGELA R.ICO & MS. AILEEN E. QUITNO (MSE-COE) COURSE TITLE: OPERATING SYSTEM PROF. GISELA MAY A. ALBANO PREPARED BY: MS. ANGELA R.ICO.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Lecture 3 Translation.
Cyber Physical System Security
Modularity Most useful abstractions an OS wants to offer can’t be directly realized by hardware Modularity is one technique the OS uses to provide better.
Introduction to Operating Systems
CSCE 548 Secure Software Development Risk-Based Security Testing
Andreas Hoffmann Andreas Ropers Tim Kogel Stefan Pees Prof
Outline What does the OS protect? Authentication for operating systems
Operating Systems: A Modern Perspective, Chapter 6
Paper Reading Group:. Language-Based Information-Flow Security. A
Outline What does the OS protect? Authentication for operating systems
University of Washington
Memory Protection: Kernel and User Address Spaces
Introduction to Operating Systems
The Operating System Memory Manager
Chapter 11 Introduction to Programming in C
Security in Java Real or Decaf? cs205: engineering software
Bastion secure processor architecture
Lecture Topics: 11/1 General Operating System Concepts Processes
Information Security CS 526
Sai Krishna Deepak Maram, CS 6410
Shielding applications from an untrusted cloud with Haven
CSE 153 Design of Operating Systems Winter 2019
Information Security CS 526
String Analysis for JavaScript Programs Using JSAI
Verification with Small and Short Worlds Rohit Sinha, Cynthia Sturton, Petros Maniatis, Sanjit A. Seshia, David Wagner Introduction Verification of large.
EECE.4810/EECE.5730 Operating Systems
Presentation transcript:

Journey Beyond Full Abstraction: Exploring Robust Property Preservation for Secure Compilation Carmine Abate Rob Blanco Deepak Garg Cătălin Hrițcu Jérémy Thibault Marco Patrignani Inria Paris Inria Paris MPI-SWS Inria Paris Inria Paris Stanford & CISPA

Good programming languages provide helpful abstractions for writing more secure code structured control flow, procedures, modules, interfaces, correctness and security specifications, ... abstractions not enforced when compiling and linking with adversarial low-level code all source-level security guarantees are lost End: Such abstractions are crucial for making the effort required to reason about the correctness and security properties of realistic code tractable in practice.

HACL* verified cryptographic library, in practice 16.000.000+ LOC in C/C++ 160x ~100.000 LOC in F* HACL* library Firefox web browser KreMLin + CompCert GCC ASM ASM End: compromised (or malicious) application linking in miTLS can easily read and write miTLS’s data and code, jump to arbitrary instructions, smash the stack, ... Insecure interoperability: linked code can read and write data and code, jump to arbitrary instructions, smash the stack, ...

We need secure compilation chains Protect source-level abstractions even against linked adversarial low-level code various enforcement mechanisms: processes, SFI, ... shared responsibility: compiler, linker, loader, OS, HW Goal: enable source-level security reasoning linked adversarial target code cannot break the security of compiled program any more than some linked source code no "low-level" attacks

Robustly preserving security source context ∀ source context source secure program ⇒ compiler target context ∀ target context compiled secure program protected no extra power End: if source program is secure against all source contexts - then compiled program is secure against all target contexts - but what should "is secure" mean? But what should "secure" mean?

What properties should we robustly preserve? No one-size-fits-all security criterion relational hyperproperties (trace equivalence) More secure More efficient to enforce Easier to prove + code confidentiality hyperproperties (noninterference) + data confidentiality trace properties (safety & liveness) only integrity

Robust Trace Property Preservation property-based characterization property-free characterization ∀source programs. ∀π trace property. ∀source programs. ∀(bad/attack) trace t. source context trace t ∀ source context ∃ source context source program source context . ⇝t ⇒ t∈π source program . ⇝t ⇔ ⇒ ⇒ compiler compiler back- translation target context target context ∀ target context trace t compiled program ∃ compiled program ⇝t ⇒ t∈π target context ⇝t . . what one might want to achieve how one can prove it

Some of the proof difficulty is manifest in property-free characterization back-translating context ∀CT∃CS∀P∀t... back-translating finite set of finite trace prefixes ∀k∀P1..Pk∀CT ∀m1..mk ∃CS... back-translating prog & context ∀P∀CT∃CS∀t... Note: back-translating trace vs execution ... intuition vs. precision back-translating finite trace prefix ∀P∀CT∀m≤t∃CS... back-translating prog & context & trace ∀P∀CT∀t∃CS...

Journey Beyond Full Abstraction First to explore space of secure compilation criteria based on robust property preservation Carefully studied the criteria and their relations Property-free characterizations implications, collapses, separations results Introduced relational (hyper)properties (new classes!) Clarified relation to full abstraction ... Embraced and extended proof techniques ... https://github.com/secure-compilation/exploring-robust-property-preservation

Where is Full Abstraction? (i.e. robust behavioral equivalence preservation) without internal nondeterminism, full abstraction is here doesn't imply any other criterion

Full abstraction does not imply any other criterion in our diagram Intuitive counterexample adapted from Marco&Deepak [CSF'17] When context passes in bad input value (e.g. ill-typed): lunch the missiles - breaks Robust Safety Preservation or loop forever - breaks Robust Liveness Preservation or leak secret inputs - breaks Robust NI Preservation Yet this doesn't break full abstraction or compiler correctness! Full abstraction only ensures code confidentiality no integrity, no safety, no data confidentiality, ...

Embraced and extended™ proof techniques for simple translation from statically to dynamically typed language with first-order functions and I/O strongest criterion achievable back-translating context ∀CT∃CS∀P∀t... [New et al,ICFP'16] generic technique applicable back-translating finite set of finite trace prefixes ∀k∀P1..Pk∀CT ∀m1..mk ∃CS... [Jeffrey & Rathke, ESOP'05] [Patrignani et al,TOPLAS'15] TODO: reference [New et al]

Some open problems Practically achieving secure interoperability with lower-level code more realistic languages and compilation chains Verifying robust satisfaction for source programs program logics, logical relations, partial semantics, ... Different traces for source and target semantics connected by some arbitrary relation mappings between source and target properties interesting even for correct compilation

My dream: secure compilation at scale language HACL* C language + components + memory safety memory safe C component legacy C component ASM language (RISC-V + micro-policies) ASM component TODO: this repeats point 3 from previous slide SAY (beginning): The goal for SECOMP is to achieve full abstraction at scale for realistic programming languages SAY (end): Pause at the end, the goal of this project is to build all of this.

Journey Beyond Full Abstraction First to explore space of secure compilation criteria based on robust property preservation Carefully studied the criteria and their relations Property-free characterizations implications, collapses, separations results Introduced relational (hyper)properties (new classes!) Clarified relation to full abstraction ... Embraced and extended proof techniques ... https://github.com/secure-compilation/exploring-robust-property-preservation