In this paper, we developed tools to detect overprivilege in
Android applications. We applied automated testing techniques
to Android 2.2 to determine the permissions required
to invoke each API method. Our tool, Stowaway, generates
the maximum set of permissions needed for an application
and compares them to the set of permissions actually requested.
Currently, Stowaway is unable to handle some
complex reflective calls, and we identify Java reflection as an
important open problem for Android static analysis tools.
We applied Stowaway to 940 Android applications and
found that about one-third of them are overprivileged. Our
results show that applications generally are overprivileged
by only a few permissions, and many extra permissions can
be attributed to developer confusion. This indicates that
developers attempt to obtain least privilege for their applications
but fall short due to API documentation errors and
lack of developer understanding.