1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University.

Slides:



Advertisements
Similar presentations
Dataflow Analysis for Datarace-Free Programs (ESOP 11) Arnab De Joint work with Deepak DSouza and Rupesh Nasre Indian Institute of Science, Bangalore.
Advertisements

Information Flow and Covert Channels November, 2006.
Challenges for Information-flow Security* Steve Zdancewic University of Pennsylvania * This talk is an attempt to be provocative and controversial.
An Abstract Interpretation Framework for Refactoring P. Cousot, NYU, ENS, CNRS, INRIA R. Cousot, ENS, CNRS, INRIA F. Logozzo, M. Barnett, Microsoft Research.
1 InfoShield: A Security Architecture for Protecting Information Usage in Memory Georgia Tech Weidong Shi – Georgia Tech Josh Fryman – Intel Corporation.
Building Secure Distributed Systems The CIF model : Component Information Flow Lilia Sfaxi DCS Days - 26/03/2009.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Untrusted Hosts and Confidentiality: Secure Program Partitioning Steve Zdancewic Lantian Zheng Nathaniel Nystrom Andrew Myers Cornell University.
Towards Static Flow-based Declassification for Legacy and Untrusted Programs Bruno P. S. Rocha Sruthi Bandhakavi Jerry den Hartog William H. Winsborough.
1 Mooly Sagiv and Greta Yorsh School of Computer Science Tel-Aviv University Modern Compiler Design.
Current Techniques in Language-based Security David Walker COS 597B With slides stolen from: Steve Zdancewic University of Pennsylvania.
Ensuring Operating System Kernel Integrity with OSck By Owen S. Hofmann Alan M. Dunn Sangman Kim Indrajit Roy Emmett Witchel Kent State University College.
David Brumley, Pongsin Poosankam, Dawn Song and Jiang Zheng Presented by Nimrod Partush.
Access Control Methodologies
Ashish Kundu CS590F Purdue 02/12/07 Language-Based Information Flow Security Andrei Sabelfield, Andrew C. Myers Presentation: Ashish Kundu
Using Programmer-Written Compiler Extensions to Catch Security Holes Authors: Ken Ashcraft and Dawson Engler Presented by : Hong Chen CS590F 2/7/2007.
The Design and Implementation of a Certifying Compiler [Necula, Lee] A Certifying Compiler for Java [Necula, Lee et al] David W. Hill CSCI
Extensible Verification of Untrusted Code Bor-Yuh Evan Chang, Adam Chlipala, Kun Gao, George Necula, and Robert Schneck May 14, 2004 OSQ Retreat Santa.
Typed Assembly Languages COS 441, Fall 2004 Frances Spalding Based on slides from Dave Walker and Greg Morrisett.
Information Flow, Security and Programming Languages Steve Steve Zdancewic.
Confined Types Encapsulation and modularity Seminar November, 2005 presented by: Guy Gueta.
Steve Zdancewic ESOP011 Secure Information Flow and CPS Steve Zdancewic Joint work with Andrew Myers Cornell University.
6/18/2015 4:21 AM Information Flow James Hook CS 591: Introduction to Computer Security.
Verifiable Security Goals
Decentralized Robustness Stephen Chong Andrew C. Myers Cornell University CSFW 19 July 6 th 2006.
6/20/ :09 PM Information Flow James Hook CS 591: Introduction to Computer Security.
Language-Based Security Proof-Carrying Code Greg Morrisett Cornell University Thanks to G.Necula & P.Lee.
Polyglot: An Extensible Compiler Framework for Java Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers Presentation by Aaron Kimball & Ben Lerner.
Robust Declassification Steve Zdancewic Andrew Myers Cornell University.
A Type System for Expressive Security Policies David Walker Cornell University.
CS 711 Fall 2002 Programming Languages Seminar Andrew Myers 2. Noninterference 4 Sept 2002.
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
Extensible Untrusted Code Verification Robert Schneck with George Necula and Bor-Yuh Evan Chang May 14, 2003 OSQ Retreat.
Type-Based Distributed Access Control Tom Chothia, Dominic Duggan, and Jan Vitek Presented by Morgan Kleene.
Automatic Implementation of provable cryptography for confidentiality and integrity Presented by Tamara Rezk – INDES project - INRIA Joint work with: Cédric.
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Meyers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng. Cornell University.
Security Policy What is a security policy? –Defines what it means for a system to be secure Formally: Partition system into –Secure (authorized) states.
Cs3102: Theory of Computation Class 18: Proving Undecidability Spring 2010 University of Virginia David Evans.
Language-Based Information-Flow Security Richard Mancusi CSCI 297.
Preventing Information Leaks with Jeeves Jean Yang, MIT April 8, 2015.
Containment and Integrity for Mobile Code Security policies as types Andrew Myers Fred Schneider Department of Computer Science Cornell University.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style Language-Based Information- Flow Security Andrei Sabelfeld.
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
CSC-682 Cryptography & Computer Security Sound and Precise Analysis of Web Applications for Injection Vulnerabilities Pompi Rotaru Based on an article.
A Bipartite Graph Model of Information Flow IFIP WG 2.3, May 2014 Gary T. Leavens (with John L. Singleton) University of Central Florida Orlando Florida.
Information Leakage Analysis in Mobile Ambients Chiara Braghin, Agostino Cortesi, Riccardo Focardi Dipartimento di Informatica Università Ca’ Foscari Venezia,
Containment and Integrity for Mobile Code End-to-end security, untrusted hosts Andrew Myers Fred Schneider Department of Computer Science Cornell University.
SECURE WEB APPLICATIONS VIA AUTOMATIC PARTITIONING S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, X. Zheng Cornell University.
Writing Systems Software in a Functional Language An Experience Report Iavor Diatchki, Thomas Hallgren, Mark Jones, Rebekah Leslie, Andrew Tolmach.
12/4/20151 Computer Security Security models – an overview.
CS101: Introduction to Computer Science Slides adapted from Sedgewick and Wayne Copyright © Your First Java.
A Specification Logic for Exceptions and Beyond Cristina David Cristian Gherghina National University of Singapore.
Introduction Program File Authorization Security Theorem Active Code Authorization Authorization Logic Implementation considerations Conclusion.
Knowledge Networks or “The Rise of the Machines”.
SAFEWARE System Safety and Computers Chap18:Verification of Safety Author : Nancy G. Leveson University of Washington 1995 by Addison-Wesley Publishing.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style Decentralized Information Flow A paper by Myers/Liskov.
Certification of Programs for Secure Information Flow Dorothy & Peter Denning Communications of the ACM (CACM) 1977.
3/14/2016 8:37 PM Information Flow Epilog James Hook CS 591: Introduction to Computer Security.
Language-Based Information- Flow Security (Sabelfeld and Myers) “Practical methods for controlling information flow have eluded researchers for some time.”
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style JFlow: Practical Mostly-Static Information Flow Control.
Authors: Mark Reitblatt, Nate Foster, Jennifer Rexford, Cole Schlesinger, David Walker Presenter: Byungkwon Choi Abstractions for Network Update INA.
Secure Information Flow for Reactive Programming Paradigm Zhengqin Luo SAFA workshop 2009.
Paper Reading Group:. Language-Based Information-Flow Security. A
Security in Java Real or Decaf? cs205: engineering software
Information Security CS 526
Language-based Security
Information Security CS 526
Information Security CS 526
Carmine Abate Rob Blanco Deepak Garg Cătălin Hrițcu Jérémy Thibault
Presentation transcript:

