SECURE WEB APPLICATIONS VIA AUTOMATIC PARTITIONING S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, X. Zheng Cornell University.

Slides:



Advertisements
Similar presentations
Design by Contract.
Advertisements

Mobile Agents Mouse House Creative Technologies Mike OBrien.
Information Flow and Covert Channels November, 2006.
Operating System Security
Lectures on File Management
Building Secure Distributed Systems The CIF model : Component Information Flow Lilia Sfaxi DCS Days - 26/03/2009.
Data Types in Java Data is the information that a program has to work with. Data is of different types. The type of a piece of data tells Java what can.
Ashish Kundu CS590F Purdue 02/12/07 Language-Based Information Flow Security Andrei Sabelfield, Andrew C. Myers Presentation: Ashish Kundu
Java Security: From HotJava to Netscape & Beyond Drew Dean, Edward W. Felten, Dan S. Wallach Department of Computer Science, Princeton University May,
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Swift: Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Myers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng Cornell.
Programming System development life cycle Life cycle of a program
1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University.
6/18/2015 4:21 AM Information Flow James Hook CS 591: Introduction to Computer Security.
Decentralized Robustness Stephen Chong Andrew C. Myers Cornell University CSFW 19 July 6 th 2006.
Combining Static and Dynamic Data in Code Visualization David Eng Sable Research Group, McGill University PASTE 2002 Charleston, South Carolina November.
6/20/ :09 PM Information Flow James Hook CS 591: Introduction to Computer Security.
Polyglot: An Extensible Compiler Framework for Java Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers Presentation by Aaron Kimball & Ben Lerner.
COMP 5138 Relational Database Management Systems Semester 2, 2007 Lecture 8A Transaction Concept.
Automatic Implementation of provable cryptography for confidentiality and integrity Presented by Tamara Rezk – INDES project - INRIA Joint work with: Cédric.
C++ fundamentals.
Database Management Systems (DBMS)
2  Problem Definition  Project Purpose – Building Obfuscator  Obfuscation Quality  Obfuscation Using Opaque Predicates  Future Planning.
Making Database Applications Perform Using Program Analysis Alvin Cheung Samuel Madden Armando Solar-Lezama MIT Owen Arden Andrew C. Myers Cornell.
D ATABASE S ECURITY Proposed by Abdulrahman Aldekhelallah University of Scranton – CS521 Spring2015.
Spring Roo CS476 Aleksey Bukin Peter Lew. What is Roo? Productivity tool Allows for easy creation of Enterprise Java applications Runs alongside existing.
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.
16-1 The World Wide Web The Web An infrastructure of distributed information combined with software that uses networks as a vehicle to exchange that information.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
JavaScript, Fourth Edition
© G. Dhillon, IS Department Virginia Commonwealth University Principles of IS Security Formal Models.
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
Containment and Integrity for Mobile Code Security policies as types Andrew Myers Fred Schneider Department of Computer Science Cornell University.
Protecting Internet Communications: Encryption  Encryption: Process of transforming plain text or data into cipher text that cannot be read by anyone.
JAVA SERVER PAGES. 2 SERVLETS The purpose of a servlet is to create a Web page in response to a client request Servlets are written in Java, with a little.
CMPS 211 JavaScript Topic 1 JavaScript Syntax. 2Outline Goals and Objectives Goals and Objectives Chapter Headlines Chapter Headlines Introduction Introduction.
RELATIONAL FAULT TOLERANT INTERFACE TO HETEROGENEOUS DISTRIBUTED DATABASES Prof. Osama Abulnaja Afraa Khalifah
CSE 219 Computer Science III Program Design Principles.
Containment and Integrity for Mobile Code End-to-end security, untrusted hosts Andrew Myers Fred Schneider Department of Computer Science Cornell University.
(c) University of Washington01-1 CSC 143 Java Programming as Modeling Reading: Ch. 1-6.
Control Structures II Repetition (Loops). Why Is Repetition Needed? How can you solve the following problem: What is the sum of all the numbers from 1.
BIO Java 1 Exception Handling Aborting program not always a good idea – can’t lose messages – E-commerce: must ensure correct handling of private.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
ICS 313: Programming Language Theory Chapter 13: Concurrency.
Lecture 8 Page 1 CS 111 Online Other Important Synchronization Primitives Semaphores Mutexes Monitors.
Securing Passwords Against Dictionary Attacks Presented By Chad Frommeyer.
Concurrency Properties. Correctness In sequential programs, rerunning a program with the same input will always give the same result, so it makes sense.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
A Lattice Model of Secure Information Flow By Dorothy E. Denning Presented by Drayton Benner March 22, 2000.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style Decentralized Information Flow A paper by Myers/Liskov.
JAVA SERVER PAGES -by Rubeena Memon Deepti Jain Jaya Thakar Jisha Vettuventra.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
CS162 Week 8 Kyle Dewey. Overview Example online going over fail03.not (from the test suite) in depth A type system for secure information flow Implementing.
M1G Introduction to Programming 2 2. Creating Classes: Game and Player.
Securing Web Applications Lesson 4B / Slide 1 of 34 J2EE Web Components Pre-assessment Questions 1. Identify the correct return type returned by the doStartTag()
1 Pass-By-Value Services in Object Component Software Group 1 Yannick Loitiere Andrea Rowan Michele Co Jinze Liu.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style JFlow: Practical Mostly-Static Information Flow Control.
Learning Javascript From Mr Saem
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.
World Wide Web has been created to share the text document across the world. In static web pages the requesting user has no ability to interact with the.
Introduction to Problem Solving Programming is a problem solving activity. When you write a program, you are actually writing an instruction for the computer.
Database and Cloud Security
Compiler Construction
Building Systems That Flexibly Control Downloaded Executable Content
Presentation transcript:

