慢雾:BonqDAO 黑客攻击事件简析_ALBT:VIT

针对今早BonqDAO项目遭黑客攻击事件,慢雾安全团队分析:

1.BonqDAO平台采用的预言机来源是TellorFlex自喂价与Chainlink价格的比值,TellorFlex价格更新的一个主要限制是需要价格报告者先抵押10个TRB才可以进行价格提交更新。而在TellorFlex中可以通过updateStakeAmount函数根据抵押物的价格进行周期性的更新价格报告者所需抵押的TRB数量。

慢雾:DOD合约中的BUSD代币被非预期取出,主要是DOD低价情况下与合约锁定的BUSD将产生套利空间:据慢雾区情报,2022 年 3 月 10 日, BSC 链上的 DOD 项目中锁定的 BUSD 代币被非预期的取出。慢雾安全团队进行分析原因如下:

1. DOD 项目使用了一种特定的锁仓机制,当 DOD 合约中 BUSD 数量大于 99,999,000 或 DOD 销毁数量超过 99,999,000,000,000 或 DOD 总供应量低于 1,000,000,000 时将触发 DOD 合约解锁,若不满足以上条件,DOD 合约也将在五年后自动解锁。DOD 合约解锁后的情况下,用户向 DOD 合约中转入指定数量的 DOD 代币后将获取该数量 1/10 的 BUSD 代币,即转入的 DOD 代币数量越多获得的 BUSD 也越多。

2. 但由于 DOD 代币价格较低,恶意用户使用了 2.8 个 BNB 即兑换出 99,990,000 个 DOD。

3. 随后从各个池子中闪电贷借出大量的 BUSD 转入 DOD 合约中,以满足合约中 BUSD 数量大于 99,999,000 的解锁条件。

4. 之后只需要调用 DOD 合约中的 swap 函数,将持有的 DOD 代币转入 DOD 合约中,既可取出 1/10 转入数量的 BUSD 代币。

5. 因此 DOD 合约中的 BUSD 代币被非预期的取出。

本次 DOD 合约中的 BUSD 代币被非预期取出的主要原因在于项目方并未考虑到 DOD 低价情况下与合约中锁定的 BUSD 将产生套利空间。慢雾安全团队建议在进行经济模型设计时应充分考虑各方面因素带来的影响。[2022/3/10 13:48:45]

2.由于TellorFlex预言机合约的TRB抵押数额一开始就被设置成10个,且之后没有通过updateStakeAmount函数进行更新,导致攻击者只需要抵押10个TRB后就能成为价格报告者并通过调用submitValue函数修改预言机中WALBT代币的价格

慢雾:跨链互操作协议Poly Network遭受攻击并非由于网传的keeper私钥泄漏:对于跨链互操作协议Poly Network遭受攻击事件,慢雾安全团队分析指出:本次攻击主要在于EthCrossChainData合约的keeper可由EthCrossChainManager合约进行修改,而EthCrossChainManager合约的verifyHeaderAndExecuteTx函数又可以通过_executeCrossChainTx函数执行用户传入的数据。因此攻击者通过此函数传入精心构造的数据修改了EthCrossChainData合约的keeper为攻击者指定的地址,并非网传的是由于keeper私钥泄漏导致这一事件的发生。[2021/8/11 1:47:48]

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

慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。

1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;

2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;

3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;

4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;

5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;

6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;

7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;

8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;

9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;

10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;

11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]

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

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

6.根据慢雾MistTrack分析,1.13亿WALBT已在Polygon链burn并从ETH链提款ALBT,后部分ALBT通过0x兑换为ETH;部分BEUR已被攻击者通过Uniswap兑换为USDC后通过Multichain跨链到ETH链并兑换为DAI。

慢雾安全团队分析认为,此次攻击的根本原因在于攻击者利用预言机报价所需抵押物的成本远低于攻击获得利润从而通过恶意提交错误的价格操控市场并清算其他用户。截止目前,94.6万ALBT已被兑换为695ETH,55.8万BEUR已被兑换为53.4万DAI。黑客仍在持续兑换ALBT为ETH,暂未发现资金转移到交易所等平台,MistTrack将持续监控黑客异动并跟进拉黑。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-3:318ms