Исследователь безопасности под псевдонимом 0xflorent совместно с командой контракта ICO Ethereum (ETH) 2016 года разблокировал около 2 млн долларов в эфирах, которые были заблокированы в течение девяти лет. Это была скоординированная операция «белого хакера», эксплуатировавшая уязвимость переполнения целых чисел, которую оригинальные разработчики так и не исправили.
Контракт принадлежит HongCoin — продаже токенов 2016 года, которая не достигла цели по сбору средств и должна была автоматически вернуть инвесторам эфиры, но не смогла этого сделать из-за ошибки в функции возврата.
Путь, найденный 0xflorent, разморозил 1 003,62 ETH, и теперь 48 первоначальных инвесторов имеют право на получение средств. Двое уже сделали это, получив в совокупности 96,5 ETH на сумму около 193 000 долларов, сообщил он в ветке в X в воскресенье.
Логика возврата контракта отклоняла любого держателя, чей баланс токенов превышал глобальный счетчик, который за годы частичных возвратов снизился до 356, ограничивая дальнейшие возвраты суммой в 3,56 ETH.
0xflorent обнаружил, что административная функция контракта, доступная только для мультиподписного кошелька HongCoin, не имела защиты от переполнения целых чисел, которая позже была внедрена в язык программирования Solidity. Вызов функции с определенным входным значением сбрасывал баланс держателя до единицы, что позволяло пройти проверку возврата и высвободить средства.
Однако восстановление не было односторонней эксплуатацией. Поскольку для выполнения административной функции требовался мультиподписной кошелек HongCoin, 0xflorent написал команде по электронной почте, проверил последовательность разблокировки на тестовом форке основной сети Ethereum, и сама команда подписала транзакции разблокировки.
Было подписано 41 транзакция, по одной на каждого заблокированного держателя, что высвободило действительно застрявшие около 1 000 ETH. Еще семь держателей имели достаточно небольшие балансы для прямого возврата без обходных путей.
Это второе подобное восстановление, о котором 0xflorent сообщил за восемь дней.
24 мая он заявил, что вернул 19,329 ETH на сумму около 40 590 долларов их первоначальным владельцам, включая 5,141 ETH от неудачного ICO в январе 2018 года и 14,190 ETH от семи истекших атомарных свопов в учетной записи пользователя кошелька Liquality, который стал недоступен после закрытия кошелька в 2024 году.
Восстановление происходит в период массовых эксплойтов в DeFi: только в апреле из протоколов было выведено сотни миллионов долларов, среди которых выделяется удар по Kelp DAO на сумму около 293 млн долларов.