«Невзламываемые» блокчейны подверглись массовым взломам
Специалисты по безопасности все чаще обнаруживают уязвимости в криптовалютных платформах и системах смарт-контрактов, причем некоторые из них носят фундаментальный характер. По некоторым данным, киберпреступниками с 2017 г. было похищено свыше $2 млрд в криптовалюте.Серия атак на блокчейн-платформы
С начала 2017 г. хакерам в общей сложности удалось похитить порядка $2 млрд в криптовалюте, причем учтены только случаи, получившие огласку. Такие данные приводит журнал MIT Magazine в статье, посвященной проблемам блокчейн-платформ. Вполне вероятно, что подобные атаки осуществляются отнюдь не хакерами-одиночками, а хорошо организованными группами киберпреступников. Аналитики компании Chaninalysis, которая занимается криптовалютными расследованиями, считают, что существует как минимум две группы хакеров, укравшие у криптообменников суммарно около $1 млрд. Интерес киберпреступников к блокчейн-системам неудивителен и обусловлен необратимостью транзакций, которая и отличает их от традиционных финансовых систем.
В начале января 2019 г. команда специалистов по безопасности крупной криптовалютной биржи Coinbase обратила свое внимание на странности, происходящие с криптовалютой Ethereum Classic – ее блокчейн, то есть вся история транзакций, подвергся атаке.
Атакующим удалось установить контроль над более чем половиной вычислительных мощностей сети Ethereum Classic, то есть провести так называемую атаку 51%. Это дало киберпреступникам возможность перезаписать историю транзакций таким образом, чтобы «провернуть» схему двойной траты (double spend), то есть потратить ранее израсходованные средства еще раз. Сотрудники биржи зафиксировали момент атаки, в ходе которой злоумышленники пытались похитить эквивалент $1,1 млн в криптовалюте, но по неизвестной причине кража не удалась.
Другой популярной платформе Gate.io повезло меньше – она лишилась $200 тыс. в результате данной атаки. Правда, похитители вернули половину суммы на следующий день, что изрядно удивило всех причастных к инциденту.
Еще год назад подобный сценарий многим сторонникам технологии блокчейн казался практически невозможным, но так называемая атака 51% на Ethereum Classic представляет собой лишь одно звено в цепочке недавних ударов по блокчейн-платформам.
Как взламывают блокчейны
Блокчейн представляет собой зашифрованную базу данных, актуальность которой поддерживается сетью компьютеров. Каждый из участников сети хранит самую последнюю версию этой базы данных. Протоколом блокчейна называют набор правил, которые определяют порядок проверки и добавления новых транзакций в БД узлами сети. Протокол включает набор мер, направленных на стимулирование поддержания системы в работоспособном состоянии. Тщательно продуманный протокол делает подделку транзакций чрезвычайно сложной и «дорогостоящей», но предельно упрощает проверку легитимных транзакций. Перечисленные свойства блокчейна делают его весьма привлекательной технологий, в особенности для финансового сектора.
Тем не менее, чем сложнее структура блокчейна, тем больше ошибок при проектировании в нее может быть заложено по случайности. К примеру, разработчики блокчейна криптовалюты Zcash, в реализации которого используются сложные математические алгоритмы, недавно устранили уязвимость протокола, позволявшую выпустить неограниченное количество монет. К счастью, ею никто не успел воспользоваться.
Помимо протокола блокчейна уязвимости может содержать программа-клиент, позволяющая поддерживать работу узла и совершать операции с криптовалютой. Так, в сентябре 2018 г. разработчики клиента Bitcoin Core исправили ошибку, позволявшую злоумышленникам выпускать больше биткойнов, нежели допускала система.
И все же чаще всего хищение средств в цифровых валютах становится возможным не вследствие атаки на сам блокчейн, а на разного рода криптовалютные «обменники».
Правило 51%
Уязвимость к атакам 51% присуща большинству криптовалют, поскольку часто их блокчейны используют принцип доказательства выполнения работы (proof of work) для подтверждения транзакций. В ходе процесса, который называют майнингом (Mining, «добыча полезных ископаемых»), узлы задействуют значительную вычислительную мощь, чтобы доказать свое право добавить очередную транзакцию в базу данных. Лицо, установившее контроль над хотя бы 51% вычислительных мощностей системы, может перевести часть средств другому ее участником, а затем сформировать альтернативную версию блокчейна, в которой эта транзакции не будет отражена, как будто ее никогда и не было. Такую новую версию называют форком (fork, «вилка»). Злоумышленник, под контролем которого находится наибольшая часть инфраструктуры блокчейна, может обеспечить признание форка официальной версией цепочки транзакций и вновь потратить уже израсходованные средства.
Атака на популярные блокчейн-сервисы будет стоить злоумышленнику очень значительных средств. Так, по оценке сайта crypto51.com, аренда оборудования, мощность которого достаточно для осуществления атаки на биткойн, может обойтись в более чем $260 тыс. в час.
В середине 2018 г. киберпреступники провели серию атак 51% на сравнительно малопопулярные монеты, такие как Verge, Monacoin и Bitcoing Gold, что позволило им обогатиться в общей сложности на $20 млн.
Эксплуатация ошибок в смарт-контрактах
Помимо атаки 51% блокчейн-платформы могут содержать ошибки в реализации механизма смарт-контрактов.
Смарт-контракт – это программа, работающая в сети блокчейна, которая используется для автоматизации движения криптовалюты в соответствии с заранее прописанными правилами и условиями. На смарт-контрактах могут базироваться механизмы принятия решений. К примеру, члены инвестиционного фонда, используя блокчейн-платформу с поддержкой смарт-контрактов, могут проголосовать и решить, в какой проект им вложить свои деньги.
DAO (Decentralized Autonomous Organizaion, «децентрализованная автономная организация»), пример такого фонда, в 2016 г. начал использование блокчейна Ethereum с поддержкой смарт-контрактов и вскоре после этого подвергся хакерской атаке. Уязвимость в системе смарт-контрактов стоила организации $60 млн.
Устранение подобных уязвимостей представляет собой гораздо более сложную задачу по сравнению с исправлением багов в обычном ПО. В такой ситуации разработчики, как правило, добавляют новые смарт-контракты, обеспечивающие взаимодействие со старыми и нивелирующие их недостатки. Кроме того, иногда реализую своего рода программные «рубильники», позволяющие отключить всю систему в случае обнаружения атаки. Тем не менее, если к этому моменту средства уже были похищены, для их владельцев подобная мера совершенно бесполезна.
Единственный способ вернуть украденное – вернуть блокчейн к состоянию, в котором он был до атаки, создать его форк, предварительно получив согласие от всех участников сети. Именно так и поступили разработчики Ethereum. Большая часть пользователей переключилась на новый форк. Небольшая же доля несогласных с решением разработчиков осталась верна оригинальному блокчейну, который теперь называется Ethereum Classic.