Güliz Seray Tuncay, Soteris Demetriou, Carl A. Gunter
{"title":"Draco: A System for Uniform and Fine-grained Access Control for Web Code on Android","authors":"Güliz Seray Tuncay, Soteris Demetriou, Carl A. Gunter","doi":"10.1145/2976749.2978322","DOIUrl":null,"url":null,"abstract":"In-app embedded browsers are commonly used by app developers to display web content without having to redirect the user to heavy-weight web browsers. Just like the conventional web browsers, embedded browsers can allow the execution of web code. In addition, they provide mechanisms (viz., JavaScript bridges) to give web code access to internal app code that might implement critical functionalities and expose device resources. This is intrinsically dangerous since there is currently no means for app developers to perform origin-based access control on the JavaScript bridges, and any web code running in an embedded browser is free to use all the exposed app and device resources. Previous work that addresses this problem provided access control solutions that work only for apps that are built using hybrid frameworks. Additionally, these solutions focused on protecting only the parts of JavaScript bridges that expose permissions-protected resources. In this work, our goal is to provide a generic solution that works for all apps that utilize embedded web browsers and protects all channels that give access to internal app and device resources. Towards realizing this goal, we built Draco, a uniform and fine-grained access control framework for web code running on Android embedded browsers (viz., WebView). Draco provides a declarative policy language that allows developers to define policies to specify the desired access characteristics of web origins in a fine-grained fashion, and a runtime system that dynamically enforces the policies. In contrast with previous work, we do not assume any modifications to the Android operating system, and implement Draco in the Chromium Android System WebView app to enable seamless deployment. Our evaluation of the the Draco runtime system shows that Draco incurs negligible overhead, which is in the order of microseconds.","PeriodicalId":432261,"journal":{"name":"Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security","volume":"21 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2016-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"35","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2976749.2978322","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 35
Abstract
In-app embedded browsers are commonly used by app developers to display web content without having to redirect the user to heavy-weight web browsers. Just like the conventional web browsers, embedded browsers can allow the execution of web code. In addition, they provide mechanisms (viz., JavaScript bridges) to give web code access to internal app code that might implement critical functionalities and expose device resources. This is intrinsically dangerous since there is currently no means for app developers to perform origin-based access control on the JavaScript bridges, and any web code running in an embedded browser is free to use all the exposed app and device resources. Previous work that addresses this problem provided access control solutions that work only for apps that are built using hybrid frameworks. Additionally, these solutions focused on protecting only the parts of JavaScript bridges that expose permissions-protected resources. In this work, our goal is to provide a generic solution that works for all apps that utilize embedded web browsers and protects all channels that give access to internal app and device resources. Towards realizing this goal, we built Draco, a uniform and fine-grained access control framework for web code running on Android embedded browsers (viz., WebView). Draco provides a declarative policy language that allows developers to define policies to specify the desired access characteristics of web origins in a fine-grained fashion, and a runtime system that dynamically enforces the policies. In contrast with previous work, we do not assume any modifications to the Android operating system, and implement Draco in the Chromium Android System WebView app to enable seamless deployment. Our evaluation of the the Draco runtime system shows that Draco incurs negligible overhead, which is in the order of microseconds.
应用程序内嵌浏览器通常被应用程序开发人员用来显示网页内容,而不必将用户重定向到重型网页浏览器。就像传统的web浏览器一样,嵌入式浏览器可以允许执行web代码。此外,它们还提供机制(即JavaScript桥接),让web代码访问可能实现关键功能和暴露设备资源的内部应用代码。这在本质上是危险的,因为目前应用开发者没有办法在JavaScript桥上执行基于源的访问控制,任何在嵌入式浏览器中运行的web代码都可以自由地使用所有暴露的应用和设备资源。以前解决这个问题的工作提供的访问控制解决方案只适用于使用混合框架构建的应用程序。此外,这些解决方案只关注于保护暴露受权限保护资源的JavaScript桥接部分。在这项工作中,我们的目标是提供一个通用的解决方案,适用于所有使用嵌入式web浏览器的应用程序,并保护访问内部应用程序和设备资源的所有通道。为了实现这个目标,我们构建了Draco,这是一个统一的、细粒度的访问控制框架,用于运行在Android嵌入式浏览器(即WebView)上的web代码。Draco提供了一种声明性策略语言,允许开发人员定义策略,以细粒度的方式指定web源的所需访问特征,以及动态执行策略的运行时系统。与之前的工作相反,我们不假设对Android操作系统进行任何修改,并在Chromium Android system WebView应用程序中实现Draco以实现无缝部署。我们对Draco运行时系统的评估表明,Draco产生的开销可以忽略不计,其数量级为微秒。