零时科技 || JokInTheBox攻击事件分析

  • 事件概述:2024年6月11日,JokInTheBox项目在Ethereum链上遭受攻击,损失约34,292美元。攻击者利用合约解除质押函数的漏洞,重复操作取出用户资产。

  • 攻击过程

    • 攻击者通过Uniswap V2兑换大量JOK代币并质押。
    • 利用合约中unstake函数的漏洞(未验证质押状态),反复解除质押并提取所有用户资产。
  • 漏洞根源:合约的unstake函数未检查stakes[msg.sender][stakeIndex].unstaked状态,导致同一质押可被多次解除。

  • 建议措施:项目方需加强经济模型和代码逻辑验证,合约上线前应通过多审计公司交叉审计以规避类似风险。

总结

零时科技 || JokInTheBox攻击事件分析

背景介绍

2024年6月11日,监测到一次Ethereum链上攻击事件,https://etherscan.io/tx/0xe8277ef6ba8611bd12dc5a6e7ca4b984423bc0b3828159f83b466fdcf4fe054f

被攻击的项目是JokInTheBox,攻击总造成约34292USD的损失。

攻击及事件分析

首先,攻击者在交易https://etherscan.io/tx/0x3b214f07205be5243543c77e7087e1a4974e3ffa0e28daa9e7fda5ed5d3aeb09使用0.2ETH,在Uniswap V2中,兑换了366,060,210JOK,转给了攻击合约0x9d3425d45df30183fda059c586543dcdeb5993e6,随后完成质押。

零时科技 || JokInTheBox攻击事件分析

接着,攻击者开始发起真正的攻击,

零时科技 || JokInTheBox攻击事件分析

根本原因是出在JokInTheBox合约的解除质押函数unstake上,

零时科技 || JokInTheBox攻击事件分析

可以看到,unstake函数在进行解除质押的时候,并没有验证stakes[msg.sender][stakeIndex].unstaked这个值是否为true,即没有验证质押的资产是否已经解除质押并取出。这样就导致攻击者通过反复解除质押而将所有用户质押的资产取出。

总结

本次漏洞成因主要是因为JokInTheBox合约在解除质押的时候没有判断该质押是否已经解除,导致攻击者可以重复unstake,从而将所有用户质押的资产取出。建议项目方在设计经济模型和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。

分享至:

作者:零时科技

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:零时科技如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
8小时前
2025-12-19 12:55
2025-12-19 09:00
2025-12-19 00:00
2025-12-18 14:10
2025-12-18 12:48

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读