开发者追回 2016 年 HongCoin ICO 合约中被锁定的 200 万美元

ETH-1.31%
EUL-1.67%

一位名为 Florent 的开发者从 2016 年的 HongCoin 首次代币发行(ICO)合约中恢复了大约 1,003 枚 ETH,按当前价格粗略价值 200 万美元。资金在该合约中被困了九年之久。这次以太坊代币销售被设计为在未达到募资目标后自动向投资者发起退款,但一个编程漏洞导致退款功能无法对那些余额超过已耗尽的全局计数器的持有者执行。Florent 利用该合约管理员功能中的溢出漏洞,与 HongCoin 团队合作约一周,为 48 位原始投资者解锁了资金。这次追回表明:在“未 SafeMath 时代”早期的智能合约漏洞,仍然会让链上资产长期被锁定。

溢出漏洞阻止退款长达九年

HongCoin 合约在 2016 年被推介为一个由社区运营的投资基金,里面包含一种退款机制:任何余额超过全局计数器变量的代币持有者都会被拒绝。多年的部分退款将该计数器降至 356,从而将总退款上限限制为 3.56 ETH(约 7000 美元),而大多数仍在的持有者手中金额远高得多。

Florent 告诉 The Block,该合约在部署时使用的是旧版本的 Solidity 编程语言,该版本缺少针对溢出错误的防护。在这类错误中,数值一旦达到足够高的值就会重置为 0 或 1,而这种漏洞后来通过 SafeMath 库得以解决。

开发者通过团队的管理员功能找到了变通办法;该功能最初用于为特定事件铸造赏金代币。调用该功能并传入精确的输入值,会将持有者的余额重置为 1,从而使退款检查通过并释放被锁定的 ETH。

团队协作促成白帽解锁流程

管理员功能被限制在 HongCoin 的多重签名(multisig)钱包之下,无法单方面行动。Florent 给团队发邮件,在 Foundry 主网分叉(mainnet fork)上验证交易顺序,然后团队签署了解锁交易。Florent 表示,从最初发邮件到完成整个流程大约花了一周时间。

在这 48 位原始投资者中,现在可以领取资金的有 41 位需要利用余额重置漏洞。剩下的七位持有的金额小到可以直接通过现有函数完成退款。团队签署了 41 笔交易——每一笔对应一位被阻止的持有者——总计覆盖了约 1,000 枚真正被卡住的 ETH。

两位投资者已追回合计 96.5 ETH(约 19.3 万美元),并自愿向 Florent 发送了一份白帽奖励。Florent 告诉 The Block,这其中没有涉及任何费用、抽成或佣金。“除了团队本身之外,基本没有人真的有动力去非常仔细地挖这个合约,”Florent 说。“也没有任何所有权层面的漏洞会让人能为自己偷走资金,所以对黑客来说没有任何可得之处;任何一次漏洞利用的唯一结果就是:ETH 回到原始投资者手里。”

开发者此前已从失败合约中解放 19.329 ETH

在 5 月 24 日(周日)这天,Florent 描述称,他从两个更早的合约中恢复了 19.329 ETH(约 4.059 万美元)。其中第一个是一个失败的 2018 年 1 月 ICO:其在一个未被调用的公共退款函数后面锁着 5.141 ETH。第二个涉及 Liquality Wallet 用户的七笔已过期的原子交换(atomic swaps),合计 14.190 ETH;在 2024 年 Liquality 关闭其应用后,Florent 代表该用户进行了退款。

扫描方法定位高价值被困合约

Florent 表示,他最近搭建了一个自托管的以太坊节点,并构建了一个扫描器,用于标记所有持有超过 100 ETH 的合约,然后再逐一处理候选项。“很多合约都是其他合约的分叉,所以某一个合约里的缺陷在同一簇(cluster)中其他合约里往往也是同样的缺陷,”Florent 说。“不过话说回来,那些大型、广为人知的簇已经被相当彻底地翻过了。”

当被问及是否使用 AI 协助时,Florent 表示他用 Claude Code 来加快对合约的排序与聚类,但在智能合约分析方面发现存在局限。“AI 经常会受这样的事实影响:该合约之前从未被破解过,而且之前的人也找不到突破口……所以它经常默认‘这是不可破解的,我什么都试过了’,这往往是假的。”

此次恢复发生在一波 DeFi 漏洞利用浪潮之中。仅 4 月份,攻击累计就达数亿美元,由 Kelp DAO 约 2.93 亿美元的资金外流(drain)领衔。安全公司 OpenZeppelin 的一位联合创始人最近表示,他认为所有 DeFi 都不安全。部分漏洞利用最终以白帽挽回或自愿返还告终,例如 Euler Finance 在 2023 年遭受漏洞利用后的接近全额恢复。

“最近在各协议上黑客的活动明显又回来了,而且 DeFi 正变成一个很复杂、难以投资的领域,”Florent 说。“我很希望看到一种反向行动:去尝试保护那些东西,而不是利用它们。从道德上更有成就感,而且也可能回报不错。”

FAQ

是什么导致 HongCoin 的 ICO 资金在九年内一直被锁定?

2016 年 HongCoin 合约中的退款函数存在一个编程漏洞:它会拒绝任何代币余额超过全局计数器变量的持有者。多年的部分退款将该计数器降低到 356,从而导致那些余额更大的持有者无法获得退款;而该合约又缺乏后续 Solidity 版本中常见的溢出保护。

Florent 是如何在不偷走资金的情况下解锁被困的 ETH?

Florent 识别到一个原本用于铸造赏金代币的管理员函数。通过以特定输入值调用该函数,他得以利用溢出漏洞将持有者余额重置为 1,从而使退款检查通过。管理员函数需要 HongCoin 团队签名,因此 Florent 与团队协作约一周,执行了针对被阻止投资者的 41 笔解锁交易。

Florent 从旧合约中追回了多少 ETH?

Florent 从 HongCoin 合约中追回了大约 1,003 ETH(约 200 万美元)。在 5 月 24 日(周日),他还描述了从另外两个合约中释放额外的 19.329 ETH(约 4.059 万美元):一个是失败的 2018 年 1 月 ICO,锁着 5.141 ETH;另一个是七笔已过期的 Liquality Wallet 原子交换(atomic swaps),合计 14.190 ETH。

免责声明:本页面信息可能来自第三方,仅供参考,不代表 Gate 的观点或意见,亦不构成任何财务、投资或法律建议。数字资产交易风险较高,请勿仅依赖本页面信息作出决策。具体内容详见声明
评论
0/400
暂无评论