Superfluid被黑事件分析
2022年 2 月 8 日,以太坊上的 DeFi 协议 Superfluid 遭遇黑客攻击,损失超 1300 万美元。
SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
攻击者账户地址:0x1574f7f4c9d3aca2ebce918e5d19d18ae853c090
攻击者发起的攻击交易如下:
整个攻击过程分析如下:
交易Hash: 0xefdb283016fd9a7e09471fbc237431df5a4401625a1f3c21321496de65e52303
攻击合约:0x32d47ba0affc9569298d4598f7bf8348ce8da6d4
(1)交易0xf9b4a3a64861e9feb27e21f3fc9c85e6d2851b8a097c71910585e3d7f374d8d8
该交易中并没有Token转账,因此判定该交易并不是攻击中盗取Token的关键交易。
通过其执行过程,发现该交易主要是调用了SuperAgreement合约中createIndex函数生成ctx数据,为后续攻击做准备工作。
(2)交易0x396b6ee91216cf6e7c89f0c6044dfc97e84647f5007a658ca899040471ab4d67
交易中Token转账记录如下: 从上图中发现,攻击者从SuperToken合约中提取了QI、MATIC、WETH、USDC等多种Token。
交易的执行过程中,多次调用callAgreement函数。
其中,通过代理合约UUPSProxy调用Superfluid合约中的callAgreement函数,如下:
其中构造的ctx如下:
调用_callExternalWithReplacedCtx函数:
在该过程中,调用了_replacePlaceholderCtx函数,合约如下:
执行的参数与返回值如下:
该函数将callData与ctx打包成了一个新的对象dataWthCtx,作为新的callData通过call函数执行合约SuperAgreement(0xB0aABBA4B2783A72C52956CDEF62d438ecA2d7a1)中签名值为0x232d2b58的函数,
即updateSubscription函数:
在调用updateSubscription函数,参数为dataWthCtx。该参数由用户自定义的callData以及函数生成的ctx打包而成,其中ctx应该作为updateSubscription函数中的最后一个参数bytes calldata ctx。但由于callData是用户自定义的,并没有对其格式进行校验,攻击者传递的callData参数中打包了自定义的ctx,因此通过call函数调用updateSubscription函数时,ABI 解码器仅会处理位于前面的数据而忽略掉后面的数据,即传递的参数ctx是攻击者自定义的,而不是callAggreement函数构造的ctx。
从整个攻击过程来看,Superfluid合约存在严重的逻辑漏洞,callAgreement函数缺少对参数的校验,使得攻击者将合约构造的ctx数据替换为自定义ctx数据,这给攻击者发起攻击提供了机会。
(3)交易0xdee86cae2e1bab16496a49b2ec61aae0472a7ccf06f79744d42473e96edd6af6
该交易将攻击合约中获得的多种Token(包括MATIC,QI,WETH,USDC,SDT,MOCA,STACK,sdam3CRV)转账到攻击者的账户地址。
比如,交易0x9fdbcaefcd2bae1d873720ae8dfb741986818bfc1b5cf8af0a891b99b7bd14b1 交易中,攻击者将部分MATIC,WBTC以及USDC兑换成了WETH。
攻击者账户在Polygon上面部署攻击合约以及发起攻击所需要的MATIC来自于Ethereum,
跨链交易0xbddcc89e7ce7d7e18693898f38fedf2ccd358ba81c8827dba403563436b4c43d:
而Ethereum上面的ETH来自于Tornado混币平台。
混币交易0x8aa300ef83d2e18181328656871bf6854279d5f73fb9c43fc8074edf21913759:
总结:本次攻击的根本原因在于,Superfluid合约存在严重的逻辑漏洞,callAgreement函数缺少对参数的校验,使得攻击者将合约构造的ctx数据替换为自定义ctx数据,这给攻击者发起攻击提供了机会。
SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。
Twitter:https://twitter.com/sharkteamorg
Telegram:https://t.me/sharkteamorg
更多区块链安全资讯与行业分析,点击下方链接查看 D查查|链上风险核查
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!