This paper explores the MashupOS project, addressing the security challenges of web mashups, which combine multiple data sources into a single service. It highlights the limitations of the Same Origin Policy (SOP) that restricts cross-domain interactions and examines the risk factors like cross-site scripting (XSS) and DNS insecurities. The MashupOS aims to create a multi-principal environment, offering protection through isolation boundaries and enabling fine-grained communication controls across those boundaries. By balancing usability and security, it aims to empower developers to create robust and secure web applications.
01 / 64Enhancing Web Security: Protection and Communication in MashupOS
1 / 17
Télécharger la présentation
Enhancing Web Security: Protection and Communication in MashupOS
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Outline • The problem • The MashupOS project • Protection • Communication • Implementation and demo • Evaluation • Related work • Conclusions
Client Mashups • Web content has evolved from single-principal services to multi-principal services, rivaling that of desktop PCs. • Principal is domain
Browsers Remain Single-Principal Systems • The Same Origin Policy (SOP), an all-or-nothing trust model: • No cross-domain interactions allowed • (External) scripts run with the privilege of the enclosing page http://integrator.com/ http://integrator.com/ <iframe src=“http://provider.com/p.html”> </iframe> <script src=“http://provider.com/p.js”> </script> X
Insufficiency of the SOP • Sacrifice security for functionality when including an external script without fully trusting it • E.g., iGoogle, Live gadget aggregators’ inline gadget
Insufficiency of the SOP, Cont. • Third-party content sanitization is hard • Cross site scripting (XSS): • Unchecked user input in a generated page • E.g., Samy worm: infected 1 million MySpace.com users in 20 hours • Root cause: • The injected scripts run with the page’s privilege Samy is my hero
Insufficiency of the SOP, Cont. • Sacrifice functionality for security when denying scripts in third-party content • E.g., MySpace.com disallows scripts in user profiles
DNS Insecurity • Client vulnerabilities • DNS rebinding (Jackson et al, CCS 07) • Dynamic Pharming (Karlof et al, CCS 07) • Server vulnerabilities • DNS cache poisoning (Kaminsky, BlackHat 08)
The MashupOS Project • Enable browser to be a multi-principal OS • Focus of this paper: protection and communication abstractions • Protection: • Provide default isolation boundaries • Communications: • Allow service-specific, fine-grained access control across isolation boundaries
Design Principles • Match all common trust levels to balance ease-of-use and security • Goal: enable programmers to build robust services • Non-goal: make it impossible for programmers to shoot themselves in the foot • Easy adoption and no unintended behaviors
Outline • The problem • The MashupOS project • Protection • Communication • Implementation and demo • Evaluation • Related work • Conclusions
A Principal’s Resources • Memory: • heap of script objects including DOM objects that control the display • Persistent state: • cookies, etc. • Remote data access: • XMLHttpRequest
Trust Relationship between Providers and Integrators i.com p.com Unauth XHR XHR X X No No Isolated <Frame> p.com Internet Yes Yes Open <Script> i.com No Yes http://i.com/ None <Sandbox> <OpenSandbox> Yes No Unauthorized X <sandbox src=“http://p.com/c.html”> </sandbox> Unauthorized content is not authorized to access any principal’s resources.
Properties of Sandbox • Asymmetric access • Access: reading/writing script global objects, function invocations, modifying/creating DOM elements inside the sandbox • Invoking a sandbox’s function is done in the context of the sandbox • setuid (“unauthorized”) before invocation and setuid (“enclosingPagePrincipal) upon exit • The enclosing page cannot pass non-sandbox object references into the sandbox. • Programmers can put needed objects inside the sandbox • Private vs. Open sandboxes
Private Sandbox <sandbox src=“file”> Content if tag not supported </sandbox> • Belongs to a domain and can only be accessed by that domain • E.g., private location history marked on a map • Private sandboxes cannot access one another even when nested • Otherwise, a malicious script can nest another private sandbox and access its private content
Open Sandbox <OpenSandbox src=“file”> Content if tag not supported </OpenSandbox> • Can be accessed by any domain • Can access its descendant open sandboxes --- important for third party service composition • E.g., e-mail containing a map; don’t want an e-mail to tamper hotmail.com; don’t want the map library to tamper the e-mail
Provider-Browser Protocol for Unauthorized Content • Unauthorized content must be sandboxed and must not be renderable by frames • Otherwise, unauthorized content would run as the principal of the frame • MIME protocol seems to be what we want: • Require providers to prefix unauthorized content subtype with x-privateUnauthorized+ or x-openUnauthorized+ • E.g., text/html text/x-privateUnauthorized+html • Verified that Firefox cannot render these content types with <frame> and <script> • But, IE’s MIME sniffing allows rendering sometimes • Alternative: encraption (e.g., Base64 encoding) • Prevent providers from unintentionally publishing unauthorized content as other types of content: • Constrain sandbox to take only unauthorized content
Key Benefits of Sandbox • Safe mashups with ease • Beneficial to host third-party content as unauthorized content
Sandbox for Safe Mashups with Ease http://Mashup.com/index.htm <script> // local script to Mashup.com // calling functions in a.js and b.js </script> X <script src=“a.com/a.js”> </script> <div id=“displayAreaForA”> … </div> X <script src=“b.com/b.js”> </script>
Hosting Third-Party Content as Unauthorized Content • Combats cross site scripting attacks in a fundamental way • Put user input into a sandbox • Does not have to sacrifice functionality • Helps with Web spam • Discount the score of hyperlinks in third party content
Outline • The problem • The MashupOS project • Protection • Communication • Implementation & demo • Evaluation • Related work • Conclusions
Communications • Message passing across the isolation boundaries enable custom, fine-grained access control a.com b.com CommRequest CommRequest Unauthorized Isolated Isolated
CommRequest • Server: server = new CommServer(); server.listenTo(“aPort”, requestHandlerFunction); • Client: req = new CommRequest(); req.open (“INVOKE”, “local:http://bob.com//aPort”, isSynchronous); req.send (requestData); req.onreadystatechange = function () { …}
CommRequest vs. XMLHttpRequest • Cross domain • Source labeled • No cookies sent • “Server” can be on client • Reply from remote server tagged with special MIME type • Syntax similar to socket API and XHR
Outline • The problem • The MashupOS project • Protection • Communication • Implementation & demo • Evaluation • Related work • Conclusions
Implementation MashupOS Script Engine Proxy • Use frames as our building blocks, but we apply our access control HTML Layout Engine Script execution DOM object access Script Engine DOM object update MashupOS transformed HTML Original HTML MashupOS MIME Filter
Evaluation: Showcase Application • PhotoLoc, a photo location service • Mash up Google’s map service and Flickr’s geo-tagged photo gallery service • Map out the locations of photographs taken • PhotoLoc doesn’t trust flickr nor gmap
PhotoLoc/index.htm <script> function setPhotoLoc(request) { var coordinate = request.body; var latitude = getLatitude (coordinate); var longitude = getLongitude (coordinate); G.map.setCenter(new GLatLng(latitude, longitude), 6); } var svr = new CommServer(); svr.listenTo(“recvLocationPort”, setPhotoLoc); </script> <Sandbox src=”f.uhtml” id=F> </Sandbox> <Sandbox src=”g.uhtml” id=G> </Sandbox> Direct access CommRequest
Evaluation:Prototype Performance • Microbenchmarking for script engine proxy • Negligible overhead for no or moderate DOM manipulations • 33%--82% overhead with heavy DOM manipulations • Macrobenchmark measures overall page-loading time using top 500 pages from the top click-through search results of MSN search from 2005 • shows no impact • Anticipate in-browser implementation to have low overhead
Outline • The problem • The MashupOS project • Protection • Communication • Implementation & demo • Evaluation • Related work • Conclusions
Related work • Crockford’s <Module> • Symmetric isolation with socket-like communication with the enclosing page • Wahbe et al’s Software Fault Isolation • Asymmetric access though never leveraged • Primary goal was to avoid context switches for untrusted code in a process • Cox et al’s Tahoma browser operating system uses VM to • Protect the host system from browser and web services • Protect web applications (a set of web sites) from one another
OMash: Object Mashup • A new browser security model • Use Object-Oriented model (e.g. Java object model) • Treat each Web page as an object • Encapsulate all scripts and data • Objects declare public interface • Objects communicate only via public interface
Object Abstractions public class FooObject { public void publicMethod() { } private intprivateData; } <html> <script> function getPublicInterface() { function Interface() { this.publicMethod = function () {…} } return new Interface(); } varprivateData; </script> </html> Java (analogy) Web page object
Page Objects • A page consists of • DOM tree • Scripts • Credentials (HTTP auth, cookies) • A page object can be contained in a • Window • Tab • Frame • Iframe
Public and Private Members • Public interface • Each object declares getPublicInterface() • Returns a closure of all public methods and data • Private data • DOM • Scripts • Credentials
Usage Example <html> function getPublicInterface() { function Interface() { this.setCenter = function (lat,long) { … } } return new Interface(); } </html> <iframesrc="map.html"> ... var map = win.getPublicInterface(); ... map.setCenter(lat, long); } integrator.html map.html map.html integrator.html
Trust Relationships • Can model trust relationships needed for mashups (as identified by MashupOS) • Isolated • Open • Access-Controlled • Unauthorized
Isolated function getPublicInterface() { function Interface() { } return new Interface(); } No access between provider and integrator
Open function getPublicInterface() { function Interface() { this.getDocument = function () { return document; } } return new Interface(); } Full access between provider and integrator
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.