11 ms·
Google Play limiting Android 11 apps from seeing what’s installed on devices
- Red_Leaves_Flyy 6y agoWhy isn't this feature behind a permission flag already? Matter of fact, why aren't a lot more abilities behind permissions?
- curt15 6y ago"Google is limiting what apps can use the QUERY_ALL_PACKAGES permission that “gives visibility into the inventory of installed apps on a given device.” " Sounds like it already is. Google Play is simply changing its policy on which apps may request that permission.
- izacus 6y agoBecause that capability is required for apps to interoperate. Sandboxing by definition breaks the ability for apps to share data and work together. It's a balance to be struck, a perfectly secure system is a useless system. In this case it was mostly used to render custom share dialogs (you need to list apps for that), in-line share buttons (checking if other app exists is useful to not show the ones that aren't installed) and some other possible optimizations (e.g. mostly bug fixes for broken apps that couldn't handle types of data). From developers perspective it's useful because it makes your app more reliable and easy to use. With the downside that malicious people can abuse it.
- uoaei 6y agoI hope you are aware that permission flags can be toggled by the user.
- f6v 6y agoI see absolutely no reason for this. You want to share a picture? Fine! Just specify a content type, and the system will present a list of apps capable of handling it to the user.
- m00x 6y agoIt does add some benefits and can result in a slightly better experience for some apps, but the risk/reward is not worth it at all.
- izacus 6y agoSharing pictures isn't the only use case. The APIs were widely used for quite a few other use-cases as well (this is why it's a permission now and not removed completely). Please remember that but everyone subscribes to your exact model of safety and capability. There are people that want more from their pocket computers than a restricted consumer device.
- tialaramex 6y agoThere's a balancing act. Historically Android would just provide a list of what permissions each app wants, and you either take it or leave it. That's transparent in a sense, if researchers care they can do the analysis and produce a paper, "Hey, 80% of the top X apps request permission Y which they have no Earthly reason to need" - but almost no end users will read this boring technical stuff to make decisions. See also pre-Baseline Requirements "class based" X.509 certificates. Adding more permissions to this list is easy... but also has almost no effect. There's a good chance you've never looked at the permissions you granted most apps you have. In the modern era some of these abilities also require an explicit grant of permission when used. Location is an example we've all seen. But that incurs fatigue so it has to be used cautiously. For example Android could ask if apps are allowed to use the Network, but you'd likely get sick of that really quickly, so instead you can explicitly disable network access for an app if you want, but it doesn't ask "Can Daily-quiz-app-1234 access the network?" when you run it. One option Google has that's more extreme than a fatigue-inducing prompt, is to just refuse permission anyway, which is what's happening here. And unlike iOS, an Android phone can run other browsers, but for a modern browser on a nice phone you want WebAuthn. If any app can just say "I'm actually a web browser" then WebAuthn's phishing protection blows away when you install some Flappy Bird clone to try it out - the app just tells the OS it's a web browser, comes up with some excuse as to why you should touch your fingerprint sensor, and it says to the OS it's browsing https://your-bank.example/ https://your-bank.example/ so it gets credentials for your bank. So in this case Google manages some high risk permissions only for known safe developers. Mozilla's public Firefox builds have this "I'm really a web browser, I get to do WebAuthn" permission, but if you build the exact same source and sideload it, it can't do WebAuthn. [Apps all get the same, likewise unphishable, feature on capable phones, Android or iOS, but without this "web browser" permission it's fixed so that they can't ask for credentials for a web site, only for their own app]
- f6v 6y ago> There's a balancing act. Historically Android would just provide a list of what permissions each app wants That's one of the many design choices that made truly filthy apps possible on Android. I worked on a device monitoring(wink) app back in the day(which I'm not proud of). The things we did there...Installing apps without an app store, hiding application icon(!), recording phone calls(!!!), reading messages(!!!). And all of that was done using official APIs on a non-rooted device.
- grishka 6y agoIMO internet access (android.permission.INTERNET) needs to be a runtime permission. Ideally with the same kind of granularity as location — one time, while app is in use, in the background (through settings). And give an app a brief window to access the internet after an FCM push, but FCM pushes are also a runtime permission. But Google being an advertising company would, of course, never ever do this.
- kevincox 6y agoIIRC part of the problem is that there are other leaks through the intent system. So the system is so broken that adding a permission for INTERNET would just be an illusion of safety.
- matkoniecz 6y agoAnd this way even when forced to put it behind permission, it will be meaningless. It is not acccidental that this part would be so hard to fix.
- grishka 6y agoWhat do you mean? If you don't have the INTERNET permission in your manifest, you won't be able to create network sockets. So this enforcement is already in place, it has always been. The only possibility I see of leaking internet access through the intent system is when an app that does have internet access would give content:// URIs with granted URI permissions to an app that does not, so it would indirectly and unknowingly download something from the internet through that app's content provider. I don't think it's possible to grant anything on an http(s) URI. For that matter, almost any permission can be "leaked" this way. You could even skip the intents and content providers and just do it with straight AIDL if you're so inclined. Android's permission system is pretty solid and almost impossible to work around.
- kevincox 6y agoThe point of removing the INTERNET permission as I see it is to prevent the app from sending out any information, allowing you to trust it with your sensitive information. However if the app can raise an intent that will cause another app to send out information of its choosing it has effectively broken that permission, even if it never created a socket. Sure, the app may have a hard time getting information back (although there are channels such as app updates at the very least) it isn't enough to trust an app with your passwords just because it doesn't have any permissions.
- kjjjjjjjjjjjjjj 6y agoBecause Android doesn't take security and privacy seriously. No one who is worried about those two things should be using android
- oedmarap 6y ago> Meanwhile, temporary exceptions will be granted to dedicated banking and digital wallet apps so that they can “obtain broad visibility into installed apps solely for security based purposes.” I'm sorry but why does a banking app need to see a list of system-wide packages? And for what security-purpose? If all apps were tightly sandboxed in the first place then this wouldn't be a problem that requires edge-case solutions. Either way, based on the same quoted paragraph, my prediction is that Facebook will now roll out a dedicated wallet app; along with regular wallet functionality it will gleefully take advantage of this exact loophole.
- elliekelly 6y agoI wonder if they’re “finger printing” the device to determine whether a login is likely to be legitimate or not?
- skynet-9000 6y agoCouldn't they just generate a unique fingerprint then?
- Daniel_sk 6y agoBanking apps sometimes integrate 3rd party AV / threat detection SDKs (there are several available, e.g. https://www.wultra.com/malwarelytics https://www.wultra.com/malwarelytics which is part of a bigger banking security SDK solution). Sandboxing isn't the only problem on Android - a lot of malware is using Accessibility to control the device and read what's on your screen. Then there are overlays that can be drawn over your app (e.g. display a fake login over your app). Access to notification content. Reading SMS content (2FA). Different combinations of other permissions, device manager rights etc. Or even simple attacks like launching a fake app just when you launch the real one (phishing). Google is trying to limit a lot of these permissions, at least from apps installed from Google Play but so far they are still pretty widespread with malware hidden on Google Play targeting banking apps.
- criddell 6y ago
- kiwijamo 6y agoWhy wasn't this done before?
- justapassenger 6y agoIt's great for security, but also great for Google. OS and their frameworks still get full visibility into apps, and given how much data they collect, it's cutting off this data (rightly) from others, and keeping it only for themselves (both for good and bad reasons).
- deleted 6y ago[deleted]
- mav3rick 6y agoThe kernel can literally see everything. No amount of good faith efforts can ever please anyone in that case.
- TrianguloY 6y agoI find it hilarious how Play Store is slowly banning permissions (some justified, some not) in regards to 'privacy', yet the internet permission is still classified as a low dangerous permission [0], which means that when you install an app, this permission is not even shown. (And you can't even turn it off!) [0] https://developer.android.com/reference/android/Manifest.permission#INTERNET https://developer.android.com/reference/android/Manifest.per...
- tjohns 6y agoThe Internet permission was largely useless. If you knew what you were doing, it was trivial to bypass it to exfiltrate data. On top of that, almost every app requests it, which contributed to alarm fatigue in users. Permissions are only useful if they can be enforced and users pay attention to them.
- asddubs 6y agojust out of curiosity, how was it bypassed?
- mcraiha 6y agoApps can communicate via each other, so if any app has internet permission and public intent then other app can use that https://developer.android.com/training/basics/intents https://developer.android.com/training/basics/intents
- Groxx 6y agoso, "get your users to also install this other backdoored app with the internet permission". I don't think that qualifies as "trivial", though it'll obviously work on some people.
- tjohns 6y agoThe easiest way was to send an Intent to the browser with a specially constructed URL. Every phone has that installed.
- qwerty456127 6y agoGreat. No app should see anything besides what is logically necessary to fulfill their actual function.
- rektide 6y agois there any way to broadcast or make known that there is an Intent handler registered? im wondering if apps have the capability to signal to each other that they exist. it's been so long since I've touched android, but I remember Intents were often the main sort of rpc engine across apps. Even if apps can't ambient survey the system now, I'm wondering if they can still make smoke smoke signals to each other.
- olliej 6y agoWait they still allowed this?
- bee123 6y agoActually when you use "report problem" feature from Google products, they collect all installed apps information....
- bee123 6y agoGoogle Keep..
- dkarras 6y agoTIL apps on Android can see what I have on my device. Is iOS the same way? That is pretty abhorrent. You can tell a lot about a person looking at what apps they have installed.
- hnburnsy 6y agoTIL that my bank app on my A10 device has permissions like change your audio settings, view wifi connections, prevent phone from sleeping, run at start up, control vibration, access extra location information... And there is no user interface to revoke or manage these permissions. What the heck!
- kalleboo 6y agoOn iOS apps can check for the availability of URL schemes ("can I open a link of type ftp:"), so they can check if apps that expose a URL scheme are installed (mostly this is apps that offer an API, such as Facebook, Twitter, etc). But, apps have to declare which URL schemes they want to be able to check for, and this list is inspected by app review. So if you want to check for every known app in existence (which some apps like IIRC Twitter used to do before Apple limited it), you'll fail app review. I'm not sure how strict they are about shorter but weirder lists of URL schemes (like a todo app checking for bank apps)
- Proven 6y agoI prevent Google from seeing what's installed, too I use iOS.