Провальное Ethereum ICO 2016 года неожиданно «разблокировало» 1003 ETH через самоэксплуатацию

Ethereum Ico смарт-контракт восстановление мультиподпись cryptoslate.com

Исследователь белой шляпы и исходный мультиподпись HongCoin использовали сохраненный баг переполнения для возобновления возврата средств, заблокированных с 2016 года. Пост Неудачное ICO Ethereum 2016 года только что разблокировало 1003 ETH путем самоэксплуатации, впервые появился на CryptoSlate. — cryptoslate.com

Восстановление исследователем в области белых шляп 1003,62 ETH, заблокированных в результате неудачного ICO на Ethereum в 2016 году, превратило старую уязвимость смарт-контракта в напоминание о том, что самые ранние технические решения Ethereum могут оставаться активными почти десятилетие.

Исследователь, известный как 0xFlorent, сообщил, что ему удалось извлечь ETH из контракта HongCoin после того, как средства были заблокированы в течение девяти лет. По курсу Ethereum на 1 июня, составлявшему примерно 1983 доллара, извлеченная сумма оценивалась примерно в 1,99 миллиона долларов.

Восстановление зависело от исходного мультиподписи HongCoin. Контракт HongCoin по-прежнему требовал действий по этому пути управления для соответствующих административных вызовов.

Это сделало эпизод ближе к контрактной археологии, чем к обычному эксплойту: тот же неизменяемый код, который сохранил сбой возврата средств, сохранил и забытый обходной путь.

Контраст HongCoin разителен. Базовый уровень Ethereum оставался неподвижным. Все еще действующий путь разрешений и скоординированная подпись от исходного мультиподписи сделали 48 первоначальных инвесторов правомочными требовать средства через механизм возврата, который был неработоспособен годами.

Как вышел из строя путь возврата средств

HongCoin был проектом на Ethereum 2016 года, который в своем общедоступном репозитории описывался как децентрализованный венчурный фонд. Продажа токенов не достигла цели по сбору средств, и предполагалось, что участники смогут вернуть свои ETH через функцию возврата контракта.

Проблема заключалась в учете контракта. В исходном коде HongCoin функция refundMyIcoInvestment() проверяет, превышает ли баланс токенов вызывающего абонента значение tokensCreated. Если это условие истинно, вызов возврата не выполняется.

Если условие выполняется, функция обнуляет баланс токенов вызывающего абонента, очищает связанный учет, уменьшает tokensCreated на этот баланс токенов, а затем отправляет возврат средств.

Со временем более ранние возвраты уменьшили глобальный счетчик tokensCreated. Это поставило крупных держателей в странное положение: их балансы все еще были привязаны к их первоначальным требованиям, но эти балансы могли быть слишком большими для оставшегося счетчика контракта.

Затем функция возврата отклоняла их как недействительных, блокируя именно тех пользователей, которым она должна была вернуть средства.

Путь выхода был еще одним старым фрагментом кода. Административная функция mgmtIssueBountyToken(), ограниченная мультиподписью, могла добавлять предоставленную сумму к балансу получателя и к bountyTokensCreated.

Этот путь принадлежал управленческой стороне контракта, поэтому требовалось участие исходного мультиподписи. Современная арифметика Solidity по умолчанию отменяет операцию при переполнении.

До версии Solidity 0.8.0 арифметика оборачивалась при переполнении, если разработчики не добавляли собственные проверки. Более старое поведение сформировало путь выхода.

0xFlorent нашел способ использовать поведение арифметики административной функции для сброса баланса держателя до достаточно низкого уровня, чтобы проверка возврата прошла. Результат был парадоксальным: один устаревший баг помог устранить практический ущерб, вызванный другим устаревшим багом.

Этап Ключевая деталь
Продажа токенов в 2016 г. HongCoin собрал ETH для проекта в стиле венчурного фонда на Ethereum, который позже не достиг своей цели.
Сбой возврата средств Функция возврата отклоняла крупных держателей, как только глобальный счетчик токенов опускался ниже их балансов.
Старый путь администрирования Все еще существовала функция, ограниченная мультиподписью, которая могла изменять балансы, используя поведение арифметики до версии 0.8 Solidity.
Восстановление белой шляпы 0xFlorent скоординировал действия с исходным мультиподписью HongCoin, чтобы сделать заблокированных держателей правомочными требовать средства.
Доказательство в сети Транзакция от 29 мая показывает успешный вызов refundMyIcoInvestment(), который привел к внутреннему переводу 96 ETH.

Провальное Ethereum ICO 2016 года неожиданно «разблокировало» 1003 ETH через самоэксплуатацию

Мультиподпись сделала это скоординированным восстановлением

Требование мультиподписи установило границу для восстановления HongCoin. Чувствительный путь требовал от исходного управляющего адреса HongCoin выполнения соответствующих вызовов, поэтому практическое восстановление зависело от сотрудничества между исследователем и старым путем управления.