1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University

2 End-to-end security? Complex computations, untrusted components Security mechanisms: access controlfirewalls encryptiondigital signing static verificationmandatory controls Security guarantees: limited, not compositional

3 End-to-end policies End-to-end confidentiality policy: “The information in this file is confidential and should only be released only to users U 1 and U 2 ” End-to-end integrity policy: “This information is trusted and should only be affected by users U 1 and U 2 ” Not access control — information flow control

4 Noninterference “High” inputs cannot affect “low” observables –Confidentiality: high = confidential, low = public –Integrity: low = trusted, high = untrusted Can enforce using static type system : cheap, relatively accurate H1L1 L2 H2 H3L1 L2H4 LL

5 Static checking Expressions have associated static label Label captures part of security policy for labeled data L 1  L 2 means policy L 2 is at least as restrictive as L 1 int{L1} x; int{L2} y; x = y;  requires L2  L1 Also need program-counter label to catch implicit flows

6 Demo: Jif Java + Information Flow –security-typed language –fine-grained information flow checking –full-featured language: objects, classes, exceptions –genericity with respect to security –declassification –static and dynamic security policies Implemented using JLtools extension toolkit –6k semis –Nate Nystrom, Lantian Zheng, Steve Zdancewic

7 Challenges 1. Real computations must leak information must go beyond noninterference robust declassification 2. Enforcement for low-level programs first-class linear control 3. Distributed computation/untrusted hosts 4. Timing channels/multithreaded programs

8 Declassification Declassification (downgrading) : reduction of the confidentiality level of data Allows the intentional release of confidential information (relax noninterference) L1L1 L2L2 L3L3 declassify L 3  L 1

