{"content":{"title":"UPStkn事件 漏洞分析","body":"# 1.\t漏洞简介\r\nhttps://twitter.com/BlockSecTeam/status/1615521051487932418\r\n\r\n![1.png](https://img.learnblockchain.cn/attachments/2023/01/5QbhywHj63c7d4701dbd5.png)\r\n# 2.\t相关地址或交易\r\n攻击交易：Ethereum 0xd099a41830b964e93415e9a8607cd92567e40d3eeb491d52f3b66eee6b0357eb\r\n攻击合约：0x22898dc59145eae79471dd1f06b7e542e0982d30\r\n攻击账号：0x8a2d94ea342cbdd6d57db614b24f20cae286cac6\r\n被攻击合约：UPStkn  0x88eBFd7841D131BCeab3e7149217aa8e36985a40\r\n# 3.\t获利分析\r\n\r\n![2.png](https://img.learnblockchain.cn/attachments/2023/01/59E9JrPZ63c7d49c160e0.png)\r\n# 4.\t攻击过程&漏洞原因\r\n本次攻击事件的根本原因是UPStkn在tansfer时，若recipient == UNIv2 ，将会销毁池子中的部分代币，造成价格失衡：\r\n\r\n![3.png](https://img.learnblockchain.cn/attachments/2023/01/MhSxZKlb63c7d4b880554.png)\r\n\r\n![4.png](https://img.learnblockchain.cn/attachments/2023/01/lOj3Ibbh63c7d4be2425b.png)\r\n若想尽可能的造成价格失衡，则必须增加uint256 amount = myPressure(_address); 的数量。所以攻击者会通过不断的swap来实现增加sellPressure[sender] 的值。\r\n等到完成多次swap后，攻击者再次swap，但是参数amount的数量为0，这将销毁池子中的UPStkn数量，共计573300392063377615199234单位。销毁池子中的代币后调用池子的sync函数，此时池子价格已失衡。\r\n\r\n![5.png](https://img.learnblockchain.cn/attachments/2023/01/aVADkkYA63c7d4cf16083.png)\r\n攻击者获利，归还闪电贷，离场。"},"author":{"user":"https://learnblockchain.cn/people/10579","address":null},"history":null,"timestamp":1674040561,"version":1}