Coinomiウォレットの脆弱性か?ユーザーが700万円以上失う。

Coinomi(コイノミ)マルチカレンシーウォレットの実装に問題があり700万円以上のコインを盗まれたとするユーザーが、Coinomi(コイノミ)の使用を中止する様に呼びかけている。

このセキュリティ問題はCoinomiがリカバリーフレーズをプレーンテキストの形でGoogleのサーバに送信しスペルチェックを行っていた事で発生したという。

Coinomi側はこの問題を認めている。

ハンドル名warith77は Exodusウォレットをメインで使用しているが、サポートされていないコインがあった為、Coinomiウォレットに移行する事にした。この際にExodusで使用していたリカバリーフレーズをCoinomiに移した事が問題となった。

warith77氏によると事件は2019年2月14日に発生。Windows版のCoinomiウォレットをダウンロードし、インストールした直後だ。
warith77氏はセットアップファイルにデジタル署名されている事に気が付いたが、メインアプリケーションに署名がない事に気がつきサポートに連絡した。サポートチームはすぐに署名入りのバージョンをアップロードしたが、その時すでに、warith77氏はExodusウォレットのリカバリーフレーズをCoinomiウォレットに移した後だった。

2019年2月22日に90%以上の所有コインがExodusウォレットからどこかへ転送されていることに気がついた。2月19日にBTCが送金されており、続いてETH、LTC、BCHが無くなっていた。

warith77氏はすぐにメインアプリケーションに署名がなかった事を思い出し、バックドアが仕掛けられていたかもしれないと思った。
しかしとにかく当日取った行動を再現する為、新しい仮想マシンをセットアップし、HTTP/HTTPS トラフィックを監視する為のソフトウェア(Fiddler)を走らせた。その結果、Coinomiがリカバリーフレーズ全体をスペルチェックする為、プレーンテキストの形でGoogleのサーバ(googleapis.com)に送っている事が判明した。

Coinomiのコア部分はJAVAで書かれているが、UI部はHTML/JavaScriptで構成されており、リカバリーフレーズを入力するテキストボックスは本質的にはHTMLでファイルあった。その為、テキストボックスへリカバリーフレーズが入力されると同時にgoogleapis.comへプレーンテキストの形で送信され、リモートサーバー上でスペルチェックされる仕様となっていたのだ。この仕様では「googleチームの誰かがリカバリーフレーズを入手する事ができてしまう。」とwarith77氏は主張している。

warith77氏はGoogle社員もしくはGoogle社員以外のGoogleapisに届いたデータにアクセス出来た人物の犯行だと疑っている。

現在の所warith77氏は紛失した700万円分以上のコインをCoinomiから補償されていない。

https://avoid-coinomi.com/

※追記 – 2019年2月28日

Coinomiからの公式ステートメントが発表された、その中で確認が取れた点について追記する。https://medium.com/coinomi/official-statement-on-spell-check-findings-547ca348676b

  • スペルチェックの機能はモバイル版には搭載されていないので、モバイル版(iOSとAndroid )のユーザーは特に何もしなくても安心して良い。
  • デスクトップ版もこの問題は修正済みなので新しいバージョンにアップグレードすれば問題ない。
  • デスクトップ版でリカバリーフレーズを使ってウォレットを復元した事がある人は新しいウォレットを作る事を推奨する。

Google APIは不正リクエストでエラー

coinomiの公式ステートメントによると、デスクトップ版で利用しているプラグイン(jxBrowser)からGoogleのサーバに送られたAPIキーが無効であった為、(不正リクエスト400エラー)が発生しスペルチェック自体がGoogle側で動作していなかった。この場合送られたデータがGoogleのサーバに残るのかどうかCoinomiは現在Googleに問い合わせ確認中との事。

jxBrowserからGoogleのサーバに送られたAPIキーは無効であった。

CoinomiはjxBrowserが原因と主張、warith77氏は反証

Coinomiは公式ステートメントで今回の問題はjxBrowserが最近のアップデートで、スペルチェックをデフォルト状態で有効化してしまった事が原因と主張している。

これに対しwarith77氏はjxBrowserのスペルチェックの設定は2016年からデフォルトで有効化されていたと反証している。

確認した所、確かにjxbrowserのサイトを見ると2016年からスペルチェックはデフォルトで有効化されている。

CoinomiのCTOとWarithの会話。
CoinomiのCTOはjxBrowserの最近のアップデートが問題の原因だと主張しているが、
warith77氏はjxBrowserは2016年から同じ設定だと反論している。
jxBrowserは2016年時点でスペルチェックをデフォルトで無効化する方法も公開している。

以上の様に現時点ではお互いの主張に食い違いがある、Bitcoin.jpではこの問題に注目し進展があれば随時情報更新を行っていく。

2019年2月28日(木曜日)