{"author":{"address":"0xbD0b3505cc45d97DdB3e7FAa75ED0Fc41c61A354","user":"https://learnblockchain.cn/people/52"},"content":{"body":"![顶部banner2.jpg](https://img.learnblockchain.cn/attachments/2024/06/O1GIZaSo667bc615caaf4.jpg)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n# **背景介绍**\r\n\r\n2024年6月11日，监测到一次Ethereum链上攻击事件，**https\\://etherscan.io/tx/0xe8277ef6ba8611bd12dc5a6e7ca4b984423bc0b3828159f83b466fdcf4fe054f**\r\n\r\n被攻击的项目是**JokInTheBox**，攻击总造成约**34292USD**的损失。 \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n\r\n# **攻击及事件分析**\r\n首先，攻击者在交易https\\://etherscan.io/tx/0x3b214f07205be5243543c77e7087e1a4974e3ffa0e28daa9e7fda5ed5d3aeb09使用0.2ETH，在Uniswap V2中，兑换了366,060,210JOK，转给了攻击合约**0x9d3425d45df30183fda059c586543dcdeb5993e6**，随后完成质押。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n![1.png](https://img.learnblockchain.cn/attachments/2024/06/zcfgfWLU667bc68649b57.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n接着，攻击者开始发起真正的攻击，\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![2.png](https://img.learnblockchain.cn/attachments/2024/06/eC6w1cyY667bc695a87c6.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n根本原因是出在JokInTheBox合约的解除质押函数unstake上，\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![3.png](https://img.learnblockchain.cn/attachments/2024/06/BHmeHcvR667bc6b151ae5.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n可以看到，unstake函数在进行解除质押的时候，并没有验证stakes\\[msg.sender]\\[stakeIndex].unstaked这个值是否为true，即没有验证质押的资产是否已经解除质押并取出。这样就导致攻击者通过反复解除质押而将所有用户质押的资产取出。\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n# **总结**\r\n\u003c!--StartFragment--\u003e\r\n\r\n本次漏洞成因主要是因为JokInTheBox合约在解除质押的时候没有判断该质押是否已经解除，导致攻击者可以重复unstake，从而将所有用户质押的资产取出。建议项目方在设计经济模型和代码运行逻辑时要多方验证，合约上线前审计时尽量选择多个审计公司交叉审计。\r\n\r\n\u003c!--EndFragment--\u003e","title":"零时科技 || JokInTheBox攻击事件分析"},"history":null,"timestamp":1719387908,"version":1}