9 Password Example Password Checker public query confidential password public result declassification inside

10 Laundering Attack Password Checker public query confidential password leaked secret copy Secret copied into password is leaked! declassification inside

11 Robust declassification Intuition: a system is robust against attackers if declassification only releases information intentionally Goal: –Characterize the end-to-end security of a system containing declassification –Define conditions that prevent unintentional leaks

12 A simple system model A system S is:  is a set of states:  1,  2, …  is a transition relation in 

13 Views view of ( ,  )  : equivalence relation on  Captures what a viewer (user, attacker) can see directly about a state  Generalization of “security level” 

14 Example views "integer component is visible" ("attack at dawn", 3)  I ("retreat", 3) ( x, i )  I ( y, j ) iff i = j ("attack at dawn", 3)   I ("retreat", 4)  = String × Integer ( x, i )   ( y, j ) iff ( x, i ) = ( y, j ) “complete view (no secrets)”

15 Trace equivalence A view induces an observation of a trace:   = ("x",1)  ("y",1)  ("z",2)  ("z",3)   through view  I 1  1  2  3   = ("a",1)  ("b",2)  ("z",2)  ("c",3)   through view  I 1  2  2  3 …these traces are equal modulo stuttering

16 Observational Equivalence observational equivalence : S[  ]  S[  ]  ' if the traces from  look the same as the traces from  ' through the view . 

17 Observational Equivalence observational equivalence : S[  ]  S[  ]  ' if the traces from  look the same as the traces from  ' through the view . S[  ]  S[  ]

18 Secure Systems The view S[  ] captures what can be learned by observing execution of S through view  S is  -secure if  = S[  ] –“Nothing more is learned from observing what the program does” –simple formulation of noninterference Difference between  and S[  ] captures intentional information release when S contains declassification

19 Attacks Passive attack : observation Active attack : modification An  A - attack is a system A = ( ,   ) such that  A = A[  A ]  A : the attacker's view   : a set of additional transitions  A = A[  A ] : “attacker can’t construct attack that uses information he can’t observe”

20 Laundering attack AA AA   password datasecret yes no

21 Laundering attack S[  A ]  S[  A ]   password datasecret yes no

22 Effect of laundering attack  S[  A ]    (S  A)[  A ] Observation of attacked system gives more information: Not robust password datasecret yes no

23 Robustness A system is secure against a passive attack A if S[  A ] =  A A system is robust against an active attack A if (S  A)[  A ]  S[  A ] “The attacker learns at most as much from observing the attacked system as from passive observation”

24 Summary, part 1 Robustness: new building block for characterizing end-to-end system security in presence of declassification and active attack [CSFW01] Next step: formulate static typing rules that enforce robustness (as well as noninterference)

25 Verifying programs Jif program Java program jif bytecode machine code javac JIT Secure? annotations

26 Implicit flows at source level boolean{H} b; boolean{L} x = false ; if (b) { x = true; /* not OK */ } Implicit flow: information carried through control structure Solution: introduce static approximation to implicit flow (pc) –Type of every expression acquires pc boolean{H} b; boolean{L} x = false L ; i f (b) { x = true H ; }

27 Implicit flow in low-level lang. High-level control structures (if, while, switch, function calls, returns)  indirect, direct jumps Less ability to reason about implicit flow Simple rule: pc at target of jump always more secret than at jump instruction –too restrictive –doesn’t handle indirect jumps (return, method call, switch)

28 Loss of precision boolean{H} b; /* pc = L */ boolean{L} x = false L ; /* pc = L */ if (b) { f() } /* pc = H */ x = true L ; /* pc = L */ MOV x, 0; pc = L CMP b, 0; pc = L JZ skip; pc = H CALL f; pc = H skip:MOV x, 1 H ; pc = H High-level: safe Low-level: apparently unsafe

29 Security-typed IL First low-level typed language with support for dynamic control transfers, static information flow control [ESOP’01] Continuations in A-normal form: close to assembly code Linear continuations preserve precision of high-level source analysis : first-class postdominators First proof of language-based enforcement of noninterference (for any language with state and higher-order control) e ::= let x = prim in e | if v then e 1 else e 2 | let x = ref l  v in e | set v 1 := v 2 in e | letlin y = lv in e | goto v 1 (v 2, lv) | lgoto lv 1 v

30 Summary, part 2 Source language can be compiled to a low- level language without loss of precision Next step: information flow verification for machine code

31 Conclusions New practical and theoretical tools for enforcing end-to-end security Language-based approaches (type-checking) leverage progress in PL area for systems issues Next: validation of end-to-end security properties for large systems?