29.11.2012 Views

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Developer Effort. We suspect that developers will default<br />

to requesting all-domain access if the number of<br />

specific domains in the list grows too high. To examine<br />

this further, we c<strong>on</strong>sider the 237 c<strong>on</strong>tent scripts that<br />

use specific domain lists. The lists are short: <strong>on</strong>ly 31 are<br />

l<strong>on</strong>ger than five. Figure 5 presents the distributi<strong>on</strong>. This<br />

indicates that most developers either request a very small<br />

number of domains or opt to request full domain access,<br />

with few in-between. However, six developers wrote<br />

eight lists that are l<strong>on</strong>ger than fifty domains. These outliers<br />

result from developers internati<strong>on</strong>alizing their extensi<strong>on</strong>s<br />

by repeating the same domains with different<br />

suffixes; wildcards cannot be used to represent suffixes<br />

because the domains may have different owners.<br />

N<strong>on</strong>compliance. Secti<strong>on</strong> 4.2 describes a manual analysis<br />

of fifty extensi<strong>on</strong>s. Five of those extensi<strong>on</strong>s are overprivileged<br />

due to improper wildcard use. Two of the developers<br />

choose to request all-domain access rather than<br />

write specific domain lists, two write specific domain<br />

lists but unnecessarily use wildcards for subdomains, and<br />

<strong>on</strong>e incorrectly requests all-domain access al<strong>on</strong>gside specific<br />

domains. In other words, 10% of the extensi<strong>on</strong>s<br />

with web access request excessive permissi<strong>on</strong>s because<br />

their developers are unable or unwilling to write sufficiently<br />

specific domain lists.<br />

In summary, our findings are twofold. We show that<br />

60% of extensi<strong>on</strong> developers write at least <strong>on</strong>e specific<br />

domain list. This dem<strong>on</strong>strates that the opti<strong>on</strong> to write<br />

specific domain lists is a worthwhile part of a declarative<br />

permissi<strong>on</strong> system. On the other hand, 40% of developers<br />

whose extensi<strong>on</strong>s need web access do not write any<br />

specific domain lists. Furthermore, our manual analysis<br />

indicates that 10% of extensi<strong>on</strong>s with web access use<br />

wildcards improperly.<br />

4.4 Permissi<strong>on</strong> Granularity<br />

If a single permissi<strong>on</strong> protects a diverse set of API calls,<br />

then an applicati<strong>on</strong> seeking to use <strong>on</strong>ly a subset of that<br />

functi<strong>on</strong>ality will be overprivileged. Separating a coarse<br />

permissi<strong>on</strong> into multiple permissi<strong>on</strong>s can improve the<br />

correlati<strong>on</strong> between permissi<strong>on</strong>s and applicati<strong>on</strong> requirements.<br />

On the other hand, excessively fine-grained permissi<strong>on</strong>s<br />

would burden developers with a large list of<br />

permissi<strong>on</strong>s required to perform simple acti<strong>on</strong>s.<br />

4.4.1 Google Chrome Browser Managers<br />

At the time of our study, Google Chrome extensi<strong>on</strong> permissi<strong>on</strong>s<br />

were at the granularity of a browser manager:<br />

<strong>on</strong>e permissi<strong>on</strong> per entire browser manager. This posed a<br />

problem for the window manager, which includes some<br />

methods that provide indirect access to history via the<br />

9<br />

locati<strong>on</strong> property of loaded windows. Using the window<br />

manager generated history warnings, regardless of<br />

whether the extensi<strong>on</strong> used any of the methods that provide<br />

access to the locati<strong>on</strong> property.<br />

The fact that the window manager caused a history<br />

warning was c<strong>on</strong>fusing to users and developers. C<strong>on</strong>sider<br />

this quote from the developer of Neat Bookmarks:<br />

Installing this extensi<strong>on</strong> will ask for permissi<strong>on</strong><br />

to access your browsing history, which is<br />

totally useless, not used and not stored by the<br />

extensi<strong>on</strong> at all. Not really sure why ‘History’<br />

is part of ‘Bookmarks’ in the Chrome browser.<br />

The developer is so c<strong>on</strong>fused by the history warning that<br />

he or she believes it is caused by the extensi<strong>on</strong>’s use of<br />

the bookmark manager, rather than the window manager.<br />

Since the time of our study, the window manager has<br />

been changed so that certain methods do not require<br />

any permissi<strong>on</strong>. C<strong>on</strong>sequently, developers can access<br />

some n<strong>on</strong>-history-related functi<strong>on</strong>ality without acquiring<br />

a permissi<strong>on</strong> that shows users the history warning.<br />

4.4.2 Fine-Grained Android Permissi<strong>on</strong>s<br />

We evaluate whether Android’s fine-grained permissi<strong>on</strong>s<br />

are an improvement over a coarser-grained alternative.<br />

Categories. Android permissi<strong>on</strong> categories are highlevel<br />

functi<strong>on</strong>ality groups. Categories are comprised of<br />

multiple permissi<strong>on</strong>s, which developers must request individually.<br />

A coarse-grained permissi<strong>on</strong> system might<br />

simply have <strong>on</strong>e permissi<strong>on</strong> per category, but Android<br />

subdivides each category into multiple finer-grained permissi<strong>on</strong>s.<br />

We find that no applicati<strong>on</strong> (out of 956) requires<br />

all of the permissi<strong>on</strong>s in any category except<br />

STORAGE, a category with <strong>on</strong>ly <strong>on</strong>e permissi<strong>on</strong>. This<br />

dem<strong>on</strong>strates that coarse-grained permissi<strong>on</strong>s at the category<br />

level would overprivilege all extensi<strong>on</strong>s.<br />

Read/Write. Android c<strong>on</strong>trols access to data with separate<br />

read and write permissi<strong>on</strong>s. For example, access<br />

to c<strong>on</strong>tacts is governed by READ CONTACTS and<br />

WRITE CONTACTS. We find that 149 applicati<strong>on</strong>s request<br />

<strong>on</strong>e of the c<strong>on</strong>tacts permissi<strong>on</strong>s, but n<strong>on</strong>e requests<br />

both. 10 of 19 applicati<strong>on</strong>s with calendar access request<br />

both read and write permissi<strong>on</strong>s. Text messages are c<strong>on</strong>trolled<br />

by three primary permissi<strong>on</strong>s; <strong>on</strong>ly 6 of the 53<br />

applicati<strong>on</strong>s with text message permissi<strong>on</strong>s request all<br />

three. These results dem<strong>on</strong>strate that separate read and<br />

write permissi<strong>on</strong>s reflect applicati<strong>on</strong> requirements better<br />

than coalesced permissi<strong>on</strong>s would.<br />

Locati<strong>on</strong>. Locati<strong>on</strong> is separated into “fine” and “coarse”<br />

permissi<strong>on</strong>s, referring to the precisi<strong>on</strong> of the locati<strong>on</strong><br />

measurement. ACCESS FINE LOCATION governs<br />

GPS locati<strong>on</strong>, and cell locati<strong>on</strong> is c<strong>on</strong>trolled<br />

<str<strong>on</strong>g>USENIX</str<strong>on</strong>g> Associati<strong>on</strong> <strong>Web</strong>Apps ’11: <str<strong>on</strong>g>2nd</str<strong>on</strong>g> <str<strong>on</strong>g>USENIX</str<strong>on</strong>g> <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> <strong>on</strong> <strong>Web</strong> Applicati<strong>on</strong> <strong>Development</strong> 83

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!