我们发现 @AkuDreams 合约存在两个严重的逻辑漏洞(https://etherscan.io/address/0xf42c318dbfbaab0eee040279c6a2588fa01a961d)。第一个漏洞可能导致拒绝服务攻击,第二个漏洞将导致项目资金(超过 3400 万美元)被永远锁定。
漏洞一

第一个漏洞存在于 processRefunds 函数中。该函数有一个循环,用于退还每个出价用户的资金。然而,出价者可能是一个恶意合约,它会导致交易回滚。这可能导致 processRefunds 函数的调用回滚,并且用户的所有退款都无法成功。幸运的是,该漏洞尚未被利用。
我们建议合约可以采取以下措施来退还用户资金:
- 确保只有 EOA(外部所有者账户)才能出价
- 使用 ERC20 代币(例如 WETH)而不是 ETH
- 提供一个允许用户自行退款的函数
漏洞二

第二个漏洞是一个软件 bug。在 claimProjectFunds 函数中,项目所有者可以领取合约中的 Ether。然而,require(refundProgress >= totalBids, "Refunds not yet processed"); 这个 require 语句有一个 bug,它应该比较 refundProgress 和 _bidIndex,而不是 totalBids。由于这个漏洞,该条件将永远无法满足,合约中的 Ether(11,539.5 Ether)将被永远锁定。
总结
令我们惊讶的是(继昨天的 NBA NFT 事件之后),一个备受瞩目的项目竟然会忽略基本的软件安全实践。至少,项目应该编写足够的测试用例。不幸的是,我们怀疑项目方过于忙碌而无法编写测试用例,导致永远损失 3400 美元。
关于 BlockSec
BlockSec 是一家开创性的区块链安全公司,由一群全球知名的安全专家于 2021 年创立。公司致力于提升新兴 Web3 世界的安全性和可用性,以促进其大规模采用。为此,BlockSec 提供智能合约和 EVM 链安全审计服务,用于主动开发和阻止威胁的 Phalcon 平台,用于资金追踪和调查的 MetaSleuth 平台,以及用于 Web3 构建者在加密世界高效冲浪的 MetaDock 扩展。
迄今为止,公司已为 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap 等 300 多家知名客户提供服务,并从 Matrix Partners、Vitalbridge Capital 和 Fenbushi Capital 等杰出投资者那里获得了两轮数千万美元的融资。
官方 Twitter 账号:https://twitter.com/BlockSecTeam



