Наконец закончилась гонка на опережение, о которой мы рассказывали две недели назад. Напомним, что после неудачного обновления сервиса онлайн-кошельков Blockchain.info, его пользователи в течение полутора часов создавали небезопасные транзакции. Уже после того, как уязвимость была устранена, и транзакции распространились по Биткоин-сети, активизировался бот хакера Johoe, написанный специально на этот случай. Вслед за этим компания Blockchain.info выпустила пресс-релиз, в котором пояснила, что ошибка затронула лишь 0.0002% пользователей, тем не менее, эти пользователи успели потерять порядка 1000 BTC (около $300 тыс.), а Johoe подобрал эти деньги и вернул компании. Оказалось, что Johoe не один такой и около 150 BTC ($45 тыс.) было украдено подобным же образом какими-то другими хакерами — это дорогой урок для компании Blockchain.info.
Позднее обнаружились технические подробности ошибки. Код кошелька Blockchain.info запускается полностью в браузере клиента и написан на языке программирования Javascript. Javascript, в свою очередь, это язык с нестрогой типизацией и предоставляет программисту (если не применять специальные инструменты) много способов выстрелить себе в ногу. В этот раз всего лишь одна непроиннициализированная переменная создала условия, при которых параметр seed для генератора псевдослучайных чисел мог быть выбран лишь из 256 значений (подробности). Подобная ошибка делала генератор детерменированным и он начинал выдавать предсказуемые последовательности случайных чисел. Любые две подписи с применением эллиптических кривых, если они используют одно и то же случайное число, легко взламываются, причем взломщик получает доступ к приватным ключам обеих подписей, что Johoe и проделал.
Три дня назад до Johoe добрались журналисты и взяли интервью. Оказалось, что парня зовут Йохан и работает он в Берлинском Университете, а Bitcoin увлекается с 2013-го года в качестве хобби. Без ложной скромности Йохан признал, что он хороший программист и математик, и что на свой бот, написанный на языке Java, он потратил несколько недель. Кроме того, оказалось, что добрыми делами по возращению средств нерадивым пользователям он занимается не в первый раз: еще в апреле он вернул средства компании Counterparty, утекшие подобным же образом. Что касается других, не столь чистоплотных хакеров, которые пользуясь этой же уязвимостью занимаются сравнительно честным отбором средств, то он даже контактировал с ними, но те не собираются ничего возвращать, считая эти деньги наградой за свой труд и знания.
Странно, что интервьюирующий так и не задал вопрос Йохану почему тот просто не забрал себе все эти деньги, ведь на них можно купить дом или несколько крутых машин, но мне кажется, ответ очевиден — мир не без добрых и честных людей, и к тому же, умных. Как можно судить по голосу, Йохан скромный айтишник, на которого свалилась неожиданная популярность и его очень воодушевляет признание другими его заслуг, но судя по балансу кошелька (0.497 BTC), на который Йохан собирает пожертвования, эти другие, как раз таки, заслуги пока не очень оценили. Остается надеяться, что кроме хорошей кармы, если захочет, Йохан получит и высокооплачиваемую работу в отрасли, к примеру, известно, что им уже интересовались из Coinbase, конкурента Blockchain.info.
Спасибо Johoe, за то, что он вернул деньги Blockchain.info и скандал удалось быстро замять, потому что компании с подобным названием просто таки необходимо держать лицо. История показывает, что атаки на Биткоин время от времени случаются и люди в таких случаях всегда теряют деньги. К сожалению никто не может дать гарантии, что инциденты, подобные этому не повторятся в будущем, и, надеемся, что тогда Йохан-Johoe будет все так же стоять на страже.