又现套利攻击:Goldfinch项目的SeniorPool合约遭受攻击事件分析
又现套利攻击!—Goldfinch项目的SeniorPool合约遭受攻击事件分析
2022-06-28 16:55:30
2022年6月28日, 成都链安链必应-区块链安全态势感知平台 舆情监测显示,Goldfinch项目的SeniorPool合约遭受攻击,攻击者累计获利金额为28,523个 USDC ,项目方累计损失541,158个USDC。成都链安安全团队对此事件进行了分析,现与大家分享。
#攻击过程
攻击交易地址:
0xd56d801e07df9d8457973c3938f5d3e6343ec1ed11f4ebb76bc3f5cc73001707
攻击者地址:
0x86c595d81c8ab46d893065c3c674da72555fe7c0
攻击者合约:
0x541143d5eb30563a478eea23866e203b7c38c1ca
本次攻击存在多笔,我们选取了具体的一笔攻击交易进行分析:
1. 第一步:攻击者通过 Uniswap V3的 DAI -USDC池子闪电贷借出110,000个USDC代币。
2. 第二步攻击者再把110,000个USDC代币从Curve的FIDU-USDC池子兑换出106,667个FIDU代币。
3. 第三步攻击者利用SeniorPool合约的withdrawInFidu函数,把106,667个FIDU代币兑换成113,853个USDC,然后归还闪电贷110,011个USDC,剩余本次攻击获利的3,842个USDC。
漏洞原因为:攻击者可以利用Curve的FIDU-USDC池子获取FIDU代币,来获取SeniorPool合约抵押USDC代币的红利。
目前Curve中FIDU兑换USDC为1:1.03, 而在SeniorPool中的比例为1:1.07,这就产生了套利空间。
图 1 Curve中FIDU兑换USDC的比例
图 2 SeniorPool合约中FIDU兑换USDC的比例
下面是具体的代码实现:
攻击者利用withdrawInFidu函数销毁FIDU代币换取USDC。而可获取USDC的数量是通过_getUSDCAmountFromShares函数中的sharePrice去计算的。这里的sharePrice会随着分红的增加而增加,攻击者就可以利用Curve的FIDU-USDC池子获取FIDU代币,从而获取SeniorPool合约抵押FIDU代币的红利。
总结
针对本次事件,成都链安安全团队建议:
项目方使用新的代币代替FIDU代币为凭据代币,并确保其他途径无法获取该凭据代币。 此外建议项目上线前选择专业的安全审计公司进行全面的安全审计,规避安全风险。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum