Wallet Logo

Samourai Wallet

latest release: Varies with device last analysed  3rd August 2020
Not reproducible from the source provided
100thousand

Published:

Our last analysis is based on data found in their Play Store description and their website and their source repository. We discuss issues with the provider here.
details below 

Help spread awareness for build reproducibility

Please help us spread the word, asking Samourai Wallet to support reproducible builds  via their Twitter!

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.

If you find something we should include, you can create an issue or edit this analysis yourself and create a merge request for your changes.

The Analysis

Update 2021-03-02: Samourai claims to be on F-Droid, implying … what exactly? FDroid.org has very strict rules about code being open source but FDroid itself is also open source and allows to add secondary repositories that might apply different rules and standards and that’s exactly what’s happening here. FDroid.org does not list Samourai but the Copperhead FDroid repository apparently does. As long as the binary on Google Play is not the same as the one on Copperhead, the presence on Copperhead has no relevance to the security of the 100k users that downloaded the app from Google Play. Smoke and mirrors from Samourai as always.

Update 2020-08-02: Samourai claims

which is a direct claim of falsehood of our findings. No other neutral party supported this claim so far and neither did the provider explain how such a verification should work or where our findings are wrong. This is so far the clearest lie and thus red flag about this wallet.

Update 2019-12-27: The provider closed the issue we had opened on their repository.

Update 2019-12-16: Samourai tweeted in response to us:

@SamouraiWallet Replying to @BashCo_ deterministic builds have not been a priority or goal at this stage of dev using the resources we have. The goals we have focused on (privacy, dojo, whirlpool, etc) we have continued to deliver on. There is limited value in this investment without expert audits for each release

The original review:

Samourai is still “early access” which means that there are no Google ratings or comments.

Their website claims the wallet is non-custodial:

Be your own Swiss Bank Fully non custodial software ensures you are always in control of your private keys. No email address, no ID checks, and no hassle. Just install and go.

Given claims like:

We are privacy activists who have dedicated our lives to creating the software that Silicon Valley will never build, the regulators will never allow, and the VC’s will never invest in. We build the software that Bitcoin deserves.

we are not surprised to not find who is behind this wallet.

But the build instructions on their GitHub are fairly simple:

Import as Android Studio project. Should build “as is”.

so lets see what we get when we do this:

/tmp/$ git clone git@github.com:Samourai-Wallet/samourai-wallet-android.git
/tmp/$ cd samourai-wallet-android
/tmp/samourai-wallet-android$ git tag
0.81
0.99.27-gb
0.99.87
0.99.88
/tmp/samourai-wallet-android$ git checkout 0.99.88

We open the folder in Android Studio, set the Build Variants as follows:

Samourai Build Variants

and build the APK.

The following is the full output of diffoscope. Red lines are what the playstore version misses compared to the self compiled version and green lines are additions. Right in the beginning we see the expected lines: META-INF/MANIFEST.MF is different, META-INF/CERT.RSA and META-INF/CERT.SF are exclusive to the playstore version as should be.

The rest of the diff is what makes the build not verifiable.

We left all the diff here (The diff was part of the review itself but that caused issues on some browsers.) for the more curious to investigate but it’s obviously too much to consider acceptable like we might conclude if it was only the .png files that were different.

(lw)

Verdict Explained

Not reproducible from the source provided

The app provider also shares code but we could so far not verify that the published code matches the published app!

This verdict means that the provider did share some source code but that we could not verify that this source code matches the released app. This might be due to the source being released later than the app or due to the provided instructions on how to compile the app not being sufficient or due to the provider excluding parts from the public source code. In any case, the result is a discrepancy between the app we can create and the app we can find on GooglePlay and any discrepancy might leak your backup to the server on purpose or by accident.

As we cannot verify that the source provided is the source the app was compiled from, this category is only slightly better than closed source but for now we have hope projects come around and fix verifiability issues.

The app cannot be independently verified. If the provider puts your funds at risk on purpose or by accident, you will probably not know about the issue before people start losing money. If the provider is more criminally inclined he might have collected all the backups of all the wallets, ready to be emptied at the press of a button. The app might have a formidable track record but out of distress or change in management turns out to be evil from some point on, with nobody outside ever knowing before it is too late.