Microsoft Research was in the news not too long ago regarding the innovative, outside-the-box research being done by MSR scientists on display at the annual MSR TechFest event. One of the stars of the show was a new web browser project named Gazelle.
Gazelle is a Microsoft Research prototype web browser constructed as a multi-principal OS (emphasis on
research and
prototype). From the Gazelle Microsoft Research Technical Report:
Gazelle’s Browser Kernel is an operating system that exclusively manages resource protection and sharing across web site principals. This construction exposes intricate design issues that no previous work has identified, such as legacy protection of cross-origin
script source, and cross-principal, cross-process display and events protection.
Interesting, Captain. This really piqued our curiosity so Erik Meijer and I decided to find out the inside scoop on Gazelle. Why choose an OS architecture to model a web browser? How does it work, exactly? What does multi-principal mean in the context of execution
of web pages? Aren't we talking about isolated processes? What happens when a principal is compromised? Is the browser kernel completely isolated from code executing in a principal context(is it possible to "blue screen" Gazelle)? What are the intrinsic challenges
with implementing this design? How performant is a multi-principal, kernel-based web browser (what if you have 40 principal contexts running simultaneously, for example)?
This is a great conversation with Gazelle project lead Helen Wang and Alex Moshchuk, a PhD student intern developer working on the Gazelle project. We cover a lot of ground and Erik and I are unusually curious given the fascinating model Gazelle represents
for a truly secure web browser.
Enjoy! This is a birthday present from Channel 9 to you!
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
http://dev.chromium.org/developers/design-documents/process-models
http://dev.chromium.org/developers/design-documents/multi-process-architecture
http://dev.chromium.org/developers/design-documents
C
Chromium (chromes base) is separated into two protection domains. These are a browser kernel and rendering engine. The rendering engine domain runs in a restricted sand box environment. Web pages and plugins are both executed in the rendering engine domain which means they have restricted access to your system. As with Gazelle, all communication to the kernel is done via a tight API proxied through IPC. From what I can tell, Gazelle offers no specific improvements over chrome in this area.
However Gazelle does shine! Gazelle puts serious priority on DOM and script interaction which is in desperate need of improvement in all current browsers. I definitely look forward to further information on this project in the future.
As for my chrome links, this area really interests me but companies are still fairly hush about what they're doing. Chrome is the exception to this, which is why I posted the links. There is a lot of valuable information there for anyone interested in this sort of thing.
C
If I need to redesign my website as a consequence, then so be it. With Silverlight and out of browser stuff, Gazelle offers me an extra layer of assurance. If it breaks a 10 year old website, then that is collateral damage.
C
Breaking the web seems like a worse issue than it is. Infact, IE8 already contains the solution for this. If the browser detects insecure scripting it could block the actions and indicate to the user that they may want to reload the site in compatibility mode.
@LordKain
Web browsers run on all kinds of devices today, from pcs to mobiles and fridges. Because of this there is a strong need to abstract the code from the underlying system. This means that even if you were to compile C++ for a special web environment, there would still need to be a layer of abstraction such as virtual machices or JIT. With Silverlight and Flash both having GPU support now, and the progressive increases in speed, the only advantage C++ on the web would have is language preference. Also its worth pointing out the impossibility of creating an accepted standard for how such a language would work across browsers.
This is interesting, one thing I wonder about is like.. similar to the http-only cookie (for reference, this wasn't something all browsers supported, making it a concern to use), how should developers target features then.. consider that I wanted to use http-only cookie to protect my cookie from any javascript, but gah- firefox at the time didn't support it so javascript WOULD be able to use it.
Isn't there a similar issue here, in some sense that whilst this is a really good addition, the security it helps enforce cannot be really trusted until all common browsers also do the same? perhaps this is something that should become the norm, that each browser implements this (or similar) model?
Maybe I'm missing something here. Process isolation on modern OSes are for stability rather than security. Sure - they can run under different security contexts, but that wasn't the primary driver for the model.
If we were to architect a presentation technology executing foreign code in a sandbox, would we end up with this?
Remove this comment
Remove this thread
close