hails protecting data privacy in untrusted web
play

Hails: Protecting Data Privacy in Untrusted Web Applications Daniel - PowerPoint PPT Presentation

Hails: Protecting Data Privacy in Untrusted Web Applications Daniel B. Giffin, Amit Levy, Deian Stefan, David Terei, John Mitchell, David Mazires, and Alejandro Russo Web platforms are great ! They allow third-party developers to build apps


  1. Hails: Protecting Data Privacy in Untrusted Web Applications Daniel B. Giffin, Amit Levy, Deian Stefan, David Terei, John Mitchell, David Mazières, and Alejandro Russo

  2. Web platforms are great ! They allow third-party developers to build apps that use our personal data.

  3. Web platforms are scary ! They allow third-party developers to build apps that use our personal data.

  4. Trust concerns Don’t know the developers • ➤ Cannot determine trustworthiness of apps They may be malicious or security-unaware • Building secure web apps is hard • ➤ Even well-meaning authors cannot be trusted

  5. Typical App Design Jen’s Browser Use popular MVC paradigm Model: interface to data Controller View: renders pages Controller: handles and responds to HTTP requests View Model

  6. Typical App Design Jen’s How is security policy Browser specified and enforced? ➤ E.g., only Jen’s friends may Controller see her email address View Model

  7. Typical App Design Jen’s How is security policy Browser specified and enforced? ➤ E.g., only Jen’s friends may Controller see her email address Intertwined throughout code ➠ Error prone and not scalable View Model

  8. Platform solutions Can decide to give an app access to data, but can’t control how the app uses your data.

  9. Is there any hope for privacy on platforms?

  10. Change the hosting model Current model • ➤ App developers host their own apps ➤ Platform enforces security: terms of service New model • ➤ Platform provider hosts apps ➤ Platform enforces security: information flow control

  11. Hails: A web platform framework Security policy is explicit and first-class • ➤ Specified as single concise module Users still trust core platform components • Apps are untrusted • ➤ Language-level information flow control guarantees apps always obey policy

  12. What makes Hails different? Aeolus, HiStar, Nexus, Jif, Ur/Web, ... No guide for structuring applications • Policies are hard to write • Not appropriate for dynamic systems, e.g., web • Modify entire application stack •

  13. Goals Deployable today! • Usable by web developers • Suitable for building extensible web platforms • ➤ Enforcing policy across untrusted apps

  14. Adding Policy to MVC New paradigm: Model- Policy -View-Controller • Policy specified alongside data model • No policy code in View or Controller •

  15. Two categories of code Models-Polices (MPs) Views-Controllers (VCs) + + Implement UI and Specify data model other functionality and policy on data ➤ Users need not ➤ Users trust MPs they use to handle data trust VCs Policy enforced globally

  16. Information flow control Policy specifies where data can flow • ➤ Wrong: app can’t read Jen’s email address because it may leak it to Eve ➤ Right: app can read Jen’s email, but only reveal it to Jen, Alice or Bob Policy follows data through system • Runtime enforces policy end-to-end • ➤ E.g., when making HTTP request

  17. Case study: GitStar

  18. Case study: GitStar GitStar provides • ➤ MPs that specify projects and users ➤ VC for managing projects and users Third-party authors provide • ➤ Code viewer ➤ Wiki Untrusted VCs: ... ➤ Follower app PM CodeViewer Wiki ➤ etc. GitStar MPs +

  19. Model-Policy View-Controller + +

  20. Model-Policy (MP) Data model: document-oriented ➤ Collection: set of documents ➤ Document : set of field-value pairs users collection: Name Value Name Value Field Value user jen user jen user Jen email jen@ email jen@ email jen@aol.com friends [alice, bob, … ] friends [alice, bob, … ] friends [Alice, Bob]

  21. Model-Policy (MP) Data model: document-oriented ➤ Collection: set of documents ➤ Document : set of field-value pairs users collection: Name Value Name Value Field Value user jen user jen user Jen email jen@ email jen@ email jen@aol.com friends [alice, bob, … ] friends [alice, bob, … ] friends [Alice, Bob]

  22. Model-Policy (MP) Policy specifies restrictions on: • ➤ Collections , documents, fields ➤ E.g., only Jen may modify her profile ➤ E.g., only Jen and her friends may read her email address Policy composes • ➤ E.g., to read document you must be able to read the collection

  23. Example: Enforcing policy MP: • Field Value user Jen Policy: Only Jen, Alice email jen@aol.com and Bob can read friends [Alice, Bob] GitStar User MP + Eve’s untrusted address book VC: • AddrBook

  24. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook GitStar User MP +

  25. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook GitStar User MP +

  26. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook Allow? GitStar User MP +

  27. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook GitStar User MP +

  28. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook findEmail users “user” “Jen” Allow? GitStar User MP +

  29. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook findEmail users “user” “Jen” GitStar User MP +

  30. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  31. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read jen@aol.com Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  32. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server Allow? jen@aol.com AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read jen@aol.com Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  33. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read jen@aol.com Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  34. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server Allow? jen@aol.com AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read jen@aol.com Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  35. Example: Enforcing policy Eve’s spam Bob’s server Eve’s Browser server ✗ Allow? jen@aol.com AddrBook Policy: Only Jen, Alice findEmail users “user” “Jen” and Bob can read jen@aol.com Field Value user Jen GitStar User MP + email jen@aol.com friends [Alice, Bob]

  36. Policy specified in terms of data Web app data models already encode policy ➤ Ownership ➤ Relationships between users ➤ … Policy: Only user can modify Field Value user Jen Policy: Only user and email jen@aol.com friends can read friends [Alice, Bob]

  37. Example: Policy specification collection “users” $ do access $ do readers ==> anybody writers ==> anybody field “user” key document $ λ doc -> do readers ==> anybody writers ==> (“user” `from` doc) field “email” $ labeled $ λ doc -> do readers ==> (“user” `from` doc) ⋁ fromList (“friends” `from` doc) writers ==> anybody

  38. Example: Policy specification collection “users” $ do access $ do Collection is public readers ==> anybody writers ==> anybody field “user” key document $ λ doc -> do readers ==> anybody writers ==> (“user” `from` doc) field “email” $ labeled $ λ doc -> do readers ==> (“user” `from` doc) ⋁ fromList (“friends” `from` doc) writers ==> anybody

  39. Example: Policy specification collection “users” $ do access $ do readers ==> anybody writers ==> anybody field “user” key document $ λ doc -> do readers ==> anybody writers ==> (“user” `from` doc) field “email” $ labeled $ λ doc -> do readers ==> (“user” `from` doc) ⋁ fromList (“friends” `from` doc) writers ==> anybody

  40. Example: Policy specification collection “users” $ do access $ do readers ==> anybody writers ==> anybody Index documents by field “user” key user names document $ λ doc -> do readers ==> anybody writers ==> (“user” `from` doc) field “email” $ labeled $ λ doc -> do readers ==> (“user” `from` doc) ⋁ fromList (“friends” `from` doc) writers ==> anybody

  41. Example: Policy specification collection “users” $ do access $ do readers ==> anybody writers ==> anybody field “user” key document $ λ doc -> do readers ==> anybody writers ==> (“user” `from` doc) field “email” $ labeled $ λ doc -> do readers ==> (“user” `from` doc) ⋁ fromList (“friends” `from` doc) writers ==> anybody

Recommend


More recommend