Mycelium Bitcoin Wallet

less than 1 minute read

Published:

Wallet Logo

This app was first launched on 1st July 2013 and currently has more than 1000000 downloads, a 4.1 stars rating from 7697 users and the latest APK (version 3.3.1.1) was from 13th February 2020.

Our analysis was done on 17th February 2020 based on data found in their Playstore description and their website and their source repository.

We found these ways of contacting the developers:

Older reviews

Disclaimer

The following Analysis is not a full code review! We plan to make code reviews available in the future but even then it will never be a stamp of approval but rather a list of incidents and bad coding practice. We cannot find and tell you all the dark secrets the wallet providers might have.

Do your own research!

Try out searching for "lost bitcoins", "stole my money" or "scammers" together with the wallet's name, even if you think the wallet is generally trustworthy. For all the bigger wallets you will find accusations. Make sure you understand why they were made and if you are comfortable with the provider's reaction.

The Analysis

Disclaimer: The authors of this project have contributed to Mycelium. Andreas Schildbach was so kind and independently tested and confirmed Mycelium’s verifiability here for a past version. Independent tests would be highly welcome!

Here we test if version 3.3.1.1 also can be verified, following the known procedure expressed in our test script:

Results for
appId: com.mycelium.wallet
apkVersionName: "3.3.1.1"
apkHash: 6549d022684cac8521ff4c97cdd205ef289c58b58a589e092f1a5439aaf06a59

Diff:

Files /tmp/fromPlay_com.mycelium.wallet_3030101/original/META-INF/CERT.RSA and /tmp/fromBuild_com.mycelium.wallet_3030101/original/META-INF/CERT.RSA differ
Files /tmp/fromPlay_com.mycelium.wallet_3030101/original/META-INF/CERT.SF and /tmp/fromBuild_com.mycelium.wallet_3030101/original/META-INF/CERT.SF differ
Files /tmp/fromPlay_com.mycelium.wallet_3030101/original/META-INF/MANIFEST.MF and /tmp/fromBuild_com.mycelium.wallet_3030101/original/META-INF/MANIFEST.MF differ

This diff is what we want to see to call it verifiable.

The last verdict was nonverifiable due to lacking compile instructions. Those were fixed with this commit.

Verdict Explained

Verifiable: The provided Open Source Code matches the app released on Google Play

The app can be independently verified. If the provider puts your funds at risk on purpose or by accident, security researchers can see this if they care to look. It also means that inside the company engineers can verify that the release manager is releasing the app based on code known to all engineers on the team. A scammer would have to work under the potential eyes of security researchers. He would have to take more effort in hiding any exploit.

"Verifiable" does not mean "verified". There is good reason to believe that security researchers as of today would not detect very blatant backdoors in the open source code before it gets exploited, much less if the attacker takes moderate efforts to hide it.