Android 13’s new sideloading restriction of Accessibility APIs
blog.esper.io
blog.esper.io
An API that is so limited that malicious apps cannot abuse it, is too limited to be useful for non-malicious apps. This is just boiling the frog to make sideloading entirely useless, so users need permission from Google for any app they wish to run.
You do NOT need Google's permission.
Sounds like the accessibility apis are behind another settings screen now.
Same for always-on location access. I think this is the right way, users who intend to enable these things should really have to think about it and know what they are doing to allow an app that much access
The "restricted settings" dialog adds another explicit warning for users to acknowledge, which is IMO a good thing. The system currently doesn't tell the user how they can "allow restricted settings" for an app, though, which I think is because this feature is a WIP as of Beta 1. (The "allow restricted settings" button is in a different area of settings entirely from Settings --> Accessibility, and the dialog makes no mention of it/doesn't link to help material about the restriction. Definitely a WIP.)
That's got to be one of the most Orwellian statements you can make.
Related: some of the scoped-storage changes they pushed through have error messages like "For your privacy, choose another folder" if you try to, say, grant an application access to the Downloads folder. This is stupid for two reasons:
1. There are legitimate reasons for wanting to do this, but no override for those cases
2. The message does not actually explain the privacy risk beyond saying that there is one
At least Apple tried to make a user-focused explanation for iOS's security policy. Google just says no in the lowest-effort way possible.
[0] Bonus points for UI design that actively hides actions you cannot do, purely to gaslight the user into thinking they don't exist.
Sometimes I think it would hurt less to tear the bandage off quick and switch to iOS rather than watching Android slowly get beaten into the Apple mould.
Apps can choose to not service you if they detect modifications though.
Also, even today, a few apps aren't fooled by that solution. Try the McDonald's app for example.
I'm weighing this option myself now, but honestly between an iOS device and a mid-tier Android phone, it's hard to tell the difference. Email / chat apps / web browsing is more or less the same.
Certainly the amount of telemetry collected by Android is markedly higher [0], but that's not so much of a UX difference.
> my OEM's variant of Android has annoying additions that aren't allowed to be disabled. I'm hoping that iOS will be at least a slightly calmer experience
Would android's additions still seem like annoyance if stock (and every variant) included those additions?
tbf, I think iOS is a pretty good OS (like most modern OSes).
100%. By additions I mean to say things like notifications that cannot be dismissed or hidden, or other aspects of this firmware that to my knowledge don't occur on any other ROM, but seemingly exist to annoy without providing a benefit.
Note that, per your linked source, the payload size is larger on Android, but iOS actually collects more types of data by default (like location, which iOS collects by default but Android doesn't)
I didn't think devs were dumb enough to still use this.
Switching to iOS is sending the literal opposite message that you want. It's telling the industry "I can't be trusted & I want no control over my devices."
Just a note here, but the restriction isn't "chained". The malicious app using the a11y API itself only needs to be installed via an installer using the session-based API. So a "dropper" app implementing the session-based API could pull the APK for the malicious a11y using app from some source and then ask the user to install it. The malicious app's accessibility service could then be enabled.
Yes, this is a loophole, but if Google didn't do this, then you wouldn't be able to enable an app's accessibility service no matter where it was sourced from. And Google's already in hot water with the EU, so I don't think they want to get in trouble for hindering 3P app stores.
However, I still think this targeted approach is smart. A lot of apps that users use to download and sideload apps (browsers, mail clients, messaging apps) have no reason to go and implement the session-based installer API, so this restriction would add at least one more barrier to apps gaining a11y access.
As the article notes even if those apps do want to use the session-based installer API for some reason, they can just flag that the APK came from either PACKAGE_SOURCE_LOCAL_FILE or PACKAGE_SOURCE_DOWNLOADED_FILE to trigger the same side-load protection behavior.
Which, yeah, I don't see why something like eg Firefox would be interested in bypassing this behavior.
"Google confirmed to Esper that this restriction was designed to not affect apps installed from app stores, both preloaded (like Google Play) or sideloaded (like F-Droid). This is because the company does not want to restrict accessibility API access for all apps that are sideloaded — they just want to restrict access for apps that came from less legitimate sources."
What keeps google from defining f-droid as a "less legitimate source"
?
I surmised that this loophole was intentional so as to not hamper third-party app stores from providing users with apps that use the AccessibilityService API, but I was only able to confirm my suspicion after contacting Google PR.
That seems like a stretch. Why should it be easy to give any app full permission of your device? This is an extremely dangerous permission to give, well, anything. It should be possible (and it seems like it is), but why should it be easy?
And calling it a "pointless overreach" is some real sticking your head in the sand stuff. This isn't a fake threat. This abuse isn't theoretical, it's deployed in the wild. The article even provides multiple examples.
PureOS currently suffers from a tragedy of the commons. I, like many others am afraid of investing a lot of my time into developing for it for fear that not many others will adopt it and my efforts will be wasted.
How can we build/market PureOS as a credible alternative for other app developers to start building on top of it?
*Edit It doesn't have to be PureOS - that was just an example. It could be Sailfish OS, or Plasma Mobile. We just have to pick one to create a self-sustaining ecosystem around.
Start by convincing paying customers that cyber security and/or their privacy are important.
https://developer.android.com/training/safetynet/attestation
A lot of surprising apps use it because rooted devices are very commonly associated with fraud of various kinds e.g. credit card fraud.
Understandably because nobody wants more work.
If you are a teenage hacker with nothing better to do, sure, spend your time hacking a new OS to run on closed ecosystems. If you are an adult with work and responsibilities, take political action.
> Android 13’s new sideloading restriction makes it harder for malware to abuse Accessibility APIs
Seems a lot less inflammatory.
edited for politeness
- sent from every device with SafetyNet invalidated.
I'm not trying to be sarcastic, just pointing out the reality of the situation and the reason why I didn't root or mod my own phone.
EDIT: I've probably used up my quota so here's my reply: Userspace only cares about CPU arc. You can grab a debian rootfs and run it on a kindle/android/rasbpi etc. without even having to recompile things. The kernel however needs drivers and with modern Android many of them have to be rewritten. Replacing the kernel is a development exercise while replacing the userspace is mostly a matter of just installing the right software.
The presence of bad actors keeps being used as ammunition to destory possibility, to end softness, to make computing hard & inflexible, and it's the same genetic makeup as the constant cowtowing to fear that let's 'think of the children' be the deciding & only opinion policy gets passed with.
Loathsome detestable & massive setback, colossal unwinding of Android's spiritual advantage versus The Loyal Opposition Apple. If both platforms collapse into anti-choice, what happens to Apple's defense that it's users can go elsewhere? These shackles we permit to be set upon us, this prohibition of sideloading, the anti-generalization of computing can only be defended against by principled stances. For eroding possibility is forever to the megacorporate bottom line's profit. What a degrading trashfire move, Google, responding to the bad at such vast setback & penalty for the very very very good. Unlocking & exposing applications in new & amazing fashions is one of the highest & most virtuous goods, one of the best things we can do- reenable some unknown, go further- and this move speaks of a desire to embrace old stasist ossifying & cold death, to make us all rot forever with whatver is or was.
I can't really think of a single thing beyond "sideloading" (what a repulsive word) apps and maybe filesystem/SD card access that Android has as an advantage over iOS, while the list of disadvantages keeps getting longer.
As for lack of sideloading, we'll see. I heavily rely on NewPipe, but maybe there's another way to scratch that itch.
I never actually used it. But I like the idea. And I believe the web platform is a good existential hedge against the undying forever turning-to-crap-iness that so widely defines the trend of everything else. For now web standards still have a lot of good geeks advancing good moral causes and capabilities-- amid some less than excellent causes, yes, but even these make their way through gauntlets of review, through committees.
I'm sorry to say, but my view is the exact opposite. I can place nearly all the blame for the current state of the software ecosystem on overuse of web technologies and JavaScript.
- the rise of Electron means that:
1. a lot of native applications got killed off
2. those that remain have fewer features (native applications generally tended to be feature-rich). For example the web version of Outlook is nowhere near as feature-ful as the true native version for Windows.
3. Electron apps have worse UX due to much slower response times to every single click (which is both perceptible and infuriating, if you are one of the people that can see it), consume much more RAM (no, RAM is not cheap - maybe for you it is, but is it cheap for the end user?), and do not use native controls a lot of the time. The former two points can be verified by loading Microsoft Teams.
4. Even if the user has enough RAM for an Electron application, they may not have enough RAM for five. Lighter-weight alternatives aren't always available, and sometimes you just have to run that many side by side if required by your work.
- due to this, many machines that could have otherwise been useful for a few more years (anything with <=4 GB of RAM in my experience, YMMV) became e-waste prematurely because of the accelerated obsolescence, which not only imposes unfair cost on the consumer, but is also bad for the planet.
- the JavaScript ecosystem largely relies on NPM for dependencies. NPM is very far from the level of maturity achieved by comparable ecosystems for other programming languages. This means that somewhere down in your dependency chain, your application relies on something ridiculous like left-pad. This results in a technically inferior product, and more pragmatically speaking, introduces many more opportunities for third parties to break your dependency chain (intentionally or not), or to slip in extra code (I think it was node-gyp, a common dependency, that selectively ran in destructive mode in case the current machine's geoip was Russian or Belarusian).
A lot of the points I raised about Electron apply to JavaScript as well.
TL;DR: the JavaScript ecosystem is not very conducive to good (stable and performant) engineering, short of heroic efforts like those undertaken by the VS Code team. Most teams don't actually care as much, so the resultant Electron applications are slow and unnecessarily huge. The result is a worse user experience.
Places where things like QT already worked great at a tiny fraction of the compute resources required.