慢雾简析NFT项目Akutars资金锁定事件,11,539.5 枚ETH永远无法取出

  • NFT项目Akutars因合约代码缺陷导致11,539.5枚ETH永久锁定,慢雾安全团队分析发现以下关键问题:

  • 退款机制漏洞:拍卖合约未限制退款调用的gasLimit,恶意用户可通过合约参与拍卖并在接收函数中植入高gas消耗逻辑,导致退款流程中断(后经测试者主动解除该逻辑)。

  • 计数逻辑错误:用户出价时记录的totalBids(总拍卖数量)与bidIndex(出价次数)存在偏差(5495 vs 3669),而项目方取款函数错误要求退款进度必须≥totalBids,实际退款进度仅与出价人数挂钩,最终形成永久死锁。

  • 双重缺陷叠加:即使恶意gas消耗问题被解决,计数逻辑与取款条件的不匹配仍会导致资金无法提取。事件暴露了智能合约在gas管理和状态校验上的严重设计缺陷。

总结

NFT项目Akutars 项目拍卖合约由于多个代码缺陷导致 11,539.5 枚 ETH 永久无法取出。慢雾安全团队进行分析了合约后发现:
 1. Akutars 拍卖合约中存在 bid 与 processRefunds 功能,用户分别可以进行拍卖出价与退款操作。  

2. 在拍卖结束后发起 processRefunds 退款操作时拍卖合约将遍历出价用户,并通过低级调用 call 为用户进行退款,但并未限制这一调用的 gasLimit。而未做此 gasLimit 限制的情况下,拍卖合约将使用发起者的全部 gas 进行外部调用。  

3. 但由于 Akutars 拍卖合约并不限制合约参与拍卖,因此“恶意用户”可以使用合约参与拍卖,并在其合约的接收以太函数中写入恶意消耗 gas 的逻辑,使得在进行退款流程时触发此用户合约,进而恶意消耗了调用发起者的全部 gas,直接导致后续退款无法正常进行。  

4. 幸运的是此“恶意用户”仅仅只是做了风险验证测试,最终解除了恶意消耗 gas 的逻辑使得退款可以继续顺利进行。当然用户也可以在拍卖结束的 3 天后进行紧急退款。  

5. 在用户退款完成后项目方可以通过 claimProjectFunds 功能提取合约中的拍卖所得。但拍卖合约在用户进行 bid 时使用 totalBids 与 bidIndex 记录用户所拍的数量与出价次数,而用户是可以在一次出价中任意选择所拍的数量的,因此在拍卖结束 totalBids 实际上大于 bidIndex。当前 totalBids 为 5495,bidIndex 仅为 3669。  

6. 但在 claimProjectFunds 函数中却要求 refundProgress 退款数必须大于等于 totalBids,项目方本意应是为了保证全部用户完成退款后才可进行取款。而实际上 refundProgress 是根据出价人总数进行计算的,也就是全部退款完成 refundProgress 也只是会等于 bidIndex。这就出现了 refundProgress 永远不会大于 totalBids 的情况。最终导致合约中 11,539.5 枚 ETH 永远无法取出。  

综上,即使在用户无法退款问题被解决的情况下,由于出价人数与拍卖数量的计数不一致以及项目方取款函数的缺陷,最终都会导致 Akutars 资金被永久锁住的结果。

分享至:

作者:慢雾科技

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:慢雾科技如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
10小时前
2025-12-12 09:46
2025-12-12 06:00
2025-12-10 13:00
2025-12-10 08:00
2025-12-10 02:46

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读