290 likes | 430 Vues
This update outlines the planned deliverables and schedule for the MIT-LL integration, focusing on the Secure Note (SNote) application and JAM Weaver. Key deliverables include a secure note policy, modified Chrome browser for enforcement, and a virtual machine image for JAM. Key dates are set for policy delivery on September 3rd and enforcement on September 10th. The update also highlights the integration of policy specification using JavaScript and the CapWeave system for enforcing PHP script policies, ensuring secure operations within the CRASH framework.
E N D
Update on MIT-LL Integration Bill Harris and Rich Joiner
Schedule: JAM • Deliverables: • Policy for Secure Note application • JAM weaver • Chrome browser modified for enforcement • Weaver/policy delivery planned for 9/3. • Enforcement delivery planned for 9/10.
Application: Secure Note • Written by MIT-LL crew • Code comprises • SNote application logic • Midori UI library • Google AES encryption library • http://snote/SNoteSwindler.html
Policy • Read-only, write-once for display elements • Write-only, read-once for input elements
Policy state machine a: set(%x.textContent) && %x.className === “non-editable” b: set(%x.innerHTML) && %x.className === “non-editable” c: get(%x.textContent) && %x.className === “destructive-read” d: get(%x.innerHTML) && %x.className === “destructive-read” e: set(%x.textContent) && %x.className === “read-only” f: set(%x.textContent) && %x.className === “read-only” g: get(%x.textContent) && %x.className === “write-only” h: get(%x.textContent) && %x.className === “write-only” 1 a|b a|b 0 -1 e|f|g|h c|d c|d 2
Policy specification 0,2: set(%x.textContent) && %x.className === "non-editable" 2,-1: set(%x.innerHTML) && %x.className === "non-editable" 0,2: set(%x.innerHTML) && %x.className === "non-editable" 2,-1: set(%x.textContent) && %x.className === "non-editable" 0,-1: set(%x.innerHTML) && %x.className === "read-only“ 0,-1: set(%x.textContent) && %x.className === "read-only" 0,1: get(%x.textContent) && %x.className === "destructive-read" 1,-1: get(%x.textContent) && %x.className === "destructive-read" 0,1: get(%x.innerHTML) && %x.className === "destructive-read" 1,-1: get(%x.innerHTML) && %x.className === "destructive-read" 0,-1: get(%x.textContent) && %x.className === "write-only" 0,-1: get(%x.innerHTML) && %x.className === "write-only"
JAM Weaver • To be delivered as a virtual machine image • Compiled JAM binaries • Test cases • Script to download and install dependencies • Documentation • Policy specification language • General usage • Current limitations
Enforcement • Checks are evaluated at runtime in an isolated forked process • JavaScript native functions added to trigger the fork and evaluate policy predicates • To be delivered as a stand-alone Chrome binary built on FreeBSD 9.
CapWeave in the CRASH System • Overview of CapWeave usage • Sketch of our approach • Discuss deliverables, requirements
CapWeave Usage • CRASH server generates web contentby running php scripts • CRASH team defines policy for all php scripts • CRASH team applies CapWeave to rewrite phpinterpreter to enforce policy
php workflow filesystem php web_script.cgi web content
php Requirements • Whitelist of system libs: read-only • php, MediaWikiconfig. files: read-only • MediaWikiphp scripts: read-only • MediaWiki skin files: read-only • Scratch directories (e.g., /tmp): read-write • Sockets to database server: read-write
CapWeave in the CRASH System • Overview of CapWeave usage • Sketch of our approach • Discuss deliverables, requirements
UW Challenges • Express requirements in policy language • Rewrite/weave the php to satisfy the policy
A Shim for open() intshim_open(char* path, int mode) { intfd = open(path, mode); if (sat_req_1(path)) { cw_act(0); } if (sat_req_2(path)) { … } return fd; }
Requirement 1 Policy (* requirement 1 policy: *) let not_fd_read = … in any_act* . (cw_act 0) . (any_prog_actwith not_fd_read)
A Weaved shim_open() intshim_open(char* path, int mode) { intfd = open(path, mode); if (sat_req_1(path)) { cw_act(0); lc_limitfd(fd, CAP_READ); } if (sat_req_2(path)) { … } return fd; }
CapWeave in the CRASH System • Overview of CapWeave usage • Sketch of our approach • Discuss deliverables, requirements
Requirements • Decision functions for each requirement • E.g.: • intis_whitelist_sys_lib(char* path) • intis_mediawiki_config(char* path)
Deliverables • Policy regex text file • Capsicum 9 VMWare image with weaved php • Capsicum team recently posted a workingCapsicum VMWare image