Координация имела такой же вес, как и код. Восстановление включало 41 подписанную транзакцию для заблокированных держателей, в то время как еще семь мелких держателей смогли вернуть средства напрямую без обходного пути.

ICO началось 29 августа 2016 года, закончилось 28 октября 2016 года и не достигло цели по сбору средств.

Запись в сети уже показывает активность возврата средств. Транзакция в сети от 29 мая, вызвавшая refundMyIcoInvestment(), привела к внутреннему переводу 96 ETH из контракта HongCoin на адрес инвестора.

Значение транзакции верхнего уровня составляло 0 ETH, поскольку фактическое движение произошло внутри вызова контракта.

Любой, кто следит за деньгами, должен отделять право на получение от завершенного распределения. Состояние контракта и выполнение мультиподписи вновь открыли путь для требования средств, которые были недоступны годами.

Видимые примеры в сети показывают активность возврата средств, а не полный учет требований каждого правомочного инвестора.

Случай HongCoin следует тщательно изучить, прежде чем кто-либо будет обобщать его на другие старые заблокированные средства. Ингредиенты были необычайно специфичными: идентифицируемая логика контракта, административная функция, все еще используемая исходным путем управления, исследователь белой шляпы, готовый к координации, и достаточно оставшейся стоимости в сети, чтобы усилия окупились.

Практическая деталь — это владение и разрешения. Старая функция могла изменять балансы, но вызывать ее мог только путь управления.

Это придает восстановлению этическую и операционную границу: внешнее исследование нашло путь, исходные подписанты его выполнили, и путь требования был вновь открыт для инвесторов.

Те же факты делают этот случай трудным для обобщения. Многим неактивным контрактам не хватает активного ключа управления, четкого набора заявителей или публичного следа, который делает ответственное восстановление правдоподобным.

Эта граница также снижает соблазн рассматривать эпизод как общую схему эксплойта. Технический механизм объясняет, почему ворота возврата средств открылись, но следствие истории проистекает из сочетания старого кода, действующих разрешений и публичного урегулирования.

Подобная археология становится более рискованной, когда контракту не хватает одного из этих элементов, поскольку обнаружение может выявить слабость до того, как будет создан пригодный для использования путь восстановления.

Ethereum сохраняет ошибку и средство ее исправления

Более широкая история Ethereum делает восстановление HongCoin чем-то большим, чем просто курьезом. Анализ 2025 года со ссылкой на Конора Грогана из Coinbase оценил навсегда потерянный ETH более чем в 913 111, что является консервативной оценкой ошибок, связанных с пользователями и контрактами.

Эта категория включает средства, отправленные на адреса сжигания, ошибки контрактов и крупные исторические инциденты.

Некоторые из наиболее значимых ранних моментов Ethereum также были связаны с дебатами о восстановлении. В 2016 году хардфорк DAO переместил около 12 миллионов ETH из контрактов, связанных с DAO, в контракт восстановления после кризиса управления, определившего сеть.

В 2017 году инцидент с самоуничтожением библиотеки мультиподписи Parity Technologies заблокировал 513 774,16 ETH на 587 кошельках.

Эти эпизоды были крупнее и политически значимее, чем HongCoin. Они по-прежнему помогают очертить, почему это меньшее восстановление находит отклик.

Провальное Ethereum ICO 2016 года неожиданно «разблокировало» 1003 ETH через самоэксплуатацию

Обещание Ethereum о сохранении кода и состояния является свойством безопасности и системой памяти. Оно сохраняет ошибки, полузабытые предположения, старые разрешения и случайное средство исправления, чья будущая актуальность была невидима при развертывании.

Эта долгая память теперь соседствует с формирующейся культурой безопасности. В январе ветераны Ethereum объявили о планах преобразовать около 75 000 ETH из оставшихся средств восстановления TheDAO в стейкинговый эндаумент для обеспечения безопасности Ethereum.

Провальное Ethereum ICO 2016 года неожиданно «разблокировало» 1003 ETH через самоэксплуатацию

Случай HongCoin работает в гораздо меньшем масштабе, но указывает на ту же загробную жизнь ранних решений Ethereum.

Следующее испытание — возможность восстановления: содержат ли другие старые контракты пути, которые могут быть использованы ответственно. Восстановление белой шляпы требует большего, чем просто баг. Оно требует законного пути управления, публичных доказательств в сети, тщательного раскрытия информации и способа избежать превращения контрактной археологии в руководство для оппортунистических атак.

HongCoin показывает, что некоторые заблокированные средства могут оставаться приостановленными внутри старой логики, ожидая, пока кто-то поймет как уязвимость, так и связанную с ней структуру разрешений. Это обнадеживающий результат для 48 инвесторов, которые теперь имеют право требовать средства.

Это также предупреждение для остальной части экосистемы: Ethereum помнит плохой код, и иногда он помнит и лазейку.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: