Popup blocking, form filling, and many other features of modern web browsers were first introduced as thirdparty extensions. New extensions continue to enrich browsers in unanticipated ways. However, powerful extensions require capabilities, such as cross-domain network access and local storage, which, if used improperly, pose a security risk. Several browsers try to limit extension capabilities, but an empirical survey we conducted shows that many extensions are overprivileged under existing mechanisms.
This paper presents IBEX, a new framework for authoring, analyzing, verifying, and deploying secure browser extensions. Our approach is based on using type- safe, high-level languages to program extensions against an API providing access to a variety of browser features. We propose using Datalog to specify fine- grained access control and data flow policies to limit the ways in which an extension can use this API, thus restricting its privilege over security- sensitive web content and browser resources. We formalize the semantics of policies in terms of a safety property on the execution of extensions and develop a verification methodology that allows us to statically check extensions for policy compliance. Additionally, we provide visualization tools to assist with policy analysis, and compilers to translate extension source code to either .NET bytecode or JavaScript, facilitating cross-browser deployment of extensions.
We evaluate our work by implementing and verifying 17 extensions with a diverse set of features and security policies. We deploy our extensions in Internet Explorer, Chrome, Firefox, and a new experimental HTML5 platform called C3. In so doing, we demonstrate the versatility and effectiveness of our approach.
@inproceedings{guha:ibex, author = "Arjun Guha and Matthew Fredrikson and Benjamin Livshits and Nikhil Swamy", title = "Verified Security for Browser Extensions", year = 2011, booktitle = "IEEE Security and Privacy (Oakland)" }