250 likes | 379 Views
This paper discusses the pivotal role of secure web applications in contemporary infrastructure, highlighting that 69% of internet vulnerabilities stem from these applications. It introduces "Swift," a novel architecture designed to automatically partition code and data, ensuring security-critical components are executed only on the server side for enhanced confidentiality and integrity. The architecture facilitates the development of secure applications while maintaining performance standards. Key elements include the Swift Runtime, the evaluation of its effectiveness, and the implementation of real-world applications demonstrating its capabilities.
E N D
Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Meyers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng. Cornell University
Outline • Introduction • Swift Architecture • Writing Swift Applications • WebIL • Swift Runtime • Evaluation • Conclusion
Introduction Web applications are a critical part of today’s infrastructure
Introduction • Web applications account for 69% of internet vulnerabilities • Developer dilemma • Performance vs security
Introduction • Guess a number game • Confidentiality requirement • Client cannot see number • Integrity requirement • Client cannot affect number of guesses • Only server can decide if guess is correct • Client side only implementation • Best performance • Client can cheat
Swift • Building web applications that are secure by construction • Automatic partitioning of code and data • Security critical code/data placed on server side only • Code/data placed on client side for performance
Swift Architecture • Jif Source Code • WebIL • WebIL Optimization • Splitting Code • JavaScript and Java Output • Partitioning and Replication
Writing Swift Applications • Extensions of Jif programming language • Security policies expressed using labels • Confidentiality and Integrity policies • Labels refer to principals • *(server) and client principals • Compiler statically checks that information flow is consistent with policies • Trust model • Un trusted client • Trusted server
WebIL • Concerned with placement of code and data • Replace Jif labels with placement annotations • Placements chosen to optimize responsiveness without sacrificing security • Partitioning solved as Integer programming problem
Placement Annotations • 9 placement annotations
Partitioning Algorithm • Represent control flow as weighted directed graph • Graph nodes are statements • Edge weights are exec. frequencies • Integer programming problem • Reduce to instance of max flow problem • Solution is placements of code/data
Swift Runtime • Controls synchronization and communication • JavaScript runs on Client • Java code runs on server • Asymmetric trust model • Execution blocks • Closures • Activation Records
Execution Block • Methods divided into execution blocks • Single entry • Multiple exits • Unique ids • Control transfer message • Branch to block executing on different host
Activation Records • Execution blocks run in context of activation records • Client/server have different views of same activation record • Activation record updates forwarding between hosts • Security restrictions of forwarding
Closures • Next execution block id and activation record id • Stack of closures • Correct simulation of method calls/exceptions • Integrity of control flow • Clients invoke high integrity closures in controlled way
Evaluation • Swift Compiler • Jif compiler + 20K LOC • Runtime system = 2.6K LOC • Six web applications implemented
Conclusion • Constructing secure web applications • Automatic partitioning of functionality • Enforcement of information security policies • Programmer effort to add annotations