BlockSec团队近日发现某数字藏品合约存在两个严重漏洞。这两个漏洞可能导致用户资产被锁定以及项目方无法提取超过3400万美元的资金。
第一个漏洞涉及退款功能。合约中的退款函数使用循环为所有用户进行退款,但如果其中某个用户是恶意合约,可能会拒绝接收退款并导致整个交易失败。这将阻止所有用户获得退款。幸运的是,这个漏洞并未被利用。
对于有退款需求的项目,建议采取以下安全措施:
1. 限制参与者仅为外部拥有账户(EOA)
2. 使用ERC20代币如WETH,而非原生资产
3. 设计用户主动申领退款的机制,避免批量退款
第二个漏洞是一个代码错误。在提取项目资金的函数中,存在一个条件判断错误。该