
Безпековий дослідник Florent 31 травня підтвердив The Block, що він допоміг повернути приблизно 1,003 ETH (приблизно 2 млн доларів США), які були заблоковані в смартконтракті ICO HongCoin з 2016 року протягом дев’яти років. Станом на час публікації двоє інвесторів уже отримали загалом 96,5 ETH і добровільно сплатили Florent винагороду за white hat.
Технічні причини підтвердженого вразливого переповнення цілих чисел і рішення
Florent підтвердив The Block, що контракт HongCoin був розгорнутий на застарілій версії Solidity і не мав захисту від переповнення цілих чисел (пізніше це було виправлено через бібліотеку SafeMath). Функція повернення відмовляє у видачі токенів власникам, чиї баланси перевищують значення глобального лічильника. Протягом багатьох років часткові повернення зменшили лічильник до 356, що призвело до того, що ліміт на повернення становить лише 3,56 ETH (приблизно 7 тис. доларів США), тоді як баланси більшості власників значно перевищують цю суму.
Рішення, яке підтвердив Florent, полягало у використанні керівних можливостей команди HongCoin — функції, призначеної для карбування бонсусних токенів. Під час виклику з певними вхідними значеннями через відсутність захисту від переповнення баланс власника скидається до 1, перевірка на повернення одразу проходить, а заблоковані ETH вивільняються.
Не одностороння атака: команда HongCoin самостійно підписала транзакції для розблокування
Florent підтвердив, що це не була одностороння хакерська дія. Спершу він надіслав команді HongCoin електронний лист, а під час валідації операційного порядкового номера на розгалуженні Foundry mainnet команда HongCoin самостійно підписала транзакцію розблокування. Від відправлення першого листа до завершення всього процесу минув приблизно тиждень. 41 власнику потрібно було скинути баланс, що відповідає приблизно 1,000 ETH, які були реально заморожені; ще 7 власників могли одразу отримати повернення. Уся команда підписала 41 транзакцію.
Florent підтвердив, що причиною, чому хакер раніше проігнорував цей контракт, було: «У контракті немає жодної власницької вразливості, яка дозволила б хакеру вкрасти кошти; будь-який результат атаки — це повернення ETH назад первинним інвесторам». Для хакера жодного простору для прибутку не було.
Підтверджена методологія: сканер і відомі обмеження Claude Code
Florent підтвердив, що він підняв самостійно керований вузол Ethereum і запустив сканер, який позначав контракти з понад 100 ETH, а потім вручну відфільтрував їх один за одним. Він підтвердив, що використовував Claude Code для прискорення сортування й кластеризації контрактів, але зазначив, що в AI є обмеження під час аналізу конкретних вразливостей смартконтрактів: «AI часто підпадає під вплив факту, що контракт раніше не був зламаний, тому він часто за замовчуванням вважає “це неможливо зламати”, а це майже завжди помилково».
Florent 31 травня підтвердив, що раніше йому вдалося повернути кошти також із двох старих контрактів — 19,329 ETH (приблизно 40,590 доларів США). Це включало невдалий ICO-контракт 2018 року та кошти користувачів у Liquality після закриття застосунку у 2024 році.
Поширені запитання
Як вразливість переповнення цілих чисел у контракті HongCoin спричинила блокування коштів на 9 років?
Згідно з підтвердженням Florent, функція повернення вимагає, щоб баланс токенів власника не перевищував значення глобального лічильника. Протягом багатьох років часткові повернення зменшили лічильник до 356, а максимальна сума повернення — до 3,56 ETH, тоді як баланси більшості власників значно перевищують цю суму. Застаріла версія Solidity без захисту від переповнення цілих чисел була базовою технічною причиною; згодом це було виправлено бібліотекою SafeMath.
Чому раніше хакер не атакував цей контракт, що містив велику кількість ETH?
Згідно з підтвердженням Florent, у контракті не було жодної вразливості, пов’язаної з власністю, яка дозволила б атакувальнику вкрасти кошти; будь-який результат атаки — це повернення ETH назад первинним інвесторам, і для хакера не було жодного простору для прибутку, тому бракувало мотивації для атаки.
Як Claude Code використовувався в цьому white hat-проєкті та які в нього обмеження щодо AI?
Florent підтвердив, що він використав Claude Code для прискорення сортування й кластеризації контрактів, але підтвердив і те, що AI має обмеження під час аналізу вразливостей смартконтрактів: AI часто підпадає під вплив факту, що «контракт раніше не був зламаний», і тому за замовчуванням вважає неможливим зламати; він зазначив, що таке припущення часто є хибним.