Readit News logoReadit News
Andromxda commented on Motorola GrapheneOS devices will be bootloader unlockable/relockable   grapheneos.social/@Graphe... · Posted by u/pabs3
diacritical · 7 days ago
> https://madaidans-insecurities.github.io/android.html#rootin...

I'm trying to understand why rooting Android is such a sin.

If I give root to my terminal so I can browse and edit any files I want, I'm placing a lot of trust in the terminal, sure. But trusting the terminal seems reasonable, as it's an important (basic; fundamental; necessary) part of any "real" OS. If I don't trust the terminal to not be malicious, why should I trust my OS? Anything could be compromised from a supply-chain attack. If we don't trust anything, we can turn off the computer and have perfect security, but if we accept that there's a trade-off between security and usability, we have to place some trust in some parts of the system.

> It does not matter if you have to whitelist apps that have root — an attacker can fake user input by, for example, clickjacking, or they can exploit vulnerabilities in apps that you have granted root to. Rooting turns huge portions of the operating system into root attack surface; vulnerabilities in the UI layer — such as in the display server, among other things — can now be abused to gain complete root access.

So if some app can somehow exploit the display server, it can inject commands on the terminal and hide the real output? I know the X server on Linux has (or has had) major security issues [1] that don't provide any real GUI isolation. Is that the type of issues Madaidan is talking about?

I don't know much about Android's display server, but if it's possible for an app without root access to exploit it, couldn't that app inject touch events or keystrokes in another app, or read the other app's screen? How would not having root benefit me if a random can view or control other apps without my knowledge by exploiting the display server? [2]

From what I gather if an app with root access has vulnerabilities, it makes it easier for another app (or other type of malicious code) to use it to gain root. But if the UI layer, to use Madaidan's example, has a vulnerability, it seems like it could be exploited successfully, with awful consequences, even if the malicious code doesn't get root in the end. So if I choose several apps to give root access to, I would just extend the attack surface from {all of the OS and its various layers} to {all of the OS and its various layers and those several apps}.

> root fundamentally breaks verified boot and other security features by placing excessive trust in persistent state.

I don't understand this. Could someone explain it with more details to me, please?

[1] https://theinvisiblethings.blogspot.com/2011/04/linux-securi...

[2] https://xkcd.com/1200/

Andromxda · 7 days ago
Of course the topic as a whole is much more complex than that, but I'll try to summarize it. Android has 3 systems of access control [1][2]:

- Discretionary Access Control, i.e. the standard Unix file permissions

- Mandatory Access Control, implemented in the form of the SELinux and YAMA LSMs (GrapheneOS stopped using YAMA in the 2024031400 release and replaced it with advanced SELinux policies)

- Android permissions which have to be disclosed in the AndroidManifest.xml, and most of the time need to be granted by the user at runtime

Root simply bypasses ALL of these security mechanisms. This is a clear violation of the principle of least privilege, since most of the stuff you are doing with root probably doesn't require access to your entire filesystem, and could easily run within an SELinux context. But writing and deploying a modified SELinux policy would take extra time and effort, and devs are lazy, so they just use root to completely bypass it.

As madaidan points out, only a tiny subset of system processes on Android run as root. [3] And Android has clear guidelines about what root process are and aren't allowed to do. From the AOSP documentation:

> Where possible, root code should be isolated from untrusted data and accessed via IPC.

> Root processes must not listen on a network socket.

> Root processes must not provide a general-purpose runtime for apps (for example, a Java VM).

Desktop systems are very different from Android and iOS. Out of Android's three major security mechanisms, they typically only implement one. This is why ransomware is so insanely successful. Every program has access to all the files and folders of the logged in user, including network shares, etc. Even on systems that implement application sandboxing and a permission system, such as macOS, it's only an afterthought, and isn't enforced properly. (macOS is still miles ahead of Windows and Linux though) For example, when installing a 3rd-party terminal emulator such as iTerm2 on macOS, you have to grant it the permission to access your entire file system (otherwise you will be limited to the home directory IIRC). But this permission also applies recursively to every process started within the terminal, greatly limiting its usefulness.

> I don't understand this. Could someone explain it with more details to me, please?

Android uses Verified Boot to protect against both Evil maid attacks [4], i.e. someone modifying the operating system on the hard drive, and malware persistence. By default, the Android /system partition is mounted in read-only mode, unlike for example your C:\Windows directory, or system directories like /bin on Linux. This prevents malware from modifying the operating system. If you ever get malware on Android or iOS, in most cases you can get rid of it, by simply rebooting your device. Unless of course, the malware has some persistence mechanism. Root obviously provides a great vector for persistence, since the system partition could simply be remounted in a writable mode, and the system could be modified however the attacker wants to.

