Google Play limiting Android 11 apps from seeing what’s installed on devices
9to5google.com
9to5google.com
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.
Do they do the same thing on iOS?
(Yes, I know. My role as a user isn't to have opinions - it's to dutifully enjoy the software as-is, and visit the "offers" section on a regular basis.)
My bank's app have no issues with my phone being rooted :-) Fortunately Magisk Hide fixes it.
Just like DRM, it inconveniences legitimate use while doing little to defend against malicious use.
Your bank also doesn't concern itself with the type of locks on your door or your car alarm. Just because something gives someone a handle on matters like the ability to see what apps are installed on your device doesn't mean its appropriate to use it.
Not allowing the bank app inappropriate access to your device means they aren't tempted to leak or misuse it.
[0] https://developer.android.com/reference/android/Manifest.per...
Permissions are only useful if they can be enforced and users pay attention to them.
I don't think that qualifies as "trivial", though it'll obviously work on some people.
But ultimately this will do a single extremely visible GET request, which is limited by the browser's normal sandboxing. That's quite far from "bypassing the internet permission". And in some cases ineffective (e.g. I have multiple browsers and intentionally do not set a default), though that's rare enough that I don't think it's relevant.
---
An "app can send intents" permission would be sorta nice for things I truly want sandboxed, e.g. a password manager. XPrivacy allow(ed|s) blocking stuff like this, I would and did happily toggle it off for most apps since e.g. many games have no need of anything but their APK's data.
That said, I completely agree. Google's approach to permissions on Android has been wildly user-hostile, and full of nonsense bundling like (relatively harmless) device-ID and (very much not) access to all call logs. Stuff like XPrivacy[1] demonstrates how they could have done this with far more user control and far less app interruption, but they haven't.
[1]: not the UI, the UI is terrible. but "send fake contacts" or "block outright" for every API is excellent, and doesn't require changing apps to support. the fact that the apps can query the state and I cannot lie about it is a problem, because they often require lots of bullshit that's not required.
Matter of fact, why aren't a lot more abilities behind permissions?
Sounds like it already is. Google Play is simply changing its policy on which apps may request that permission.
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.
Why is HN like this?
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.
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/ 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]
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.
Funny to see people on hacker news demand that some OS capabilities be only allowed to corporations themselves and noone else.
This made a little sense when you could trust application developers with access to all these things, but that ship has long since sailed.
Obviously one could write a malicious browser that implements WebAuthn wrong and compromises users who register with a site using that browser. This leads to discussions about WebAuthn attestation, and there are valid arguments there both ways.
It wouldn't? No apps get access to the fingerprint sensor, it's very hard to imagine any legitimate purpose for that, and easy to imagine hostile use cases.
The operating system doesn't give access to the fingerprint sensor, it provides an API for doing FIDO (the underlying technology to deliver WebAuthn) and the fingerprint sensor is used by the operating system to provide User Verification for that.
The API takes a parameter for the Relying Party Identifier. For most phone apps, you can't control this, it'll be set to an ID for your app, which you can discover and fill out in your server backend. This way your app can authenticate your users to your servers, but other apps can't imitate it.
But for WebAuthn the RPID is based on the DNS name of the web site, so a web browser needs a way to actually set this value or it can't do WebAuthn. Hence, Android needs an extra permission flag to authorise legitimate web browsers to set the RPID while preventing untrustworthy apps from doing so.
Some OEMs provide this feature in their firmware, but many/most do not. Users have to resort to running local VPNs like NetGuard. Even ADB can't do it: "Permission android.permission.INTERNET requested by com.android.vending is not a changeable permission type". If you know a way, please share!
I understand permission fatigue but this lack of control is, to me, blatantly user-hostile.
But Google being an advertising company would, of course, never ever do this.
It is not acccidental that this part would be so hard to fix.
Android's permission system is pretty solid and almost impossible to work around.
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).
And there is no user interface to revoke or manage these permissions. What the heck!
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)
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.