YYDS攻击事件简单分析

2022-09-19

分析

攻击者地址:0xed850799cf22b66cb4911539425f8a41423d0933

攻击合约:0x586770e9643be4bda002f78bfd205546a6f492b3

被攻击合约:0x970A76aEa6a0D531096b566340C0de9B027dd39D

攻击hash:https://bscscan.com/tx/0x04a1f0d1694242515ecb14faa71053901f11a1286cd21c27fe5542f9eeb62356

漏洞成因

使用tenderly解析攻击hash 发现攻击合约主要是在调用这几个函数

image-20220919171328338

分析相关代码发现,这几个函数在计算奖励数量时,都调用了getPriceOfUSDT(),而getPriceOfUSDT() 只是简单的通过计算pair 中两个代币余额相除获取价格

image-20220919171834361

这很容易被操控,因此攻击者先通过闪电贷 贷走了pair 里的usdt 此时price变成一个非常小的值,yydsAmount 除以一个非常小的值就会变得很大,攻击者通过调用这三个方法获得了较多的yyds代币,最后归还闪电贷(通过计算还了u和yyds 代币)获利70w$离场。

参考链接

https://dashboard.tenderly.co/tx/bsc/0x04a1f0d1694242515ecb14faa71053901f11a1286cd21c27fe5542f9eeb62356

https://tools.blocksec.com/tx/bsc/0x04a1f0d1694242515ecb14faa71053901f11a1286cd21c27fe5542f9eeb62356

https://github.com/SunWeb3Sec/DeFiHackLabs/blob/main/src/test/Yyds_exp.sol