SharkTeam:Platypus Finance 攻击事件原理分析
SharkTeam
2023-10-20 17:29
订阅此专栏
收藏此文章

北京时间 2023 年 10 月 12 日,Platypus Finance 遭受闪电贷攻击,获利约 223 万美元,目前追回 57.5 万美元。

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

一、事件分析

攻击者地址:

0x464073F659591507d9255B833D163ef1Af5ccc2C

0x0cD4fD0EECD2c5Ad24DE7f17Ae35f9db6aC51Ee7

攻击合约:

0x4cfb527f51b391ecb1a5197edc7a38160c261b6f

0x86d6337c5b970705ab49d07c12b850a748603233

0xF2c444572A402ec83B7Cb64E4A9Fc2188F0628F2

被攻击合约:

0xC73eeD4494382093C6a7C284426A9a00f6C79939

0xA2A7EE49750Ff12bb60b407da2531dB3c50A1789

攻击交易:

0xab5f6242fb073af1bb3cd6e891bc93d247e748a69e599a3744ff070447acb20f

攻击流程:

1. 攻击者(0x0cD4fD0E)通过闪电贷借取 1100000 枚 WAVAX 和 991000sAVAX。

2. 随后将 1.1m WAVAX 存入被攻击合约(0xC73eeD44)并收到 1.1m LP-AVAX,将 330k sAVAX 存入 被攻击合约(0xA2A7EE49)并收到 330k LP-sAVAX。

3. 攻击者(0x0cD4fD0E)将剩下的 600k SAVAX 兑换为 661k WAVAX

4. 随后从被攻击合约(0xC73eeD44)中提取出 801k WAVAX,

5. 攻击者(0x0cD4fD0E)调用 swap 函数用 1.4m 的 WAVAX 兑换了 1.39m sAVAX

6. 攻击者(0x0cD4fD0E)调用 withdraw 函数提取出剩余的 80k WAVAX.

7. 然后调用 swap 函数将剩下的 700k sAVAX 兑换为了 991k 的 WAVAX

8. 随后提取出被攻击合约(0xA2A7EE49)中剩余的 330k sAVAX

9. 攻击者(0x0cD4fD0E)继续调用 swap 函数将 70k sAVAX 兑换为 76k WAVAX

10. 最后攻击者(0x0cD4fD0E)偿还闪电贷后仍剩下 111k WAVAX 和 20k 的 sAVAX,获利离场。

二、漏洞分析

被攻击合约通过 cash 和 liability 两个状态变量进行价格的计算。

攻击者(0x0cD4fD0E)在第三步中使用 sAVAX 兑换了 WAVAX,使的合约中的 cash 数量减少

随后又调用了 withdraw 函数,这时合约减少的 cash 数量和 liability 数量本应一致,但由于上一步中的 swap 函数减少了大量的 cash,合约中没有足够的 cash 用来减少,所以导致 cash 归零。

cash 归零导致 WAVAX 和 sAVAX 的比例接近,使 WAVAX 的价格升高,攻击者利用升高的价格得到了更多的 sAVAX。

攻击的根本原因是利用闪电贷操纵了影响价格的 cash 和 liability,使得 WAVAX 和 sAVAX 的价格发生了变化,攻击者实现套利。


三、安全建议

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:

(1)在开发币价相关逻辑时时,严格校验是否存在价格操纵问题。

(2)推荐使用时间加权算法(twap)来进行价格的计算。

(3)项目上线前,需要通过第三方专业的审计团队进行智能合约审计。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

SharkTeam
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开