SECURE WEB APPLICATIONS VIA AUTOMATIC PARTITIONING S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, X. Zheng Cornell University

INTRODUCTION Designers of web applications –Want to push as much as possible application functionality into the clients –Must protect application integrity against rogue clients Paper presents a “principled approach” to building secure web applications –“Secure by construction”

Main hypotheses Servers can be trusted Clients cannot – We cannot update ourselves the balances of our bank accounts

Security Model Swift enforces security by controlling information flow –Prevents release of information to less secure consumers –Will not accept information from less trusted sources

Overall Organization Applications are written in a higher-level programming language that details all security requirements as annotations Compiler uses these annotations to decide whether an application and its data can run on the client –Partitions code and data at the level of individual expressions and object fields

ARCHITECTURE

Jif source code Written in an extension of Jif 3.0 programming language Jif is itself an extension of Java with specific mechanisms for information flow control and access control – Expressed in Jif as labels attached to program variables

WebIL Intermediate Code Intermediate language with much simpler annotations –S means annotated code/data must be placed on the server –S?C means annotated code/data must be placed on the server but can be replicated on the client

WebIL Optimization Second phase produces exact placement and replication of code and data –Satisfying all security requirements –Minimizing costs and avoiding unnecessary network messages

Splitting Code Fine grain transformation –Some statements within a specific method may run on the client while other statements must remain on the server

JavaScript Output Jif/WebIL generate Java code to run on the client Converted to JavaScript using the Google web toolkit Final code uses an Ajax approach Ajax web applications can retrieve data from the server by issuing their own HTTP requests

Partitioning and Replication Can have same computations running simultaneously on the server and the client to improve responsiveness and security Has been done manually often using different languages –Can introduce inconsistencies Swift replicates a single piece of code

WRITING SWIFT APPLICATIONS

Labels and Principals int {alice → alice, bob; bob ← alice} y; –Describes two policies that apply to y alice → alice, bob means that alice restricts release of information to herself and bob bob ← alice bob trusts the information and believes only alice should modify it

Labels and Principals int {alice → alice, bob; bob ← alice} y; int {bob → bob} x; int {alice → bob; bob ← alice} z; if (x == 0) { z = y}; –Which conditions would make this code secure? –Let us consider the flow of information from y to z

Security Conditions For every confidentiality policy on y, there is one at least as restrictive on z –True for the example For every integrity policy on z, there is one at least as restrictive on y –True for the example Must also consider implicit flows of data

Implicit Information Flows As in – if (x == 0) { z = …}; For the code to be secure, the security policy of z should be at least as restrictive as that of x –No true in example as the security policy of z is not as restrictive as that of x –Must add that bob trusts alice completely (“alice acts for bob”)

Built-in principals * : –The server –Maximally trusted principal in the system Client: –Trusts the server completely: * acts for client

An example (I) Game makeGuess: –Client must guess a secret number between 1 and 10 in less than maxtries tries –Secret number must remain secret until the game ends –Variable counting the number of tries is not secret but should not be modified by client

An example (II) Variable secret is declared int { * → *,* ← *} secret; –Secret –Only the server can update it Variable tries is declared int { * → client,* ← *} tries; – N ot secret –Only the server can update it

First problem Each guess is proposed by the client –Cannot be trusted –Must be passed to the server to be compared by server to secret value Swift has an endorse operation endorse( i, { * ← client } to {* ← *} ) –Raises the trust granted to some information

Second problem Value of secret number –Must remain secret until the client guesses it –Correct guess results in an implicit transfer of information to client Swift has an declassify operation declassify( {* → *} to { * → client } ) –Lowers the secrecy level assigned to some information

Comments Endorse and declassify operations are inherently dangerous –Must always be explicit Swift controls their use by requiring that they occur in code marked as trusted by the affected principal

Evaluation Swift compiler adds 36,000 lines of “real” code to the Jif compiler Server and client runtime systems are 3,000-line long each Porting the Jif runtime system into WebIL resulted into 2,800 lines of code

Performance Number of roundtrips is critical factor: –Still higher number than optimum –System is not fully optimized

Conclusion Swift achieves its three important goals of –Enforcement of information security –Responsive user interface –Uniform general-purpose programming model Experience will tell how easy it will be to specify the correct labels of each variable in real applications