Два с половиной часа: ровно столько существовала уязвимость в популярном веб-кошельке Blockchain.info. Уязвимость достаточно обидная и довольно легкая в эксплуатации. Сколько пользователей пострадало доподлинно не известно, но по крайней мере 255 биткоинов (около 90 тысяч долларов) удалось вернуть в закрома Blockchain.info впоследствии. Причем хакер вернул деньги сам, совершенно добровольно, за “спасибо”, но обо всем по порядку.
Напомню, что в основании Биткоин находится криптография на основе эллиптических кривых. В принципе это означает, что есть приватный ключ, дающий доступ к Биткоин-адресу и которым подписываются транзакции. Специфика цифровой подписи на основе эллиптических кривых (сокращенно ECDSA) требует наличия некого случайного числа k. Причем число k должно быть все равно какое, главное, чтобы униформно распределено, ну или, если по-простому, должно быть действительно очень случайным. Иначе, если это самое число k используется повторно, либо просто предсказуемо, зная его, по формулам можно очень легко восстановить приватный ключ, а значит и получить доступ к кошельку. Подобная уязвимость в генераторах псевдослучайных чисел встречалась и раньше в различных реализациях Биткоин-кошельков, и, ничто не мешает этому случиться вновь.
8-го декабря Blockchain.info выкатили новую версию своего кошелька, которая простояла уязвимой целых 2 с половиной часа. За это время, все, кто пользовался Blockchain.info, отправили свои транзакции подписав их не очень случайным k. Оказывается, на этот случай есть свои хакеры. Им даже не надо взламывать никаких сервисов или атаковать сервера. Они просто настроили свои скрипты, которые спокойненько слушают транзакции, проходящие по сети Биткоин и наблюдают за аномалиями.
Когда, наконец, в Blockchain.info спохватились, то быстро откатили версию на старую и разместили на портале Reddit извинения, сообщив, что лишь 0.0002% пользователей успели подвергнуться опасности. Оказалось, что эти “две-десятитысячных процента” на самом деле не менее тысячи кошельков с содержимым на сумму около $90 тысяч, о чем и возвестил хакер под ником johoe на форуме bitcointalk.org, а также добавил, что увел эти деньги лишь для того, чтобы плохие парни не смогли сделать то же самое, и что обязается вернуть, как только настоящие владельцы средств предъявят какие-либо доказательства владения.
Очевидно, johoe узнал об уязвимости сервиса Blochain.info только когда ему написал технический директор веб-кошелька Бен Ривз (Ben Reeves) и попросил вернуть средства на адрес 15tXHJCjehqCEL6zRCkGwvuDY6YzZV5sKP, что johoe и проделал со своего TREZOR’а. Побольше бы таких парней как johoe.
Заметим, что в сентябре этого года с поста Chief Security Officer ушел Андреас Антонопулос, который теперь защищает Биткоин в канадском сенате и пишет прекрасную книгу, но, как говорится, а кто тогда в лавке остался?
После случившегося инцидента, в сети развернулась кампания против Blockchain.info. Люди ополчились против самого названия. Дело в том, что Биткоин, как протокол, основан на базе данных под названием blockchain, которая никакого отношения не имеет к указанному сервису. Вернее, Blockchain.info — просто популярный интерфейс для просмотра этой базы данных, так называемый “blockchain explorer”, а также по совместительству веб-кошелек, но кого волнуют такие тонкости? Если с Blockchain.info когда-либо случится более серьезный взлом, пользователи не разберутся и будут утверждать, что взломали Биткоин.
Полную историю хакерских атак на Биткоин мы собрали в специальной хронологии.