本文总结了近期DeFi领域发生的多起安全事件,包括El Dorado Exchange的价格预言机操纵漏洞、Jimbos Protocol的滑点控制不足问题、CS Token的闪电贷操纵价格漏洞、Local Traders的权限检查缺失漏洞以及Sell Token的输入验证不当漏洞。这些事件暴露出DeFi系统在面临攻击时的脆弱性,强调了输入验证、权限控制和对抗性环境设计的重要性。
这一系列的漏洞展示了 DeFi 系统在压力下依然是多么的脆弱。Jimbos 损失了 750 万美元,因为它无法处理流动性事件期间的价格扭曲。El Dorado 的 Oracle 合约对操纵完全开放,这是故意的。CS Token 将 token 销毁变成了拉盘机器。Local Traders 缺乏基本的权限检查。Sell Token 向任何要求的人分发奖励。这些不是边缘案例的漏洞;它们是未能验证输入、限制控制以及为对抗性环境设计的失败案例。
5 月 30 日,在 Arbitrum 链上的 El Dorado Exchange (EDE) 发生了一起漏洞利用事件,导致损失 58 万美元。这次攻击的发生是因为价格 Oracle 被操纵。攻击者使用了 EDE 的 Oracle 合约中的 0x147d9322() 函数来操纵 token 价格。攻击者声称自己是白帽,并指责 EDE 有后门来操纵价格并窃取用户资金。EDE 承认了操纵价格的能力,但表示这是为了将攻击者列入黑名单。攻击者归还了资金,并获得了 10% 的赏金。
反编译的攻击合约 (在 Arbitrum 链上): 0xD067e4B0144841bc79153874d385671Ea4c4e4DF
交易哈希: 0x72574fc0f85ed3c6fb78907fc938ce4d407817b1275bbd8b1ddc6de190550bf0
5 月 28 日,在 Arbitrum 链上的 Jimbos 协议漏洞利用导致损失 750 万美元。这次攻击的发生是因为负责通过添加或移除流动性来平衡 $JIMBO 和 WETH 数量的 JimbosController 合约,缺乏在 token 价格扭曲期间防止添加和移除的机制。攻击者使用闪电贷借入 WETH,并将其兑换为 $JIMBO tokens。然后,攻击者将 100 个 $JIMBO tokens 转移到 JimboController 合约,该合约移除了过多的 $JIMBO 流动性,从而提高了其价格。利用虚高的价格,攻击者出售了价格过高的 $JIMBO tokens,并从漏洞中获利。
攻击合约 (在 Arbitrum 链上): 0x271944d9D8CA831F7c0dBCb20C4ee482376d6DE7
交易哈希: 0x44a0f5650a038ab522087c02f734b80e6c748afb207995e757ed67ca037a5eda
5 月 24 日,在 BNB 链上的 CS Token 漏洞利用导致损失 71.4 万美元。攻击者通过销毁 tokens 来操纵 $CS token 的价格,从而减少了 token 供应量。攻击者使用闪电贷从 PancakeSwap 合约中借入价值 8000 万美元的 $BUSD。然后,攻击者使用 CS 合约重复地将 $BUSD 兑换为 $CS tokens。对于每次兑换,CS 合约都会销毁一部分 tokens,从而逐渐减少供应量。这种供应量的减少增加了 $CS tokens 的价值,使攻击者能够从漏洞中获利。
攻击合约 (在 BNB 链上): 0x8BC6Ce23E5e2c4f0A96429E3C9d482d74171215e
交易哈希: 0x906394b2ee093720955a7d55bff1666f6cf6239e46bea8af99d6352b9687baa4
5 月 23 日,在 BNB 链上的 Local Traders Finance 漏洞利用导致损失 11.1 万美元。这次攻击的发生是由于缺少权限检查,这使得攻击者能够成为 Local Traders 合约的所有者。最初,攻击者将自己设置为合约所有者。然后,攻击者触发了私有的 getTokenPrice() 函数,并以人为操纵的低价购买了 $SLC tokens。getTokenPrice() 函数返回了一个较低的 token 价格,因为合约所有者之前操纵了 stor_3 的值。然后,攻击者以市场价出售了 $SLC tokens 并获利。
反编译的攻击合约 (在 BNB 链上): 0x312DC37075646c7e0DBA21DF5BdFe69E76475fdc
交易哈希: 0x49a3038622bf6dc3672b1b7366382a2c513d713e06cb7c91ebb8e256ee300dfb
5 月 13 日,在 BNB 链上的 Sell Token 漏洞利用导致损失 8.7 万美元。这次攻击的发生是由于不正确的输入验证。Sell Token 的 StakingRewards 合约中的 claim() 函数缺少输入参数检查。这个漏洞使攻击者能够利用一个名为 TokenA 的假 token 而不是 USDT 来收集 $SELLC 奖励。为了防止此类攻击,claim() 函数应该包含输入参数验证,以验证 TokenA 是否是授权的 token。随后,攻击者在 PancakeSwap 上将积累的 $SELLC tokens 兑换为 408 WBNB。
攻击合约 (在 BNB 链上): 0xeaF83465025b4Bf9020fdF9ea5fB6e71dC8a0779
交易哈希: 0xfe80df5d689137810df01e83b4bb51409f13c865e37b23059ecc6b3d32347136
Olympix 提供先进的 Solidity 分析工具,以帮助开发人员在漏洞演变成关键漏洞之前识别和修复它们。
立即开始 加固你的智能合约,并在不断发展的 Web3 安全环境中主动保护它们免受漏洞利用。
通过以下方式与我们联系:
Twitter | LinkedIn | Discord | Medium | Instagram | Telegram
- 原文链接: blog.blockmagnates.com/e...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!