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.'"
They finally get to the part I care about, which is the list of apps they tried. Look at page 9 of their paper in PDF format.
This is not the penguin you're looking for.
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.
"We also provide developers with best practices about how to handle user data. We consistently advise users to only install apps they trust.'"
How exactly is one supposed to do this? What is the process for building trust vis-a-vis apps when the only protection you receive from your service provider is "don't walk into dark alleys you don't trust"?
All apps have access to r/w your sdcard, and to get your identity (esn/imei/meid/phone number). Once you give an app permission to access the internet, your identity and sdcard contents are public. Google needs to fix this. Don't believe me? Install a file manager app. Most won't ask for permission to access the sdcard, but they will be able to. Some permissions are granted without the app asking for it.
Not only the ability to display what permissions an app requests, but the ability to deny the use of those features on a per feature basis for each app.
For instance, an app may request internet access (cellular radio or wifi), the user should be able to choose to limit that to just wifi or even turn off connectivity for that app all together.
Doesn't someone spellcheck these summaries?
It is hard enough to know if I should trust my child, and I raised him. He doesn't
tell me much. App developers tell me less, and some of them are devious. This is not
a good security model. And Google knows better.
What a bunch of fluff. The relevant developers don't care about "best practices" or any other voluntary standard. And how the f*** are users supposed to establish trust in certain apps? The platform does not significantly monitor an application's ongoing behavior, nor is anyone performing serious code-reviews or blackbox testing. Google COULD HAVE set up profiling tests similar to those run in TFA, but didn't.
For ONCE would a company please admit that they reduced privacy in order to provide the dumbed-down usability needed to capture market share and attract developers?
FATMOUSE + YOU = FATMOUSE
You are confused between Android OS and Android Apps. But don't let that interfere with your bashing of "open" and love for apple's walled garden. Please continue.
Being able to know where you are and when isn't personal information?
"For every complex problem, there is a solution that is simple, neat, and wrong." - H.L. Mencken
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.
Can i buy your phone? serious question. Must accept sim cards and be 3g.
http://soylentnews.org/~tibman
And in other news, smartphone security sucks. News at 11.
The world's burning. Moped Jesus spotted on I50. Details at 11.
...after all, many more users are leaking Android app data.
Can i buy your phone? serious question. Must accept sim cards and be 3g.
He doesn't have a phone for you to buy. He's a "magical! revolutionary!" fanboi troll.
Don't take it personally, but I'm not going to read your pithy response to my post.
"This is OnStar. You appear to be traveling at a high rate of speed after stopping at a bank. Do you require police assistance?"
Your own statement of saying "apple's walled garden" just proves his "but its open..." statement even more. But please continue.
Your statement implying meaning to his implying meaning to the parent's comment implies... wait a second. Where are we going with this?
Being able to know where you are and when isn't personal information?
As long as no "who" information is transmitted to the advertiser, it's not personal. It's just some unknown device at coordinates X,Y at time T. Add on a unique identifier, then it starts getting personal as they can start building a profile of person P.
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
AdMob uses the -coarse- sensitive location for ads when you want to serve up something thats location sensitive like 'Eat at McDonalds in "My City" at abc blvd.' but that's pretty much it. All they really need is the coarse location setting which gives a general approximation of where the individual is at in order to target ads for the best experience. That's is a location sensitive ad, and it was the choice of the app developer to allow it. The app developer wants more money from their ads, but its not lkike any of them control how that data is collected or used. If you have a problem with the 'data leak' then don't connect to the internet without 3rd party proxies in between and don't install any applications, because invariably some of them are leaking data back to somewhere all the time. Hell, I'm typing this from Firefox which pretty much calls home on a daily basis. I don't bother to check on the bits flying across the wire, they could be leaking a key log for all I know. If you don't want geo sensitive ads served to your device then don't use that person's app. Is there something evil or nefarious about the DEVELOPERS of these apps? No. Moving along...
Bye!
Android gives users and developers a lot more freedom than other alternatives - with that comes responsibility for both parties. If you want a platform where you are told what to, when to do it, and whom you can do it to get an iPhone.
Hope is the currency of fools
On the surface you don't pay anything for these tools. They integrate nicely into your app, and you only have to add a few lines of code -- the essence of what good developer's tool should provide. But it's free to you only because you passed the cost along to your users - often without realizing it. In exchange for the convenience provided for you, you've decided that your users' information, attention, viewing habits, and even privacy are fair currency with which to pay for that service.
If you value your customers, do the research before blindly incorporating these "free" tools into your applications.
It's a pissing match, where each party is trying to piss in opposite corners of a round room.
Remember to maintain your supply of
"...half were sharing GPS data and phone numbers with advertisers and remote servers."
Two words: DOUCHE.BAGS.
You are confused between Android OS and Android Apps. But don't let that interfere with your bashing of "open" and love for apple's walled garden. Please continue.
The Earth, too, is a walled garden. The US is a free country, but only from sea to sea. But, please, let's not generalize. How did Apple personally fuck you over with their walled garden? Because it seems like they just don't need any more great developers... nearly every cool feature exploited has at least a few decent apps to cover it. What were you gonna do that the "walled garden" stopped you from doing? (What almost comes to mind is.... damn... escapes me... what was it Morrison used to say about doors?) Or what is it that you THINK you MUST HAVE that Apple has forbidden? And how often is it on another smart phone that you are perfectly capable of doing this cherished activity, and what is it's true frequency of use?
All Apple has done is narrowed the field a bit, to figure out what the most common things are that most people want... and then they focused on perfecting that. Rather than being all things to all people, they try to enable the best things for most people. And now the curve is very steep.
The Admin and the Engineer
I don't get it, why is this being positioned as an Android problem? Last I checked, iPhone apps aren't even required to tell you what data they use in the first place -- is there an iPhone equivalent to the "uses internet access", "uses coarse location services" page that the Android Market displays to you? There's a ton of iPhone, Blackberry, Parlm, etc apps using advertising support, which is what the vast majority of this article is finger-pointing.
Nobody, at any marketplace service, is going to have time to do a code review of everything that gets submitted. Even console games -- which have a months-long and intensely painful approval process the likes of which you've never seen -- don't do code review. The very concept is ridiculous, there's way too much code and way too many people involved. You're going to have to trust your developers folks, and make use of the user-ratings tools if you don't.
Android's model of showing you what special access the software uses is about as good as I think you can get in the real world without learning to use a packet sniffer. RIM's ability to disable individual types of access is cool as well, but if the software needs it to function (or says it does) I'm not sure how the user is supposed to be in a position to use it intelligently. To avoid these sort of data harvesting problems, they'd have to somehow psychically know that the contact manager they're trying out uses that internet access for more than the occasional ad serve, and how would they know that?
Not if you take into account anyone who's got line-of-sight to you, or is within earshot of you...
Research is what I'm doing when I don't know what I'm doing. -- Wernher von Braun
Add Access Control Lists to the functions/API which grants access to personal data (such as email address, phone numbers/lists, browsing history, GPS location). Since it is an open platform, we can do this ourselves if we want. All applications which attempt to access such data will be verified against the ACL to see if it can receive such information. If the application is not on the ACL, then, the API returns either an error code (which requires the current applications to be recompiled...), or an empty response (either a fake email name, website, or phone number, or GPS coordinates in the south pole).
We were all warned a long time ago that MS products sucked, remember the Magic 8 Ball said, "Outlook not so good"
"We consistently advise users to only install apps they trust."
How the hell am I supposed to know that? Compile and review every line of source myself? Sorry, I have a day job.
Maybe I'll just find some application marketplace where they (1) certify apps are safe and perform well, and (2) don't violate my privacy without sending data around without my permission. That'd be an awesome idea. Some kind of marketplace that would actually verify that the application works on my device, does what it says it does, and behaves itself. That's a service I'd really pay for.
Oh wait, I do pay for that.
Welcome to iPhone.
Apple has that platform locked down nicely.
Best Slashdot Co
The headline doesn't really match the contents of the paper as far as I can tell.
For example, "Evernote" is listed in the paper for:
1) Taking pictures with the camera
2) Recording audio with the microphone
3) Determining your location
And for transmitting this data to its servers.
These functions are, however, exactly what the application is designed for. You take notes (including snapshot notes and voice notes) and upload them to your account. When you launch the app, there are big buttons for "take a snapshot note" , "take an audio note", etc. Geo-tagging via the location APIs can be disabled from the Settings page, but this is another core advertised feature of the product.
So this is a bit like making it into Slashdot by discovering that a mail client transmits text that you type (and your email address!) to a mysterious "SMTP" server. ... on the INTERNET!"
Headline: "Researchers discover nefarious 'e-mail' application leaking your data
Personally, I think this is going to be a larger issue as time goes on. Right now, it's more of an annoyance with advertisers and marketing companies, but who's to say that in the near future some other companies don't start providing apps that track users for other reasons.
Could you imagine a company that provides location data for your ex-spouse, or perhaps girlfriend or boyfriend, or even your children? I know this is kind of tin-foil hat paranoia, but I think the recent problems with things like the Google Buzz fiasco, here, here and here, show that good intentions can sometimes have bad consequence.
Weather it be Google, Apple, MS or whomever, they need to enforce policies and procedures that to ensure that their user's personal data is protected. Yeah, its a walled garden, but I think its a neccessary walled garden. I don't mind companies using my location data, but only if I know of it and have approved of it.
The real Sig captains the Northwestern. This one captains
...at the application named 'taintDroid'? I must be really bored today.
Not if they don't know who you are. You're not scared enough of being seen driving down the highway to hide your face and plates. Nor are most technical people so fearful of this that they'll bother to use a proxy to avoid IP and browser information to be revealed.
Raw GPS data in itself is pretty useless except to correlate similar coordinates. What can they do- send you an ad for a local pizzeria if it's dinnertime, or local entertainment otherwise? Big deal.
There is only capacity to profile if they could get frequent updates, with which to build a real tracking database which shows extended location periods such as home/work. That and they'd need to be able to uniquely identify each user to actually figure out where you live and work/school instead of just getting locations where random Android phones have checked in. And then to get reliable data that'd take an application you use routinely, not just some random sudoku game and you're just that bored to play everywhere you go.
Granting them access to your name & address, contacts, list of installed applications, email and browser history is a completely different matter. It's much easier and far more reliable to drive around looking for a nice car in a driveway and watch the house for a couple days.
That is, unless you're overly paranoid and premise that the whole world is watching your every move because you're just that special.
The key, as has been pointed out, is not to install random crap you see on the Internet without scrutinizing it and its source. Come on, nobody is pointing out that there's nothing new to this issue and that PCs (Windows, that is) and weak passwords are far ore vulnerable to privacy violations.
Obvious tips which require little more than a spinal cord: Application requesting far too many permissions it doesn't seem to actuall need? Don't install. No listed developer website? I'd pass. Free application? Be extra careful because no paper trail will provide some minimal amount of tracking. Reviews are obviously self-promotions or written by children? Ignore the number of stars. And the pinnacle of obvious: Sounds too good to be true? It's not.
The apps aren't leaking information. Leaking implies the information is being sent accidentally.
The apps are taking the information and sending it to whomever intentionally.
sorry to piss on the fanbois flames spouting "iPhones walled garden is much safer" and other such uninformed crap
the iPhone App Stores dirty secret is its worse, much worse
http://www.slashgear.com/iphone-spyware-debated-as-app-library-phones-home-1752491/
http://gadgets.boingboing.net/2009/04/13/pinch-media-statisti.html
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...
Wikileaks!
The last time this issue came up, I started sending emails to the developers of my apps challenging their need for permissions that don't seem to make sense. I got several replies that stated that the legitimate permission the developer needs is buried under overly broad packages.
For example, a battery monitor app needs to request access to "Phone Calls" to read the battery state.
With such granularity developers can't be responsibly specific and end users have no rational way to accept/reject apps based on the permission requested. Whatever else, the granularity of permissions packages must be changed first.
There's a Mac program called Little Snitch which tells you which apps are sending out data, and what kind, and where it's headed. Any idea if there's a similar program for Android? I don't so much mind that some apps can do things they don't need to. But if users can identify which ones it would help a lot.
As long as no "who" information is transmitted to the advertiser, it's not personal. It's just some unknown device at coordinates X,Y at time T.
Are you braindead? "Hey, this guy goes to the same spot every day at 5:30 PM and remains there until 7:30 the next morning. That must be his home. Hey, here's the address. Hey, I got his name now."
> 15 of the 30 got on their list due to providing location data for advertising. I hardly consider that a sending your personal data as the article implies.
That's fine. I do.
I like to think of it like a pissing match where they are hitting both streams dead on trying to push the piss to the other guy, not realizing all the splashback hitting them in the face.
...Protecting you from "Open Sores" since day one!
Guaranteed! This comment 100% Anthrax free!
One way to do this would be for the android market to list (or provide a filter for) how the app developer makes his money.
Of course I prefer GPL apps, but I'm willing to install free (beer) apps, trial versions (if clearly indicated), or paid apps.
However, I don't want to have to install an app just to discover that it's adware.
Are you? If the information is anonymous, and only says "a mobile device was here at this time," then it has no way of knowing that the same mobile device is there every day at 5:30.
That's why you don't want it sending "who" information.
"I disagree with you" does not equal "flamebait."
An appropriate approach might be to define trust levels. It would define "sensitive data packages", such as user name, GPS location, camera input, microphone input, etc - which apps could request be transmitted (with user permission settings or per-use acceptance), OR could be provided to the application. Applications would be installed at a trust level that grants them different access permissions to sensitive data, and would be prohibited from getting or manipulating data packages above their trust level.
Most trusted would be "obtains no sensitive data, engaes in no communications, does no data storage".
Next most trusted might be "All communications via a module that requires user permission settings to transmit specfic "sensitive" data packages"
Then there'd be "Transmits arbitrary data, but explicitly asks user permission for pre-packaged sensitive data."
Worst might be "Reads sensitive data (with user permission control), reads data stored by other apps, stores data for other apps, transmits arbitrary data".
NEVER CROSS THE STREAMS! :p
Remember to maintain your supply of
Sure... but now try a navigation app.
The navigation app wants access to your position - sounds reasonable, right? Difficult to do that turn-by-turn thing otherwise.
The navigation app wants access to the internet - sounds reasonable, too, right? Lets you download map updates, POI data, etc.
But that doesn't mean there can't be a piece of code in there that uploads your position to some server.
Can't really protect against that sort of thing either except with code review... but who's going to review the code of all those apps? Even Apple let a few sneaky things through.
At some point, warnings or no warnings, you just have to decide whether you trust the app/author or not.
Obligatory:
http://pleaserobme.com/
Forgive me if I'm restating something someone already said (I seriously can't read every comment here). I hate the idea of forcing Google to follow in Apple's footsteps. I believe in free market solutions. Locking down the market may discourage developers. In the Windows market (where malware is rampant), this problem has already been solved. Most people don't download something unless it has been recommended by someone else (i.e. credible website, friend, colleague). If you aren't following someone's recommendation, then you knowingly accept the risk of being infected.
Granted, the majority of people using Android Market have yet to adopt this same ideology. It's only a matter of time before third-party companies play the role of Apple, investigating applications and applying their "seal of approval." Surly Google will allow developers to include these seals in their market descriptions if they've earned them. A solution like this allows the free market to continue, meanwhile giving credit to legitimate applications, and outing the "bad apps." People will naturally respect these third-party authorities.
I believe Google is doing the right thing. I think they should encourage what I've prescribed above.
interactive hologram, or it didn't happen.
Congratulations, you just described how Android permissions already work.
Any other irrelevant posts to make based on not knowing the subject in question?
Android already notifies you which services an application uses before you install the app. You have the option of allowing the app to install and have access to ALL of those services or don't install the app at all. Some users may want to use an app, but they may want to deny certain services they deem are unnecessary. Google could add functionality that would allow the user to deny certain services to certain apps.
However, this may render the app completely useless. For example, what good would an alternate reality app be if it was denied access to the camera. To account for this, maybe there should be a list of required services that are absolutely required for the bare functionality of the application and then a list of non-required services that enhance the app but can be turned off by the user.
To go even a step further, rather than just offer the option to "allow" or "deny" a service, they could also have a "prompt" option. For instance, if I had a camera app, it should only be able to use the GPS when tagging the photo, not track my every movement at all times. Therefore it could prompt me every time it attempted to use the GPS. This would allow for fine-grained privacy settings and security that can be controlled by the user.
I think the flaw is it asks too late, and you can't block any of them to still use the App.
IE I wanted a app to track car maintenance and MPG, I find the one that looks best, best reviewed...
Now it comes up and says it wants phone, and internet access...
Not needed for what I wanted, but what do I do now?
Look for another, buy, install, and wait to see if it is worse?
Would be nice if google also disclosed that in the app market before choosing,
then maybe developers would explain what they used the connections for...
I'll grant you the facts that:
but you CAN view which features an application needs before buying/installing/running it.
This will let you review what privileges an app will have if you install it without requiring you to buy, install, and find out the hard way.
If you have a problem with the app needing access to your fine GPS location (probably for adverts) instead of coarse Geo-IP location
or receive an SMS, you could now avoid downloading this app (or buying it if it weren't free).
If you scroll down, there's usually a section for further clarification on specific features requested.
Disclaimer: I neither own nor am I affiliated with any application in the Android Market.
* - My phone is 1 year old and runs Android 2.1, which (I believe) introduced the new Android Market.
For reference, some older phones have 1.5/1.6, & the newest is 2.2.
I don't see why everybody has a problem with security on Android. Like others have said, a dialog shows everything an app needs permission to do. Beyond that, install Droid Wall. It lets you approve or deny access to the Internet for each app (it's an iptables front end). You can also set it to block by default as I have, so that new apps never get the chance to connect until you allow them to. It requires root, but it's worth it. Don't forget to install a superuser whitelist program too so that you must approve any apps that want root.
Google says: "We consistently advise users to only install apps they trust."
So how does Joe User know "Who to trust?" Is Google trustworthy? How would I know? Because they say they're not "evil" ??
Its kind of bullshit advice.
Are you? If the information is anonymous, and only says "a mobile device was here at this time," then it has no way of knowing that the same mobile device is there every day at 5:30.
Such information is completely USELESS. It amounts to a series of points in spacetime, and that's it. "On the surface of the earth, at this present moment, there exist a number of mobile devices in these specific locations." Unless the next sample also tracks continuity of the devices, the only value of such information would be insta-marketing based on your present location (standing near a Starbucks, an ad for Starbucks pops up) but what the hell sort of mobile device behaves that way? If my phone constantly popped advertisements I'd throw it in the dumpster and get something else.
I see no way they could NOT be tracking the specific device in some way. It would be POINTLESS.
As long as no "who" information is transmitted to the advertiser, it's not personal. It's just some unknown device at coordinates X,Y at time T.
Are you braindead? "Hey, this guy goes to the same spot every day at 5:30 PM and remains there until 7:30 the next morning. That must be his home. Hey, here's the address. Hey, I got his name now."
What part of "no 'who' information" is difficult to understand? With only location and time, there is no "this guy". Your data looks like this:
latitude longitude time
52.82191183 23.49163528 9/30/2010 18:40
49.31389364 41.23847416 9/30/2010 18:46
46.95183108 63.59308896 9/30/2010 18:50
62.72546603 34.30812174 9/30/2010 18:52
28.17931819 26.4772956 9/30/2010 19:01
28.62210586 64.75609574 9/30/2010 19:03
28.70329191 55.00591516 9/30/2010 19:04
61.39666698 55.71977184 9/30/2010 19:04
50.32201953 56.79666622 9/30/2010 19:14
32.4023539 47.37164783 9/30/2010 19:19
39.42559201 44.07647876 9/30/2010 19:19
60.60999337 51.13458741 9/30/2010 19:24
46.70337949 34.68462047 9/30/2010 19:25
51.09737975 64.94909826 9/30/2010 19:31
42.18390336 21.16306122 9/30/2010 19:35
56.65477433 63.48741398 9/30/2010 19:38
32.35623029 63.67496442 9/30/2010 19:40
34.55327381 24.66248065 9/30/2010 19:44
43.53629806 63.71148868 9/30/2010 19:46
Sure, you could group together similar coordinates and look for patterns in the time. And if you're willing to go to such lengths to try and locate random residences... I have a better idea. It would be far easier to drive around the city in a black van and discover all these wonderful things called "houses" where far more of these unknown people live, and you didn't even have to serve them advertising. Their houses are just RIGHT THERE in plain sight, man! Or launch Google maps and go into satellite view. Wow, look at all the houses! People LIVE THERE man! You don't need lat/long/time to find those either!
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
I proposed something to Google that would certainly help with this issue. But they seemed more interested in bending over for the app. developers.
"Beware of he who would deny you access to information, for in his heart he dreams himself your master." -Pravin Lal
You're thinking purely in marketing terms. What if the programmer just wants to see where phones that use his software are? Then you don't need to track, and you don't need who data.
"I disagree with you" does not equal "flamebait."
Don't let your Android fanboi viewpoint interfere with the fact that there's just as much wrong with Android's approach as there is with Apple's. Please continue.
on an android phone, in a terminal window and as the root user one can issue this command: "netstat -a" this will display all the connection your phone is making out. cut and paste the domain names or IP addresses from "netstat -a" terminal window into a text editor now open /etc/hosts file with a text editor and place the following lines in your hosts file:
# 127.0.0.1 localhost must be first line
127.0.0.1 localhost
127.0.0.1 Facebook.com
make each entry on a separate line, the slashdot forum reformatted my line breaks
###continue and add all the domain names and remote IP's from your 'netstat -a"
This will block communication to facebook (example)
I've seen people block over 15,000 URL's this way
Slashdot reference:
http://slashdot.org/submission/1346470/HOSTS-file-blocks-500-social-networking-sites
Wow. Very intelligent reply.
Just FYI - I don't even have an android phone. So shover your own fanboism up your arse. Some of us may actually not belong to either of the camps.
Isn't that a bit of a tautology?
More importantly, just how are you supposed to know what you can trust or not? If an app zips your private info off to a server somewhere, you'd never know it. Even if you sniff the packets, it could still be encrypted or stenographized.
Google should give the user finer control and log what private info has been requested by what app.
Ruby Neural Evolution of Augmenting Topologies
What if a rogue app turns on the microphone or camera on command from some central server unbeknownst to you? The app could easedrop and spy on you. Is is my hope no app stoops that low, but you never know!
Ruby Neural Evolution of Augmenting Topologies
It won't support SIM cards. "Droid" is a marketing brand for Verizon's flagship line of Android OS-based phones.
Verizon uses CDMA2000/EVDO, and does not use USIMs, therefore no SIM cards.