建议协议在采用喂价来源时对预言机做好考察和研究,考虑与项目的兼容性与安全性。

作者:九九

据慢雾安全团队情报,2023 年 2 月 2 日,Polygon 链上的 BonqDAO 项目遭到攻击,攻击者获利 1.13 亿枚 WALBT 和 9865 万枚 BEUR 代币。慢雾安全团队第一时间介入分析,并将结果分享如下:

相关信息

BonqDAO 是一个非托管、去中心化的借贷平台,用户可以为协议提供流动性或超额抵押借贷赚取收益。

以下是本次攻击涉及的相关地址:

攻击者 EOA 地址:

https://polygonscan.com/address/0xcAcf2D28B2A5309e099f0C6e8C60Ec3dDf656642

攻击合约地址:

https://polygonscan.com/address/0xED596991ac5F1Aa1858Da66c67f7CFA76e54B5f1

https://polygonscan.com/address/0xb5c0bA8ED0F4Fb9a31Fccf84B9fB3Da639a1eDe5

攻击交易:

https://polygonscan.com/tx/0xa02d0c3d16d6ee0e0b6a42c3cc91997c2b40c87d777136dedebe8ee0f47f32b1

https://polygonscan.com/tx/0x31957ecc43774d19f54d9968e95c69c882468b46860f921668f2c55fadd51b19

被攻击的预言机合约地址:

https://polygonscan.com/address/0x8f55D884CAD66B79e1a131f6bCB0e66f4fD84d5B

攻击核心点

BonqDAO 平台采用的预言机来源是 TellorFlex 自喂价与 Chainlink 价格的比值,TellorFlex 价格更新的一个主要限制是需要价格报告者先抵押 10 个 TRB 代币才可以进行价格提交更新。而在 TellorFlex 中可以通过 updateStakeAmount 函数根据抵押物的价格进行周期性的更新价格报告者所需抵押的 TRB 数量。但由于 updateStakeAmount 函数一直没有被调用过,导致攻击者可以用极低的成本恶意修改代币价格。

具体细节分析

1、攻击者首先抵押了 10 个 TRB 后成为了价格报告者,之后通过调用 submitValue 函数修改预言机中 WALBT 代币的价格。

2、攻击者对价格进行修改后调用了 Bonq 合约的 createTrove 函数为攻击合约创建了 trove (0x4248FD),该 trove 合约的功能主要是记录用户抵押物状态、负债状态、从市场上借款、清算等。

3、紧跟着攻击者在协议里进行抵押操作,接着调用 borrow 函数进行借款,由于 WALBT 代币的价格被修改而拉高,导致协议给攻击者铸造了大量 BEUR 代币。

4、在另一笔攻击交易中,攻击者上述同样的手法修改了 WALBT 的价格,然后清算了市场上其他存在负债的用户以此获得大量的 WALBT 代币。

5、根据慢雾 MistTrack 分析,1.13 亿 WALBT 已在 Polygon 链 burn 并从 ETH 链提款 ALBT,后部分 ALBT 通过 0x 兑换为 ETH;部分 BEUR 已被攻击者通过 Uniswap 兑换为 USDC 后通过 Multichain 跨链到 ETH 链并兑换为 DAI。截止目前,黑客在 ETH 上的地址仍有近 565 万美元的资产,包含 ALBT、ETH、DAI 币种。MistTrack 将持续监控黑客异动并跟进拉黑。

总结

本次攻击事件是由于修改预言机报价所需抵押物的成本远低于攻击获得利润造成攻击者恶意提交错误的价格操控市场并清算其他用户。慢雾安全团队建议协议在采用喂价来源时应对预言机的各种功能机制做好考察和研究,考虑与项目的兼容性与安全性。

值得一提的是,Liquity 在几个月前也收到了相同漏洞的反馈,Liquity 将 Tellor 作为后备预言机来使用,当主预言机(Chainlink)发生故障或冻结,Liquity 才会切换到后备预言机 Tellor 的价格数据作喂价。具体可参考以下链接:

https://www.liquity.org/blog/tellor-issue-and-fix。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。