事件背景
零时科技区块链安全情报平台监控到消息,北京时间2023年2月2日,polygon链上去中心化借贷协议BONQ受到黑客攻击,攻击者获得了1.13亿个WALTB和9865万个BEUR,攻击者地址为0xcAcf2D28B2A5309e099f0C6e8C60Ec3dDf656642,攻击者将部分BEUR售出获得USDC通过跨链转移至ETH链。零时科技安全团队及时对此安全事件进行分析。
漏洞及核心
TellorFlex中可通过调用submitValue函数进行更改代币价格,当用户质押的TRB代币大于stakeAmount时可获得修改代币价格权限。
stakeAmount初始值在构造函数中传入,后续可通过调用updateStakeAmount修改,从链上信息可知,updateStakeAmount函数未被调用,因此攻击者可通过质押初始值获得修改代币价格,从攻击交易中可得值为10TRB。
攻击者调用BONQ合约中的createTrove函数创建trove合约,trove合约中抵押价格计算方法是预言机中抵押品Token价格除以借款数量。
此合约中使用的预言机为TellorFlex合约,此前攻击者已经将ALBT代币价格修改到相当高,因此攻击者可以使用较小的WALBT借出大量BEUR。
从攻击交易中可以看出,攻击者使用0.1WALBT借出1亿个BEUR.
资金来源及流向
-
资金来源
此地址初始资金在ETH链上由Tornado.Cash混币平台转入
-
资金流向
1. 攻击者将部分BEUR兑换为 534,535 USDC,通过跨链转移至ETH链,之后兑换为DAI,目前资金暂无进一步移动
2. 攻击者目前共抛售1600万ALBT,获得约785ETH,目前资金仍存在ETH链上攻击者地址中。
总结及建议
本次攻击由于TellorFlex预言机报价修改时所需要的抵押物价值较小,且BONQ借贷合约中抵押物借贷数量只与TellorFlex预言机价格有关,因此攻击者可以使用较低的成本修改预言机报价后进行抵押借贷获得相当可观的利润。
♦安全建议
-
建议项目方增加多种喂价机制,避免预言机受到控制时由于单一喂价遭受损失。
-
建议项目方上线前进行多次审计,避免出现审计步骤缺失
往期内容回顾
原文始发于微信公众号(零时科技):零时科技 || BONQ攻击事件分析