一、前言
北京时间 2022 年 3 月 21 日,知道创宇区块链安全实验室 监测到 BSC 链和以太坊上的 UmbNetwork 奖励池遭到黑客攻击,损失约 70 万美元。实验室第一时间对本次事件进行跟踪并分析。
二、基础信息
攻击者地址:0x1751e3e1aaf1a3e7b973c889b7531f43fc59f7d0
攻击合约:0x89767960b76b009416bc7ff4a4b79051eed0a9ee
StakingRewards 合约: 0xB3FB1D01B07A706736Ca175f827e4F56021b85dE
以太坊交易哈希:0x33479bcfbc792aa0f8103ab0d7a3784788b5b0e1467c81ffbed1b7682660b4fa
BSC 交易哈希:0x784b68dc7d06ee181f3127d5eb5331850b5e690cc63dd099cd7b8dc863204bf6
三、漏洞分析
此次事件,漏洞关键在于 UmbNetwork 奖励池的 StakingRewards 合约中的 _balance 函数出现溢出漏洞,合约未校验检查 balance 的值,攻击者通过 amount 发起下溢攻击,抽空了池子中的代币。
从合约代码我们可以看出,合约未正确使用 SafeMath 安全库且未作溢出检查,导致此次攻击发生。
四、攻击流程
攻击者从 BSC 链发起攻击获取 156 枚 pancake-LP 代币:
攻击者在以太坊上发起攻击获取 8792 枚 UNI-V2 代币:
随后攻击者分别将代币转分别换成 ETH、UMB 和 BNB ,获利约 70 万美元。
五、分析
本次攻击事件核心是由于合约未正确使用 SafeMath 库并且未对合约进行溢出检查导致合约出现溢出漏洞,而导致了此次事件的发生,建议项目方多加注意检查合约是否正确使用各类安全库。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。