OrionProtocol遭重入攻击 290万美元被盗

robot
摘要生成中

OrionProtocol合约漏洞导致290万美元损失

2023年2月2日,以太坊和币安智能链上的OrionProtocol合约遭受重入攻击,造成约290万美元的损失。具体损失包括以太坊链上2,844,766 USDT和币安智能链上191,606 BUSD。

攻击过程分析

攻击者首先部署了一个特制的Token合约,并进行了相关的转移和授权操作。随后,攻击者通过某DEX的swap方法借入资金,并调用OrionProtocol的swapThroughOrionPool方法进行代币兑换。兑换路径包含了攻击者创建的Token合约地址。

在执行swapThroughOrionPool方法时,由于攻击者的Token合约中包含回调功能,使得在转账过程中能够重复调用depositAsset方法。这导致存款金额被重复计算,最终攻击者通过提款操作获取了超额收益。

OrionProtocol 重入攻击分析附PoC

资金流向

攻击者的初始资金来自某交易平台的热钱包。攻击获利的1,651个ETH中,657.5个ETH仍留在攻击者的钱包地址,其余部分已通过混币服务进行转移。

OrionProtocol 重入攻击分析附PoC

漏洞核心

问题出在doSwapThroughOrionPool函数中。该函数在执行_doSwapTokens时,先进行了转账操作,然后才更新curBalance变量。攻击者利用自定义Token的transfer函数回调depositAsset方法,导致curBalance被错误更新。这使得攻击者在偿还闪电贷后,能够通过withdraw函数提取超额资金。

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

安全建议

对于具有代币兑换功能的智能合约,开发者需要考虑以下几点:

  1. 考虑多种Token和兑换路径可能带来的意外情况。
  2. 遵循"检查-生效-交互"(Checks-Effects-Interactions)的编码模式,即先进行状态检查,再更新合约状态,最后与外部合约交互。
  3. 在进行外部调用前更新关键状态变量。
  4. 实施重入锁等安全机制。
  5. 对合约进行全面的安全审计。

通过采取这些措施,可以大大降低智能合约被攻击的风险,提高项目的安全性和稳定性。

TOKEN6.57%
ETH2.49%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 1
  • 分享
评论
0/400
BoredStakervip
· 07-27 03:45
又是重入攻击
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)