5

SharkTeam独家分析 | 参数校验不严谨:Superfluid被黑事件分析

 2 years ago
source link: https://www.tuoniaox.com/news/p-533223.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

SharkTeam独家分析 | 参数校验不严谨:Superfluid被黑事件分析

SharkTeam 2022-02-11 19:56
article_qmarks.svg 摘要:

参数校验不严谨:Superfluid被黑事件分析

2022 年 2 月 8 日,以太坊上的 DeFi 协议 Superfluid 遭遇黑客攻击,损失超 1300 万美元。 

image.png

SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、事件分析

攻击者账户地址:0x1574f7f4c9d3aca2ebce918e5d19d18ae853c090

攻击者发起的攻击交易如下:

image.png

整个攻击过程分析如下:

1. 创建攻击合约。

交易Hash: 0xefdb283016fd9a7e09471fbc237431df5a4401625a1f3c21321496de65e52303

攻击合约:0x32d47ba0affc9569298d4598f7bf8348ce8da6d4

image.png

2. 发起攻击。

(1)交易0xf9b4a3a64861e9feb27e21f3fc9c85e6d2851b8a097c71910585e3d7f374d8d8

image.png

该交易中并没有Token转账,因此判定该交易并不是攻击中盗取Token的关键交易。

image.png

通过其执行过程,发现该交易主要是调用了SuperAgreement合约中createIndex函数生成ctx数据,为后续攻击做准备工作。

image.png

(2)交易0x396b6ee91216cf6e7c89f0c6044dfc97e84647f5007a658ca899040471ab4d67

交易中Token转账记录如下:

image.png

从上图中发现,攻击者从SuperToken合约中提取了QI、MATIC、WETH、USDC等多种Token。

交易的执行过程中,多次调用callAgreement函数。

image.png

image.png

其中,通过代理合约UUPSProxy调用Superfluid合约中的callAgreement函数,如下:

image.png

image.png

其中构造的ctx如下:

image.png

调用_callExternalWithReplacedCtx函数:

image.png

在该过程中,调用了_replacePlaceholderCtx函数,合约如下:

image.png

执行的参数与返回值如下:

image.png

image.png

该函数将callData与ctx打包成了一个新的对象dataWthCtx,作为新的callData通过call函数执行合约SuperAgreement(0xB0aABBA4B2783A72C52956CDEF62d438ecA2d7a1)中签名值为0x232d2b58的函数,

image.png

即updateSubscription函数:

image.png

在调用updateSubscription函数,参数为dataWthCtx。该参数由用户自定义的callData以及函数生成的ctx打包而成,其中ctx应该作为updateSubscription函数中的最后一个参数bytes calldata ctx。但由于callData是用户自定义的,并没有对其格式进行校验,攻击者传递的callData参数中打包了自定义的ctx,因此通过call函数调用updateSubscription函数时,ABI 解码器仅会处理位于前面的数据而忽略掉后面的数据,即传递的参数ctx是攻击者自定义的,而不是callAggreement函数构造的ctx。

image.png

image.png

从整个攻击过程来看,Superfluid合约存在严重的逻辑漏洞,callAgreement函数缺少对参数的校验,使得攻击者将合约构造的ctx数据替换为自定义ctx数据,这给攻击者发起攻击提供了机会。

(3)交易0xdee86cae2e1bab16496a49b2ec61aae0472a7ccf06f79744d42473e96edd6af6

image.png

该交易将攻击合约中获得的多种Token(包括MATIC,QI,WETH,USDC,SDT,MOCA,STACK,sdam3CRV)转账到攻击者的账户地址。

3. Token兑换

image.png

比如,交易0x9fdbcaefcd2bae1d873720ae8dfb741986818bfc1b5cf8af0a891b99b7bd14b1

image.png

交易中,攻击者将部分MATIC,WBTC以及USDC兑换成了WETH。

4. 攻击启动资金来源分析

攻击者账户在Polygon上面部署攻击合约以及发起攻击所需要的MATIC来自于Ethereum,

image.png

跨链交易0xbddcc89e7ce7d7e18693898f38fedf2ccd358ba81c8827dba403563436b4c43d:

image.png

而Ethereum上面的ETH来自于Tornado混币平台。

混币交易0x8aa300ef83d2e18181328656871bf6854279d5f73fb9c43fc8074edf21913759:

image.png

总结:本次攻击的根本原因在于,Superfluid合约存在严重的逻辑漏洞,callAgreement函数缺少对参数的校验,使得攻击者将合约构造的ctx数据替换为自定义ctx数据,这给攻击者发起攻击提供了机会。

二、安全建议

SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。

SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。

image.png

欢迎加入鸵鸟区块链Telegram社群

中文社区 https://t.me/tuoniaox

英文社区 https://t.me/tuoniaoGroup

声明: 鸵鸟区块链所有发布内容均为原创或授权发布,如需转载,请务必注明文章作者以及来源:鸵鸟区块链(微信公众号:MyTuoniao),任何不尊重原创的行为鸵鸟区块链都将进行责任追究!鸵鸟区块链报道和发布内容,不构成任何投资建议。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK