Детективная история с «кражей» 850 тыс. BTC ($490 млн) со счетов крупнейшей биткоин-биржи Mt.Gox получила продолжение. Двое экспертов из швейцарской лаборатории ETH Zurich опубликовали исследование “Bitcoin Transaction Malleability and MtGox” с описанием последствий уязвимости, из-за которой биржа потеряла деньги.

Исследователи проанализировали транзакции со счетов биржи за год до ее банкротства и установили два факта: 1) уязвимость действительно имела место; 2) злоумышленники практически не использовали ее.

Сама уязвимость проявлялась после того, как пользователь заказывал вывод биткоинов с биржи на свой адрес Bitcoin. Биржа создавала соответствующую транзакцию и отправляла ее в сеть Bitcoin. Однако, затем собственное программное обеспечение Mt.Gox некорректно обрабатывало ответы о количестве подтверждений, так что транзакция могла быть признана ошибочной, даже если впоследствии была подтверждена сетью Bitcoin. В результате соответствующая сумма заносилась обратно на счет пользователя. Естественно, тот мог затребовать ее повторно и, в итоге, получал средства в двойном размере.

Эксперты ETH Zurich попытались ответить на два фундаментальных вопроса: существовали ли злоумышленники, которые эксплуатировали эту уязвимость в массовом порядке (меняя байт OP_0 на OP_PUSHDATA2), и можно ли верить заявлению, что из-за этой уязвимости произошло банкротство биржи?

Ценность научной работы ETH Zurich заключается в том, что они с января 2013 года поддерживали работу узлов в сети Bitcoin, записывая информацию обо всех транзакциях. В том числе о тех, которые впоследствии признаны недействительными и информация о которых стирается с обычных узлов Bitcoin, то есть стираются и улики.

Эксперты отфильтровали все транзакции с января 2013 года, чтобы обнаружить случаи атак с двойной тратой (double spending). Всего обнаружены 35 202 конфликтные ситуации, из них 29 139 транзакций должны были быть впоследствии подтверждаться в блоке, а остальные 6063 сразу признавались недействительными. Из 29 139 транзакций в 28 595 были замены OP_0 на OP_PUSHDATA2, что является признаком malleability-атаки. В общей сложности, в потенциальных атаках были задействованы 302 700 BTC.

Как показало исследование, всего 5670 транзакций с заменой OP_0 на OP_PUSHDATA2 позже были подтверждены в блоке, что уменьшает потенциальную прибыль злоумышленника с 302 700 BTC до 64 564 BTC.

Но самое интересное, что подавляющее большинство malleability-атак в сети произошли после 7 февраля 2014 года, когда Mt.Gox опубликовала пресс-релиз с сообщением, что пострадала от таких атак, и заблокировала вывод средств.

График с нарастающим итогом показывает количество malleability-атак и объем средств, вовлеченных в «двойные» транзакции

Mt.Gox заявляет о краже 850 000 BTC. Но до 7 февраля в сети замечена всего 421 конфликтная ситуация на общую сумму 1812 BTC, из них 78,64% оказались неэффективными, так что злоумышленники могли присвоить не более 386 BTC. Это максимальная сумма, которая могла быть украдена с января 2013 года по февраль 2014 года в результате подобных атак. Даже если все атаки были направлены против Mt.Gox, то руководству биржи предстоит объяснить пропажу оставшихся 849 600 BTC.

Оставить мнение