ИБ-специалист из Омана нашел баг в приложении криптовалютного кошелька Coinomi. Исследователь пытался разобраться, кто и каким образом похитил 90% средств с его аккаунта (около 70 000 долларов в различной криптовалюте), когда с удивлением обнаружил, что Coinomi отправляет парольные фразы пользователей на проверку правописания, обращаясь к Google Spellcheck API посредством HTTP, в виде простого текста.
Spell check ur crypto-currency wallet's passphrase remotely with #Coinomi ?https://t.co/xuQnLf0vOyhttps://t.co/nasw8FfmpQ#btc $btc $ltc $xmr $trx $xrp $zcoin $dash $zcash $gno $eth $ark $bch
— Warith Al Maawali - وارث المعولي (@warith2020) February 26, 2019
«Я объясню, что происходит с технической точки зрения. Основная функциональность Coinomi написана на языке программирования Java. Пользовательский интерфейс использует HTML/JavaScript и рендеринг осуществляется при помощи встроенного Chromium-браузера», —рассказывает пострадавший исследователь.
Как и во множество других построенных с использованием Chromium приложений, в Coinomi оказались интегрированы различные связанные с Google функции, включая автоматическую проверку правописания для всех полей ввода текста. Очевидно, разработчики Coinomi забыли или не сочли нужным отключить эту функциональность для UI кошелька, из-за чего парольные фразы пользователей оказались под угрозой компрометации.
В итоге любой MitM-атакующий (или даже сотрудник Google) мог перехватить парольную фразу в формате простого текста, а затем получить доступ к кошельку жертвы и похитить средства.
Хотя пострадавший ИБ-специалист не нашел явных свидетельств того, что именно через эту брешь неизвестные похитили его криптовалюту, он уверяет, что средства пропали только с кошелька Coinomi, и узнать его парольную фразу каким-либо другим образом злоумышленники не могли. Раздосадованный специалист создал сайт, посвященный проблеме, где призвал других пользователей избегать Coinomi и рассказал о своих попытках сообщить о баге разработчикам кошелька (пока безрезультатных). Вскоре издание Trustnodes сообщило, что разработчики вышли с ним на связь и заверили, что баг уже исправлен и присутствовал только в десктопной версии кошелька.
Кроме того, исследователь опубликовал PoC-видео с демонстрацией бага, подлинность которого (и самой проблемы) уже подтвердил ИБ-эксперт в области криптовалют Люк Чайлдс (Luke Childs), также сумевший воспроизвести баг.
Some people don't seem to be able to see the video because the quote tweet is shown instead, here's the video: pic.twitter.com/x592HW9sEi
— Luke Childs (@lukechilds) February 27, 2019
У себя в Twitter Чайлдс рассказал, что не впервые сталкивается с проблемами безопасности у Coinomi. Еще в 2016 году он обнаружил, что Android-версия кошелька сообщается со своими бэкэнд-серверами посредством HTTP, открытым текстом. Тогда разработчики Coinomi отказались признать эту проблему, а позже и вовсе удалили баг репорт Чайлдса.
UPD
Разработчики Coinomi опубликовали официальное заявление о случившемся, а также был обнародован отчет об инциденте, написанный независимой фирмой Cipherblade по итогам проведенного расследования.
Авторы Coinomi еще раз подтвердили, что связанная с проверкой орфографии ошибка присутствовала лишь в десктопной версии кошелька, и была исправлена. Более того, заявления оманского эксперта разработчики назвали "вымогательством", а раскрытие данных о проблеме "безответственностью" со стороны ИБ-специалитов.
В компании утверждают, что данные не передавалась в формате простого текста, а были заключены в HTTPS-запросы, единственным получателем которых выступал Google. При этом запросы на проверку орфографии, адресованные Google API, не обрабатывались, не кэшировались и не сохранились, так как вообще возвращались с ошибкой.