2016年のHongCoinのイニシャル・コイン・オファリング(ICO)コントラクトで資金が9年間動けなくなっていたところ、Florentとして知られる開発者が約1,003 ETH(現在の価格で約200万ドル相当)を回収した。Ethereumのトークン販売は、資金調達目標を下回った場合に投資家へ自動的に返金するよう設計されていたが、プログラミングのバグにより、枯渇したグローバルカウンターの影響で残高が一定以上の保有者には返金が実行されなかった。Florentは、コントラクトの管理(admin)機能にあるオーバーフローの脆弱性を悪用し、HongCoinチームと約1週間連携して、48人の元の投資家のために資金のロックを解除した。この回収は、SafeMath以前の時代の初期スマートコントラクト脆弱性が、現在もオンチェーン上の価値を固着させ続けることを示している。
HongCoinのコントラクトは、2016年にコミュニティ運営の投資ファンドとして売り込まれ、返金メカニズムとして、残高がグローバルカウンター変数を超えるトークン保有者を拒否する仕組みを含んでいた。部分的な返金が積み重なった結果、そのカウンターは356まで減り、総返金額は最大3.56 ETH(約$7,000)に制限された一方で、残りの多くの保有者ははるかに大きな金額を保有していた。
FlorentはThe Blockに対し、当該コントラクトは、オーバーフローエラーに対する保護が欠けた古いバージョンのSolidityプログラミング言語でデプロイされていたと語った。こうしたエラーでは、十分に高い値に達した数値が0または1にリセットされるが、この脆弱性は後にSafeMathライブラリによって対処された。
開発者はチームの管理(admin)機能を通じた回避策を見つけた。その機能は本来、特定のイベントのためにバウンストークンを発行する目的だった。正確な入力値でこの関数を呼び出すことで、保有者の残高が1にリセットされ、返金の判定チェックが通るようになってロックされていたETHが解放された。
admin機能はHongCoinのマルチシグ(multisig)ウォレットのみに制限されており、単独での実行はできなかった。Florentはチームにメールを送り、Foundryのメインネットフォーク上でトランザクションの手順を検証し、チームはアンロック用トランザクションに署名した。Florentによれば、最初のメールから手続き完了まで約1週間かかったという。
現在資金を請求できる48人の元投資家のうち、41人は残高リセットの悪用を必要としていた。残りの7人は、既存の関数を通じて直接返金できるほど小さい金額を保有していた。チームは、ブロックされていた保有者ごとに合計41件のトランザクションに署名し、本当に固着していたおよそ1,000 ETHをカバーした。
2人の投資家が合計96.5 ETH(約193,000ドル)を取り戻し、自発的にFlorentへホワイトハット報酬を送った。FlorentはThe Blockに対し、手数料や取り分、コミッションは一切なかったと語った。「チーム自体以外では、本当にそのコントラクトを綿密に掘り下げるインセンティブを持つ人はいなかったと思う」とFlorentは述べた。「自分のために資金を盗めるような所有権の欠陥はなかったので、ハッカーにとって得るものはなく、どんな悪用の結果もETHが元の投資家へ戻ることだけだ。」
日曜(5月24日)に、Florentは2つの古いコントラクトから19.329 ETH(約40,590ドル)を回収したと説明した。1つ目は、呼び出されることのなかったパブリック返金関数の裏に5.141 ETHが保持されていた、失敗に終わった2018年1月のICOである。2つ目は、Liquality Walletのユーザーによる有効期限切れの7件の期限切れアトミックスワップの合計14.190 ETHが関わるものだった。Florentは、Liqualityが2024年にアプリを停止した後、ユーザーの代わりにこの資金を返金した。
Florentは、最近自宅ホストのEthereumノードを立ち上げ、100 ETHを超えて保有しているすべてのコントラクトをフラグ付けするスキャナを作り、それから候補を精査したと語った。「多くのコントラクトは他のコントラクトのフォークなので、クラスター内のどれか1つの欠陥は、他のものでも同じ欠陥になります」とFlorentは述べた。「とはいえ、大きくてよく知られたクラスターは、すでにかなり徹底的に調べられています。」
AI支援について聞かれると、FlorentはClaude Codeを使ってコントラクトの仕分けとクラスター化を加速させたが、スマートコントラクト分析には限界があることを見つけたという。「AIはしばしば、そのコントラクトがこれまで解読されていないという事実や、これまでの人たちが抜け道を見つけられなかったという事実によりバイアスがかかります。だから結局『これは解読不可能だ、全部試した』みたいにデフォルトになりがちで、それはしばしば誤りです。」
この回収は、DeFiエクスプロイトの波の最中に起きている。4月だけでも、Kelp DAOでの約2億9,300万ドルの流出を含め、攻撃は数億ドル規模に達した。セキュリティ企業OpenZeppelinの共同創業者は最近、彼はすべてのDeFiは安全ではないと考えていると述べた。Euler Financeの2023年のエクスプロイト後にほぼ全額がホワイトハットによって回収されたり自発的な返還があったように、一部の悪用はホワイトハットによる回収や自発的な返却で終わっている。
「最近になって、プロトコルを狙うハッカーが明確に再び増えてきていて、DeFiは投資先として複雑になってきています」とFlorentは述べた。「悪用するのではなく、守ろうとする人たちのカウンタームーブが出てくるのを見てみたいです。道徳的にもやりがいがありますし、うまくいけば報酬としても得をすることができます。」
What caused the HongCoin ICO funds to remain locked for nine years?
2016年のHongCoinコントラクトの返金機能におけるプログラミングのバグにより、トークン残高がグローバルカウンター変数を超える保有者は誰でも返金を拒否される仕組みになっていた。部分的な返金を重ねた結果、そのカウンターは356まで減少し、Solidityの後のバージョンで一般的に用意されていたオーバーフロー保護がコントラクトに欠けているにもかかわらず、残高がより大きい保有者への返金が妨げられた。
How did Florent unlock the trapped ETH without stealing it?
Florentは、元々バウンストークンを発行する目的で作られたadmin機能を特定した。特定の入力値でそれを呼び出すことで、オーバーフローの脆弱性により保有者の残高を1にリセットでき、返金の確認(チェック)が通るようになった。admin機能にはHongCoinチームの署名が必要だったため、Florentは約1週間チームと連携し、ブロックされていた投資家向けに41件のアンロック用トランザクションを実行した。
How much ETH has Florent recovered from old contracts?
FlorentはHongCoinコントラクトから約1,003 ETH(およそ200万ドル)を回収した。日曜(5月24日)に、彼はさらに2つの別コントラクトから追加で19.329 ETH(約40,590ドル)を解放したと説明した。それは、呼び出されることのなかった2018年1月のICOで5.141 ETHが保留されていたケースと、有効期限切れのLiquality Walletのアトミックスワップ7件の合計14.190 ETHのケースだった。
関連ニュース
イーサリアムがGitcoinからProtocol Guildまでのパブリックグッズ向け資金調達モデルをテスト
スタンダード・チャータードは、価格が57%下落したにもかかわらず、ETHの目標を40,000ドル維持
暗号資産ETFの資金流出がビットコインとイーサリアムに圧力をかける
Bitmineが25,000 ETHを取得、保有総額は109億ドルに到達
休眠している保有者が、2026年にわたって5年から15年経過したビットコインで76億ドルを解き放つ