DEUS 被攻击事件分析:稳定币 DEI 合约存在 burn 逻辑漏洞
Sender
Deus
DEI
DEUS 稳定币 DEI 合约存在 burn 逻辑漏洞,攻击者已获利约 630 万美元。
撰文:SharkTeam
北京时间 2023 年 5 月 6 日,DEUS 的稳定币 DEI 合约存在 burn 逻辑漏洞,攻击者已获利约 630 万美元。
SharkTeam 对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
一、事件分析
攻击者地址:0x08e80ecb146dc0b835cf3d6c48da97556998f599
攻击合约:0x2b1a7a457a2c55ba1e03c087cc3e4e5b05b6360f
漏洞合约:0xDE1E704dae0B4051e80DAbB26ab6ad6c12262DA0
攻击交易:0xde2c8718a9efd8db0eaf9d8141089a22a89bca7d1415d04c05ba107dc1a190c3
该攻击交易的执行流程:
1、首先,攻击者(0x08e80ecb)先调用了攻击合约(0x2b1a7a45)的攻击函数。
2、在攻击函数中,调用漏洞合约(0xDE1E704d)的 approve->burnFrom->transferFrom 函数
3、在 transferFrom 函数中将 110 万个 DEI 转移到自己的账户,最后调用交易对的 swap 将 DEI 换成 USD 转移到攻击者(0x08e80ecb)。
漏洞分析:
在 burnFrom 函数中,直接将 sender 对 account 的 allowance 与 account 对 sender 的 allowance 进行了复制。
攻击者首先对漏洞合约(0xDE1E704d)进行最大值的 approve,然后调用 burnFrom 函数输入 amount=0,即直接让漏洞合约(0xDE1E704d)对攻击合约进行了 approve 的最大值。
随后直接调用 tranferFrom 函数将 110 万的 DEI 转移到自己的地址,最后通过 pair 交易对换成 USD 完成攻击
漏洞总结:
本次事件根本原因是漏洞合约(RouteProcessor2)burnFrom 的调用权限问题或者是_allowance 传参错误问题,具体需要结合项目方实际业务需求进行修改,可以通过对 burnFrom 设置合适的管理员权限或者将_allowance[_msgSender()][account] 改成 _allowance[account][_msgSender()]等方法进行修复。
二、安全建议
针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
1、在开发资产相关的逻辑函数时,应慎重考虑业务逻辑的严谨性。
2、本次产生漏洞的 burnFrom 函数是项目方在 4 月 16 日进行合约升级时引入的,所以项目在上线或升级合约前,需要通过第三方专业审计团队的合约审计。
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表Bi123的观点或立场