When you build your own copy of AOSP or GrapheneOS, include your modifications, and sign the image with your own Verified Boot keys, that image can't be modified or tampered with by an attacker. It's perfectly secure to do that (of course only if you can trust the extra code you're including).

[1] https://source.android.com/docs/security/app-sandbox#protect...

[2] https://arxiv.org/pdf/1904.05572

[3] https://source.android.com/docs/security/overview/implement#...

[4] https://en.wikipedia.org/wiki/Evil_maid_attack

Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
acheong08 · 8 days ago
> they are using Apple's Wi-Fi positioning service, but proxying it through their own servers

My concern with this system is that their proxy is (afaik) compatible with Google's format, which by default is less privacy respecting as it does the location calculation server side and doesn't allow the client to cache.

I'd much prefer if they called out to Apple's servers directly (or through a direct proxy) & cached the AP data locally so over time it will work offline.

Andromxda · 8 days ago
No, this is incorrect. The GrapheneOS NetworkLocation client (https://github.com/GrapheneOS/platform_packages_apps_Network...) is using Apple's request format and performing the calculations locally, similar to how it's done on iPhones. The proxy is just an entry in the nginx config: https://github.com/GrapheneOS/grapheneos.org/blob/main/nginx...

The data is cached for roughly 15 minutes. https://grapheneos.org/features#:~:text=It%20caches%20the%20...

GrapheneOS plans to scrape Apple's database and make it downloadable, so Wi-fi positioning could be done fully locally.

Andromxda commented on Motorola GrapheneOS devices will be bootloader unlockable/relockable   grapheneos.social/@Graphe... · Posted by u/pabs3
Narushia · 8 days ago
I agree that the features should ideally be provided by the base system so that the user does not have to "hack them in" with root-powered apps. But the reality is that most Android "distros" simply do not support the features that I would consider basic functionality. I mainly root for three reasons:

- Backing up all app data via Neo Backup. Android has an auto-backup feature that backs up app data to the user's Google Drive, but unfortunately the app developer can simply opt out of this, and the user cannot do anything about it. This means that app data may be lost when migrating to a new phone, as the app data is stored in directories that are not accessible in the filesystem without root.

- High-quality call recording via Call Recorder. For some reason, some (most?) phones do not allow apps to access the raw incoming audio stream. Non-root apps have to rely on capturing the other end through the microphone, which is horrible.

- /etc/hosts-based ad blocking while using a VPN via AdAway. DNS-based ad blocking is possible via apps like AdGuard, which use a local VPN to accomplish this. Unfortunately, Android only allows one VPN connection at a time, which means that without root I would not be able to use a VPN for any other purpose while simultaneously blocking ads.

---

I have no experience with GrapheneOS, so I'd be interested to hear if these features are possible on it without rooting. If not, can I request these features somewhere?

Andromxda · 8 days ago
Rooting is a very bad idea. https://madaidans-insecurities.github.io/android.html#rootin... But GrapheneOS is fully open source and provides great build instructions, so you can always make your own build and add whatever features or privileged apps you like within the standard AOSP frameworks for privileged apps with system integration.

> Backing up all app data via Neo Backup

GrapheneOS includes Seedvault by default. https://grapheneos.org/features#encrypted-backups

> High-quality call recording via Call Recorder

Call recording is built into the Dialer app on GrapheneOS. https://grapheneos.org/features#encrypted-backups:~:text=Cal....

> DNS-based ad blocking is possible via apps like AdGuard

DNS-based blocking can also be accomplished by using Android's native Private DNS feature with a resolver that blocks ads. You could even host your own on a VPS if you are more comfortable running name resolution and DNS-level adblocking on infrastructure you control.

The RethinkDNS app also lets you use DNS-level adblocking and a VPN at the same time. https://grapheneos.org/faq#ad-blocking-apps

> I have no experience with GrapheneOS, so I'd be interested to hear if these features are possible on it without rooting.

I recommend giving https://grapheneos.org/features a read.

> If not, can I request these features somewhere?

Check out the issue tracker on GitHub: https://github.com/GrapheneOS/os-issue-tracker/issues

Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
Andromxda · 10 days ago
> you can inspect the code it's running

That's only true for microG itself, not the Google blobs it needs to download and execute in order to function. GmsCompat on GrapheneOS is also fully open source.[1]

> For example you can replace the location service with a privacy respecting one.

GrapheneOS literally does that.[2] It's currently not perfect in regard to privacy because they are using Apple's Wi-Fi positioning service, but proxying it through their own servers, so Apple never gets the user's IP address or any unique identifiers, and link the location information to any other data. One thing Apple currently does better than most network location providers is the fact that they don't just return position data for one BSSID, they actually give you the data for hundreds of nearby BSSIDs as well[3], which is more private, and means that much fewer requests need to be made to the service.

Because of this aforementioned aspect, Apple's Wi-Fi positioning system is also incredibly easy to scrape. GrapheneOS plans to build their own database, and let users download it, so Wi-Fi positioning could be performed fully locally.

> It would be amazing if grapheneos would support microG as an option. But they are too much "not invented here" for that to happen.

GrapheneOS doesn't support microG, because it has worse app compatibility than Sandboxed Google Play, and requires elevated privileges, unlike SGP.

[1] https://github.com/GrapheneOS/platform_packages_apps_GmsComp...

[2] https://grapheneos.org/features#network-location

[3] https://github.com/acheong08/apple-corelocation-experiments

Andromxda · 8 days ago
and CAN'T link the location information to any other data
Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
abdullahkhalids · 10 days ago
Is Curve Pay going to sell my data to someone?
Andromxda · 10 days ago
Definitely wouldn't be unheard of in the Fintech industry. But I don't know, because I don't use the service. My bank thankfully offers their own implementation of NFC payments within their own app, so I don't need to rely on any third-party services. Many banks in Europe actually do this. Here's a German article about Google-free mobile payments on GrapheneOS: https://www.kuketz-blog.de/nfc-datenschutzfreundlich-bezahle...
Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
wolvoleo · 10 days ago
MicroG has two huge advantages: you can inspect the code it's running, and you're not tied to Google services. For example you can replace the location service with a privacy respecting one. With the sandboxed play you can't do that, you're stuck with the Google version. The only thing you still need Google for is the push notifications, because the backend of the apps only speaks to them.

It would be amazing if grapheneos would support microG as an option. But they are too much "not invented here" for that to happen.

Andromxda · 10 days ago
> you can inspect the code it's running

That's only true for microG itself, not the Google blobs it needs to download and execute in order to function. GmsCompat on GrapheneOS is also fully open source.[1]

> For example you can replace the location service with a privacy respecting one.

GrapheneOS literally does that.[2] It's currently not perfect in regard to privacy because they are using Apple's Wi-Fi positioning service, but proxying it through their own servers, so Apple never gets the user's IP address or any unique identifiers, and link the location information to any other data. One thing Apple currently does better than most network location providers is the fact that they don't just return position data for one BSSID, they actually give you the data for hundreds of nearby BSSIDs as well[3], which is more private, and means that much fewer requests need to be made to the service.

Because of this aforementioned aspect, Apple's Wi-Fi positioning system is also incredibly easy to scrape. GrapheneOS plans to build their own database, and let users download it, so Wi-Fi positioning could be performed fully locally.

> It would be amazing if grapheneos would support microG as an option. But they are too much "not invented here" for that to happen.

GrapheneOS doesn't support microG, because it has worse app compatibility than Sandboxed Google Play, and requires elevated privileges, unlike SGP.

[1] https://github.com/GrapheneOS/platform_packages_apps_GmsComp...

[2] https://grapheneos.org/features#network-location

[3] https://github.com/acheong08/apple-corelocation-experiments

Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
poisonborz · 11 days ago
I'd be more concerned for face unlock. You take an OS that goes to the extreme to prevent any external intrusion to your phone and you enable an option to unlock it for anyone by holding the phone to your face?
Andromxda · 10 days ago
GrapheneOS doesn't support face unlocking right now, but they have a useful two-factor unlock option that requires both a PIN, and biometrics (currently a fingerprint on Pixel devices) to unlock the device while in AFU. It also allows you at the same time to use a long passphrase in BFU.
Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
kelnos · 11 days ago
I think most banking apps already do work on GrapheneOS (not sure about TPM/secured credentials though). Graphene IIRC keeps a compatibility list somewhere. Some don't work, of course, but more do than I would have expected.

For me, the big question is if Google Wallet & its NFC payments will work. They don't on GrapheneOS currently, but if Motorola plans for this to be a fully Google-certified phone with GApps and everything, it will have to, somehow.

Andromxda · 10 days ago
> Graphene IIRC keeps a compatibility list somewhere.

This is the community-maintained banking app compatibility list: https://privsec.dev/posts/android/banking-applications-compa...

Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
padjo · 10 days ago
Curve Pay refused to give me an account on my Murena FP6 and no local bank offers contactless without google pay, so I'm stuck using a bank card like a caveman.
Andromxda · 10 days ago
> Curve Pay refused to give me an account on my Murena FP6

That's probably because /e/OS uses microG, which is vastly inferior to Sandboxed Google Play on GrapheneOS, and has much worse app compatibility. You should also know that /e/OS is a highly insecure OS, and both Fairphone and Murena are constantly misleading their customers with false marketing and false promises.

Andromxda commented on Motorola announces a partnership with GrapheneOS   motorolanews.com/motorola... · Posted by u/km
UnreachableCode · 10 days ago
>Contactless payments already work on GrapheneOS via Curve Pay

Are you sure about this? It was my understanding that NFC passes for gyms and stuff worked, but that if you want to pay for something with Google or Curve, you're shit outta luck

Andromxda · 10 days ago
> Are you sure about this? It was my understanding that NFC passes for gyms and stuff worked

This is only true for Google Wallet. It can be used as a normal wallet app for stuff like plane tickets, etc., but Google Pay requires the OS to be specifically whitelisted by Google. This is an incredibly anti-competitive move aimed at supporting Google's monopoly by deliberately disabling functionality on alternative (including much more secure) operating systems like GrapheneOS under the guise of security.

Curve Pay works fine on GrapheneOS, there's even an article by a community member talking about it: https://shkspr.mobi/blog/2025/06/contactless-payments-with-g...

u/Andromxda

KarmaCake day43July 25, 2025
About
Mastodon: @Andromxda@infosec.space
View Original