Nobody is talking about you or me. Start thinking wider... These issues make Obtainium suboptimal.
F-Droid vulnerability allows bypassing certificate pinning
- Edited
baby_bat I feel the same way, I am really happy that I'm now aware of the many issues F-Droid has and I stopped using it altogether. I started using Obtainium for my app updates instead.
I had to replace almost all of my apps (because of the different signature) but is was well worth it; I feel more at ease and many apps are now updated alot quicker also, furthermore, there is no longer that additional middleman (F-Droid) that can be compromised.
Thanks for all of the info guys!
FlipSid what would be the error code, if there is one, in the case of a rejection?
Error message is
'package conflicts with an existing package'
I think Obtanium can update apps in the background automatically.
Both in Apple App Store and Google Play, auto update feature won't update your apps as soon as new version released. If you want the latest update, you have to manually check for updates or even check apps one by one (Apple). This is annoying.
- Edited
I do all updates manually. I don't like not controlling updates and have never understood people's obsessions with automatic updates.
I am very fond of having control over updates too! So much so I revoke network access from the GrapheneOS System updater until I'm ready to install the update since as of right now it automatically downloads the update which is undesirable for me. I don't want anything being downloaded until I'm sure I'm ready to install it in the first place.
I also mainly use RSS feeds for apps now. I use obtainium only to fill in the blanks where RSS feeds are not available. I of course still use AppVerifier before installing where applicable.
Honestly it's kind of nice seeing people with similar preferences on updates.
Upstate1618 Play Store is perfectly capable of automatically updating your apps.
I've never seen Obtanium automatically update any of the apps, even though it's been enabled and the apps were installed via Obtanium, not another app and even manually updated via Obtanium at least once (so Android has correctly set Obtanium as the installation source). Obtanium even has unrestricted background permissions. As such, I don't think Obtanium is in any way reliable for automatic updates.
So it is already reported (https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1466#note_2281771672) that this issue would not significantly impact apps in the f-droid.org repo. I know, of reproducible builds (to my understanding the APK is directly uploaded if the build is reproducible). But isn't this similar to downloading the APK directly from the developers repo? Wouldn't that carry the same risk?
Can somebody offer some guidance on how to proceed? I want to avoid proprietary software on my phone whenever possible...
I always been thinking about the situation like this:
PlayStore: relatively high security but not always safe to install (there was malware in the past)
F-Droid: relatively low risk of installing malware if build by F-Droid and you need to trust the dev if the build is reproducible - risk of signature pinning but this would not affect already installed apps right?
directly from Source: You need to trust the developer and the Source that the uploaded binary is safe
Is my picture of this situation correct? Am I missing out significant points? If I am correct, would it be that dumb to keep using F-Droid for updates?
Anyway thank you for pointing out this issue and to spread the awareness!
ParanoidAndroid F-Droid: relatively low risk of installing malware if build by F-Droid
That's not entirely true. F-Droid does only scan with badness enumeration in mind, like a traditional antivirus. You still are at risk of getting malware in there, if it is custom written. They have no way to check it - they don't audit apps manually.
Also "it only affects F-Droid repo". WTF? F-Droid still exists today only because of 3rd party repos. So you either fix all of it or none of it.
I don't know how the repo system works with f-droid, but how would you make sure, that 3rd-party repos are safe? Is that even possible?
Isn't that still safer than having no audit at all? (For example when you use the binary from github)
- Edited
ParanoidAndroid So it is already reported (https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1466#note_2281771672) that this issue would not significantly impact apps in the f-droid.org repo.
Thank you for this link. It answers the question I had, what the implications for this certificate pinning vulnerability is.
Actually, according to F-Droid developers looking into this security vulnerability, it does not affect the default F-Droid repository at all, as the vulnerable functionality isn't even being used. All APKs have also been scanned, as an extra precaution, no signs of any tampering. Some third-party repositories might be using the vulnerable functionality, so they are working on a fix with high priority.
It is still not clear to me where it is they are using certificate pinning or why, but that question is not so important to answer anymore, as they are doing it in some very specific optional and disabled by default configuration only, according to F-Droid developers.
ParanoidAndroid I always been thinking about the situation like this:
PlayStore: relatively high security but not always safe to install (there was malware in the past)
F-Droid: relatively low risk of installing malware if build by F-Droid and you need to trust the dev if the build is reproducible - risk of signature pinning but this would not affect already installed apps right?
directly from Source: You need to trust the developer and the Source that the uploaded binary is safe
Is my picture of this situation correct? Am I missing out significant points? If I am correct, would it be that dumb to keep using F-Droid for updates?
I would say you have about the same protection from generic malware in both Google Play and F-Droid. The important thing is that they would both remove an app from their repository the moment someone reports there is malicious code in the app or its source code. And they will both make sure they have the genuine version of a certain branded app, and remove any non-genuine versions as soon as it would be reported to them. This is the big level of protection you get, root of trust. You don't get that if getting the app directly from the developer, on github or similar (unless the app happens to be in AppVerifier, in which case you can verify it anyway).
Personally I would never trust Google Play Services or any Google integrations in my threat model, since Google is one of the parties that has acted hostile towards my minority. The risk they would inject code to spy on us is maybe not that big, but the risk F-Droid or anyone in the open source community would is way way smaller. I looked into getting Google Play Services free versions of my privacy sensitive F-Droid apps directly from the developers, but they say no, use F-Droid. They only publish the Google Play version of their apps on github.
- Edited
It answers the question I had, what the implications for this certificate pinning vulnerability is
Can you please explain what the implications are?
- Edited
ParanoidAndroid Can you please explain what the implications are?
Yes. None. There are no implications for end-users of the official F-Droid repositories, since the vulnerable functionality isn't even used. Third-party repositories you add yourself might be vulnerable, but I don't know to what extent or how.
The vulnerability is in server code, so client apps like the F-Droid app are not affected either.
- Edited
DeletedUser87 That's not entirely true. F-Droid does only scan with badness enumeration in mind, like a traditional antivirus. You still are at risk of getting malware in there, if it is custom written. They have no way to check it - they don't audit apps manually.
Why pin this vulnerability on F-Droid? I see this happen quite a few times here, while the (recommended) alternative is even less ideal: you as a user are most likely to not check for this either, and Obtanium does nothing of the sort to protect you (it doesn't even check the signatures and AppVerifier is less than useful with their very limited database).
In my book, any automated check, audit and/or larger userbase that is able to find out malpractice is a lot better than the just-use-Obtanium+AppVerifier mantra here.
Also "it only affects F-Droid repo". WTF? F-Droid still exists today only because of 3rd party repos. So you either fix all of it or none of it.
I don't really know what leads you to that conclusion. I consider the main repo to be quite helpful. If only AppVerifier would support such an amount of apps...
- Edited
That said, if I were to use 3rd party installation sources anyway, I would consider not using Obtanium, but Izzy's 3rd party F-Droid repo: Izzy has a decent set of checks and balances before an app enters their repo, communicates extensively with the devs in order to produce cleaner APKs, updates are very frequent and many, if not most of the interesting FOSS apps that aren't in F-Droid's main repo are available there.
Maybe then this issue would come up, although "additional APK checks are in place with the IzzyOnDroid repo" and these issues even came to light because of IzzyOnDroid's additional checks.
SovereignCopper Why pin this vulnerability on F-Droid? I see this happen quite a few times here, while the (recommended) alternative is even less ideal: you as a user are most likely to not check for this either, and Obtanium does nothing of the sort to protect you (it doesn't even check the signatures and AppVerifier is less than useful with their very limited database).
In my book, any automated check, audit and/or larger userbase that is able to find out malpractice is a lot better than the just-use-Obtanium+AppVerifier mantra here.
I think you misunderstood me. I am not saying other platforms do it better. I'm only saying that the often recited fallacy of F-Droid being "malware free because they scan and have reproducible builds" holds true to this day. I've seen a lot of people claiming this as some sort of benefit, when it isn't. It's just as bad as everyone else.
SovereignCopper I don't really know what leads you to that conclusion. I consider the main repo to be quite helpful. If only AppVerifier would support such an amount of apps...
I don't like the main repo and I don't recommend it to anyone. App updates are slow (yes, because of F-Droid), they use outdated build environments and not long ago they leaked their private keys for fdroiddata
. I can't trust it and neither should you.
SovereignCopper That said, if I were to use 3rd party installation sources anyway, I would consider not using Obtanium, but Izzy's 3rd party F-Droid repo: Izzy has a decent set of checks and balances before an app enters their repo, communicates extensively with the devs in order to produce cleaner APKs, updates are very frequent and many, if not most of the interesting FOSS apps that aren't in F-Droid's main repo are available there.
So now you do think that 3rd party repos are useful and have "many, if not most of the interesting FOSS apps that aren't in F-Droid's main repo". Just pick one. Either go defend the horrible security of F-Droid or admit that the vulnerability IS in fact really bad.
Maybe then this issue would come up, although "additional APK checks are in place with the IzzyOnDroid repo" and these issues even came to light because of IzzyOnDroid's additional checks.
You know why they came up this way? Because Izzy cares and knows that they are very much affected.
It's the sheer stupidity of the F-Droid maintainers that has led to this clusterf***, which could've been avoided an eternity ago.
- Edited
DeletedUser87 I've seen a lot of people claiming this as some sort of benefit, when it isn't. It's just as bad as everyone else.
While I agree that absolutisms in this regard don't hold, I don't agree with your conclusion that it is "just as bad" (which is another absolutism).
App updates are slow
There aren't many apps I use that have access to critical data. Many are fully offline apps at that. Always being on the latest version isn't the holy grail, new releases are often the cause of new problems and F-Droid's delay of a few days has often allowed me to prepare and act accordingly.
That said, I don't update my browser via the main repo for this reason, so we're in agreement there.
outdated build environments
That's the only thing I'm wary of, although it has already been established here that the environment itself isn't EOL, just "Debian-outdated". That doesn't justify the use of older JDK's imho, though, so I agree they'd be better off using a more up-to-date distro.
they leaked their private keys for fdroiddata
This is very sloppy and shouldn't have happened. Also, it was analyzed, handled and reported, leading to vast improvements to the automation system. I'm not sure I have an issue with people making mistakes as much as with people holding it against them until the end of time.
Vanadium ships with loads of upstream vulnerabilities that get patched all the time. I don't see people here saying the Chromium base is completely insecure and therefore we should never trust it and its devs ever again.
DeletedUser87 So now you do think that 3rd party repos are useful
No, I picked. I'm not using IzzyOnDroid. I said clearly that:
if I were to use 3rd party installation sources anyway
...then it'd be IzzyOnDroid.
SovereignCopper There aren't many apps I use that have access to critical data. Many are fully offline apps at that. Always being on the latest version isn't the holy grail, new releases are often the cause of new problems and F-Droid's delay of a few days has often allowed me to prepare and act accordingly.
I'm sorry, maybe I got it wrong, but I thought we are on GrapheneOS and not Debian Bullseye LTS. App stability is a nice to have, but I suffered from this backwards thinking myself when I (in my eternal wisdom) decided to run Immich from the F-Droid repo, which was always lagging behind the server by like 3 (!) releases and still does to this day. Neither does it help when you are using mostly offline apps, other people don't. Especially those who don't know any better. Not to mention that even offline apps can be exploited by other apps if they have unpatched vulnerabilities.
SovereignCopper That's the only thing I'm wary of, although it has already been established here that the environment itself isn't EOL, just "Debian-outdated". That doesn't justify the use of older JDK's imho, though, so I agree they'd be better off using a more up-to-date distro.
Well, guess what? They won't. Because they have ignored the problem for years and will likely keep ignoring it until armageddon strikes.
SovereignCopper This is very sloppy and shouldn't have happened. Also, it was analyzed, handled and reported, leading to vast improvements to the automation system. I'm not sure I have an issue with people making mistakes as much as with people holding it against them until the end of time.
Eh, they were lucky some random dude even noticed it. Could've just as well been a black hat who then would've sold it on Raidforums or something and armageddon WOULD have struck. They were saved purely by dumb luck. If they hadn't "analyzed, handled and reported (to whom?)" it, I would be actually scared.
There is no excuse here. As I already stated multiple times, there's a pattern of systematic failure inside the F-Droid project. They can't get their code right (not even the f***** regex), they treat CVEs like it's just another Tuesday, they don't understand security, because they rely on "ifs" and "buts" and they generally just seem not to care. Doing the bare minimum to keep the show running.
And you can't defend this bulls**t behavior by stating that they also did something good. It doesn't matter. It doesn't matter because the negatives outweigh the positives here. They have been aware of every single problem they (currently) have for YEARS and nothing is changing. I don't know what else to do, except exert public pressure, because it's the last shot we've got. They were consulted and warned by multiple, very knowledgeable people and they don't give a f. That needs to change.
- Edited
DeletedUser87 I'm sorry, maybe I got it wrong, but I thought we are on GrapheneOS and not Debian Bullseye LTS. App stability is a nice to have, but I suffered from this backwards thinking myself when I (in my eternal wisdom) decided to run Immich from the F-Droid repo, which was always lagging behind the server by like 3 (!) releases and still does to this day. Neither does it help when you are using mostly offline apps, other people don't. Especially those who don't know any better. Not to mention that even offline apps can be exploited by other apps if they have unpatched vulnerabilities.
That's fair enough, but honestly? I hate that part of GrapheneOS. Every single time I update, I have to reserve some bit of "headspace" for the chance something breaks. Especially when doing automated jobs (back to the F-Droid case), these kinds of problems are quite sensitive. Now I already agreed that using Debian LTS is not a good option, but bleeding edge in such an environment, all for that 0.000000000000000000000000001% chance that someone would abuse a vulnerability in the 48 hours a package wouldn't yet be updated... then I'd say there's a decent balance to find there.
Granted, this is a bit muddled as I'm combining three different cases to make a point (GOS updates, F-Droid build env. and before that F-Droid app cycle).
DeletedUser87 I don't know what else to do, except exert public pressure, because it's the last shot we've got.
I reckon this is also where "bad blood" comes into play. I mean, the fact that "exerting public pressure" like you said is expressed in terms ranging from "Can't even get their regex right" all the way to "bulls**t behavior" and other expletives, together with the entitlement (not yours, but of others) I've read seems to make this hostile instead of constructive. That's just sad, because you're basically on the same side, while having arguments over bikeshedding.
That said, I would indeed like to see F-Droid's priorities shift more towards having decent security measures in place.
SovereignCopper 48 hours a package wouldn't yet be updated
48 hours?! That's a best (best best) case scenario. Let's have some examples:
Aurora Store (F-Droid build 4.6.3, current 4.6.4. not on F-Droid yet)
• Izzy: 23.12.
• F-Droid: 02.01. (lag of 11 days)Home Assistant (F-Droid build 2024-12.1-minimal)
• Github: 01.12
• F-Droid 09.12 (lag of 8 days, a lot of pre-releases and current release behind)Tasks.org (F-Droid build 14.1, current build 14.4.1)
• Github: 26.11.
• F-Droid: 29.11. (lag of 3 days, currently 7 (!) builds behind)Delta Icon Pack (F-Droid build 1.99)
• Github (version 1.98): 01.12
• F-Droid: 09.12. (lag of 8 days)
This is throughout the landscape. I've even seen some apps being MONTHS behind the current release, although less common.
SovereignCopper hostile instead of constructive
There is no more constructive with these people. You can talk to a wall 50 times, but it will keep being a wall. You need to use brute force to get through, as is the case here. There is comments dating back more than a DECADE (almost 12 years to be exact) that address the very same thing we are complaining about today. Do you honestly think, that after almost 12 years (likely longer, I'm too lazy to search) some nice words and a gift basket is going to change anything? It is clearly an attitude problem and there just is no. other. way.
DeletedUser87 I wasn't referring to F-Droid's update policy there, but in general sense about a Linux package manager for the build environment. Sorry for the confusion.
When it comes to F-Droid's track record on keeping apps up-to-date, yeah it could and perhaps should be better.
more than a DECADE (almost 12 years to be exact)
This seems to have been based primarily on a wrong assumption made by m0xie back then:
The bulk of applications distributed through fdroid are signed by keys that belong to the fdroid maintainers, and which are kept online. This means that the fdroid maintainers themselves, or any attackers who compromise fdroid, are capable of pushing malware to your device.
(when in fact no keys were held online at all).
I don't know if it helps to pile up every issue from the past, however big or small, instead of looking at the current situation and trying to improve it, but as far as I can judge, that hasn't proven to be easy and I recognize this is why there is bad blood between F-Droid and others.