Many More Android Apps Leaking User Data
eldavojohn writes "After developing and using TaintDroid, several universities found that of 30 popular free Android apps, half were sharing GPS data and phone numbers with advertisers and remote servers. A few months ago, one app was sending phone numbers to a remote server in China but today the situation looks a lot more pervasive. In their paper (PDF), the researchers blasted Google saying 'Android's coarse grained access control provides insufficient protection against third-party applications seeking to collect sensitive data.' Google's response: 'Android has taken steps to inform users of this trust relationship and to limit the amount of trust a user must grant to any given application developer. We also provide developers with best practices about how to handle user data. We consistently advise users to only install apps they trust.'"
The problem here is that the apps themselves are closed, so you can't inspect the code to see if this kind of thing is going on.
It may just be sending some statistical data so the server can form better assumptions about the user and thus provide better service in the future. Or it may be sending such data for nefarious purposes. Without accessing the code, you can't know, and worse you can't control it.
Java was an interesting implementation language choice in Android, but with the browser-based interface, perhaps Javascript would have been a better system language. It would have been open and users could have more control over their own phone.
Unless removing such control is precisely why Google did it.
Rather than a blanket "you can send anything you want anywhere you want/you can send nothing to anywhere" switch, a finer-grained constrained set of permissions may be the way to go. Specifically:
And if an app provider doesn't like the light shone on their activities... that's a pretty good indicator right there.
Everybody gets what the majority deserves.
which, incidentally, is what BlackBerry has. You can allow/deny each app permission to access your address book, calendar, internet connection, send SMS, open your mailbox, etc. I don't think even the iOS have that yet (or well, I think it does, but for GPS location only). An app must be prepared to get an "access denied" exception, and survive through it.
And for corporate users, an admin can even set your phone to not allow installation of custom programs, deny all requests to read the user's calendar/address book (except for a white-list of apps), etc, etc.
As an Android user I wish Android would copy this feature, and as a fan of superior technology, I wish BlackBerry could promote these security features more.
What time is it/will be over there? Check with my iPhone app!
And in other news, smartphone security sucks. News at 11.
The world's burning. Moped Jesus spotted on I50. Details at 11.
desktops have antivirus, antimalware and firewalls. What does your android phone have?
So don't listen to the app developers. Listen to your phone.
When you're about to install a dumb wallpaper app and your phone says that it wants access to your location, the internet, and your call log, that should be a giant warning sign.
One of the reasons that BB's are so popular with the corporate crowd - despite lacking some of the "nifty" features of other phones - is that they're really good on security. BES allows the corp to do a lot of things to a lost/stolen/etc phone. The data on the handset is supposed to be encrypted, and can easily be reset or wiped. Most apps have varying levels of security that *ASK* the first time (to access the internet, or whatever) whether they should be allowed a one-time or consistent access to various permissions.
I don't see why Android couldn't use a similar model, as it does this for "root" (su) access when it's unlocked. Just keep a small DB listing what apps are allowed to access what features. The problem with the current coarse controls is that they don't really say what access is needed for. Sure, a VOIP app might need your phonebook for making calls, and internet access to do so. How about a game needing internet access to update high-scores (just deny that part if you don't trust the app not to send important data home), or the almighty "can change data on the storage card" access...
I don't see the big deal with this. Android gives you infinitely more information about what an app is going to do than anything on the PC.
On my phone, I'll at least know if the app is going to look at my location, contacts, etc. and can make the choice to install it or not.
On my PC, all I know is that I'm downloading some binary data that could do anything it wanted.
It's not that hard. If you download a game that wants access to your contact data and full internet access, don't install it. Yes, even if the game looks really, really, cool. You may claim that Google is the devil here because they allowed devs to have the possibility of accessing my data, but I claim that they're good for giving devs the option. If I want to write an app for my own phone to organize my contact list by area code, I can do that.
What's interesting is that if an Android app doesn't have permission an exception is raised, but you're taught to make sure to add the permission flag instead of catching the exception. (Which makes sense, because as it stands right now, if you don't set the flag you'll -never- get the permission). But if they had told you to catch the exceptions, applications would be ready for user-flippable permissions.
Exactly. Take Camera.open for instance. According to the javadocs...
Throws
RuntimeException if connection to the camera service fails (for example, if the camera is in use by another process).
What about a permission exception?!?!
No - instead they say - "If you want to use the camera, include this catch all crap!"
<uses-permission android:name="android.permission.CAMERA" / >
<uses-feature android:name="android.hardware.camera" / >
<uses-feature android:name="android.hardware.camera.autofocus" / >
That's been my biggest pet peeve so far in developing. It can turn into a "add permission until it works" game for lazy developers.
Good question. I wanted to install a recipe application by a popular brand name company (although the idea of trust with said company might be a little shaky - their guacamole only contains 2% avocado or somesuch) but I didn't feel right because of the permissions required. This app is available for the iPhone, so I don't know if it comes with the same restrictions. I emailed them asking them why the app needs to know my phone's identity and contact data as well as location. They responded thinking that I had a problem installing and downloading the app. I re-explained what I wanted to know and haven't heard back from them. That was at least two months ago.
You'll note that that part of the article to which you refer is describing the permissions that the app asks for... in other words, these are the categories for the intended behavior of the app. So, yes... you've discovered that the article succeeds in providing the intended behavior of each of the apps tested. Congratulations! You've cracked that sucker wide open!
Now, go ahead and read the rest of the article to find the parts that discuss the ways in which some of the apps misbehave.
But that's already what happens. The permissions list on an Android app isn't an honor system -- if the app tries to access your contacts list, and that permission isn't in the manifest, the app will throw and exception and fail. Fundamentally you can't use a permission without informing the user up-front when they purchase it.