В мире децентрализованных финансов старые ошибки редко исчезают бесследно. Однако иногда они находят неожиданное решение благодаря усилиям специалистов по кибербезопасности. Белый хакер под псевдонимом 0xflorent успешно вернул к жизни активы, которые считались потерянными почти десятилетие.
Девятилетний замок: как застряли миллионы в HongCoin
В далеком 2016 году проект под названием HongCoin провел первичное предложение монет (ICO). Токенсейл не достиг своей минимальной финансовой цели, и смарт-контракт должен был автоматически запустить возврат Ethereum ICO всем участникам. Однако из-за критической ошибки в коде функции возврата средства оказались заблокированы.
Проблема заключалась в логике подсчета баланса. Функция возврата отклоняла транзакции любого держателя, чей баланс токенов превышал глобальный счетчик. Из-за многократных частичных возвратов этот счетчик со временем упал до критической отметки 356, что фактически ограничило максимальный размер возврата смехотворной суммой в 3.56 ETH. Все, у кого на балансе было больше, оказались в ловушке.
Статистика спасательной операции:
- Общий объем разблокированных средств: 1,003.62 ETH (около $2,000,000)
- Количество пострадавших инвесторов: 48
- Период блокировки активов: 9 лет
Технический маневр: переполнение целых чисел во спасение
Исследуя древний код, 0xflorent обнаружил уязвимость в административной функции контракта, которая была доступна только мультисиг-кошельку разработчиков HongCoin. В те времена язык программирования Solidity еще не имел встроенной защиты от переполнения целых чисел (integer overflow), которая сегодня является стандартом благодаря библиотекам вроде SafeMath.
Хакер выяснил, что при отправке определенного входного значения баланс пользователя можно искусственно сбросить до единицы. Это позволяло обойти жесткую проверку лимита и успешно инициировать вывод средств.
«Эта спасательная операция наглядно показывает, что старые смарт-контракты, написанные до появления современных стандартов безопасности, остаются либо бомбами замедленного действия, либо запертыми сейфами, ждущими своего часа и нестандартных решений».
Для реализации плана требовалось участие самих создателей проекта. Белый хакер связался с командой HongCoin, продемонстрировал работоспособность метода на тестовом форке основной сети Ethereum, после чего разработчики согласились подписать необходимые транзакции. В общей сложности был подписан 41 перевод, что позволило полностью освободить заблокированный эфир.
Не первый триумф белого хакера
Этот случай стал вторым крупным успехом 0xflorent за последнее время. Буквами ранее он сообщил о возврате около 19.3 ETH ($40,590) законным владельцам. Среди тех средств были активы из другого неудачного ICO 2018 года, а также средства пользователей прекратившего работу кошелька Liquality Wallet.
Часто задаваемые вопросы (FAQ)
Что такое переполнение целых чисел (integer overflow)?
Это арифметическая ошибка в программировании, когда результат вычисления превышает максимальный объем памяти, выделенный для хранения числа, из-за чего значение сбрасывается до минимального или некорректного уровня.
Могут ли все инвесторы HongCoin забрать свои деньги сейчас?
Да, благодаря совместным действиям хакера и команды проекта, средства 48 инвесторов теперь доступны для вывода. Несколько человек уже успешно забрали свои доли.
