Coinomi Wallet User Loses $60k in Crypto
In somewhat of a controversial story whose investigation is still ongoing, we present to you one of the more interesting crypto wallet hackings which may or may not have happened, involving spell check, Google, and an all-out war on Twitter.
New Type of Wallet Vulnerability Uncovered
The presence of cryptocurrency wallet weaknesses is nothing new and they have been exploited by hackers for almost the entirety of their existence. The reliance upon a 3rd party source to manage user funds has always been considered to be at least somewhat risky, especially when depending upon closed source software providers.
On Tuesday the 26th a particularly novel wallet vulnerability was uncovered in the desktop version of the popular Coinomi multi-coin wallet, in which wallet backup phrases are sent to Google for a spellcheck process. In a post to Reddit, a self-proclaimed “cryptocurrency strategist and security consultant” gave a detailed hypothesis explaining how the contents of his wallet were compromised through no fault of his own:
“Coinomi multi-asset wallet poor implementation leads to sharing your plain-text passphrase with a third-party server. My passphrase was compromised and $60K-$70K worth of crypto-currency were stolen because of Coinomi wallet and how the wallet handled my passphrase. I’m disclosing this issue publicly because Coinomi refused to take the responsibility and all my attempts through private channels have failed.
Please note that this security issue cannot be exploited by anyone except by the people who created it or have control over the backend. To everyone who is using or used Coinomi wallet, make sure to remove your funds from the wallet and change your passphrase by creating a new wallet using another application otherwise your funds might get stolen sooner or later.” – Warith Al Maawali
Coins and Tokens Lost After Pass Phrase Exposure
Warith Al Maawali, resident of Oman, first noticed that 90% of his Coinomi wallet holdings after importing a 12 word pass phrase from an Exodus wallet. The reason behind doing this was to access tokens owned by the Ethereum address that were supported by Coinomi but not Exodus so that he could transfer them out of the address. According to Al Maawali, within 5 days of importing the pass phrase, his ETH and tokens were moved out of his wallet and to another address without his permission. All told, about $60,000 to $65,000 in coins and tokens had gone missing.
Coinomi's desktop wallet appears to send your seed phrase to Google's spell check server when you restore a wallet.@warith2020 has documented the issue here: https://t.co/PKk6eC5qAU, says he lost ~$60k because of it.
— Matt Odell (@matt_odell) February 27, 2019
Because the only tokens that were not removed from his address are not supported by Coinomi, Al Maawali suspected that his pass phrase must have been exposed and accessed by a hacker at some point. After performing a reverse engineering of the situation, he was able to determine that Coinomi accessed Google API services for a spell check of the pass phrase, sending it to a service owned by Google. This immediately made him suspicious of the possibility that his pass phrase was improperly accessed either an employee of Google or a Coinomi employee using a “back door,” who then used it to empty the contents of the wallet.
Does your BTC or BCH wallet app send your seed phrase to a remote spell checking service? If it does then you should not use such a wallet app. The same goes for your keyboard app.
The Coinomi wallet does this and should not be used.
— Tomislav Dugandzic (@todu77) February 27, 2019
Twitter Flame War Ensues
In the following days, Coinomi patched their desktop client, removing the spell check feature and blaming the vulnerability on an improperly configured plug-in. After not receiving his funds back from Coinomi, or any guarantee of their return, Al Maawali took to Reddit, Twitter and Bitcointalk with his allegations, setting up a website called avoid-coinomi.com where he meticulously documented the entire affair, complete with screenshots and information proving that Coinomi was indeed accessing Google API services.
In response, Coinomi posted an official statement disavowing responsibility and accusing Al Maawali of blackmail:
“Our engineers immediately tracked down the cause of this issue, which wasn’t a bug in our source code but instead was a bad configuration option in a plug-in used in Desktop wallets only. That plugin enabled the spell-check functionality by default in a recent update and was fixed by the jxBrowser plug-in team just 6 days ago — which is the same day we were contacted by Warith Al Maawali…
During these days, Warith Al Maawali repeatedly refused to disclose his findings and kept threatened to take this public if we didn’t pay right away the ransom of 17 BTC which would make up for the “hacked” funds (stolen by Google, according to Warith Al Maawali) that are possibly still controlled by him and couldn’t have been hacked because of Coinomi for a series of reasons…”
Let the message be clear, we do not negotiate with blackmailers.
Here is the full Helpdesk correspondance with @warith2020 (a blackmail gone wrong):
— coinomi (@CoinomiWallet) February 27, 2019
Twitter user Noah Seidman, who describes himself as an “Android specialist and crypto perma-bull,” interjected some reasonable, clear-headed steps that could be taken for the benefit of both parties in a series of tweets:
“It’s only logical to engage sequentially. Asses issue, fix issue, simultaneously determine if funds were stolen. If funds were stolen due to this specific bug it was someone with access to log data at Google, which means a criminal investigation is warranted. After criminal investigation concludes, if funds are retrieved excellent. If not, then it’s reasonable/rational to expect compensation from the party at fault.
Interestingly there’s a finite list of people at Google that have access to the specific log data. The criminal investigation of grand larceny should proceed quite swiftly. Grand larceny is major, and I’m sure Google will take it quite seriously…” – Noah Seidman
As of Friday morning, the situation had become quite tense, with neither party backing down from their stance of not being at fault. Numerous accusations have been hurled on both sides with a fair amount of mudslinging being engaged all around. In one corner is Al Maawali, who firmly believes there is no way his pass phrase could have been compromised in the time between leaving his Exodus account and entering his Coinomi account. In the other corner is Coinomi, which bears the responsibility of acting as custodian for millions of dollars’ worth of their customers’ cryptocurrencies and has the reputation of never being hacked to defend.
Wallet Choice Lessons to be Learned
While claims from either side have yet to be validated, Bitcoin Core developer Gregory Maxwell chimed in to the conversation with some lucid words of wisdom, based on years of experience with cryptocurrency wallets and intimate knowledge of their potential pitfalls:
“Don’t use closed source wallets.
If anything this incident increases my (nearly zero) estimate of this wallet’s security: Someone looked and found at least at the moment it was sending the key material only to Google. That is more secure than should have been expected.
Don’t use closed source wallets.
Don’t use wallets that support a zillion different cryptocurrencies (just supporting one securely is a task too hard for basically anyone to get right…).
Don’t used closed source wallets.
I’m sorry to hear about the OPs loss.
Don’t used closed source wallets.” – Gregory Maxwell, Blockstream CTO
Maxwell’s comment stems from his belief that open source software should be the only software considered when trusting a cryptocurrency wallet; a few examples of which can be found here. Open source software means that it can be easily inspected and checked for potential weaknesses by the general community, such as that used by Coinomi. If software is closed source, this means its general code and architecture has not been revealed to the public, and it may contain elements that can later be exploited by malevolent parties.
The most famous and widely used open source wallet is Electrum, which also has its own vulnerabilities, but is generally considered to be safe as long as it is not updated from a non-authenticated source. Recently, Electrum users were asked to upgrade to the newest version of the wallet’s software, after it was revealed that malicious servers were instructing clients to a software package containing malware. The malware, once executed, retrieved the private keys from Electrum wallets and emptied the contents of wallets belonging to users who downloaded it. Electrum encourages users to engage the two-factor authentication option of the wallet to lessen the likelihood of this happening in the future.
In summary, and regardless of the outcome of the case with Al Maawali and Coinomi, crypto users are reminded to be extremely cautious when storing their funds and transferring large sums. Cryptocurrency definitely remains in its early, “wild west” stages, and much of the software commonly used for every day purposes is still highly experimental. A few ways to avoid finding oneself in a similar situation include:
- Never keeping a substantial amount of cryptocurrency in a single client.
- Only retrieving, exporting and importing private keys or passwords while disconnected from the internet.
- Only using trusted, verified, open source wallets to store significant amounts of cryptocurrency.
The age-old adage, “never invest more than you can afford to lose,” may pose a problem for users who want to invest their life savings into a new technology like cryptocurrency. For purposes of long-term safe-keeping, the absolute best way to store crypto funds remains in an offline-generated paper wallet. Of course, users must be sure not to lose the wallet either, so it is recommended that they store it in a vault or safe, as they would stacks of cash, jewelry, or bars of gold.