OrionProtocol遭重入攻击 近300万美元资产被盗

robot
摘要生成中

OrionProtocol遭受重入攻击导致近300万美元损失

2023年2月2日,Ethereum和Binance链上的OrionProtocol合约因存在安全漏洞,遭受了重入攻击。攻击者成功窃取了约290万美元的加密资产,其中包括Ethereum上的2,844,766 USDT和BSC上的191,606 BUSD。

攻击过程分析

攻击者首先部署了一个自定义Token合约,并进行了必要的准备工作。随后,攻击者通过UNI-V2的swap方法借入资金,并调用ExchangeWithAtomic合约的swapThroughOrionPool方法进行代币兑换。兑换路径包含了攻击者创建的Token合约地址,这为后续的回调攻击铺平了道路。

在兑换过程中,由于攻击者的Token合约中包含回调逻辑,每次转账操作都会触发对ExchangeWithAtomic合约depositAsset方法的重入调用。这导致存款金额被错误地累加,最终允许攻击者提取超出其实际存入量的资金。

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

漏洞根源

核心问题出在ExchangeWithAtomic合约的doSwapThroughOrionPool和_doSwapTokens函数中。这些函数在执行代币转账后更新curBalance变量,但没有防止重入攻击的措施。攻击者利用自定义Token的transfer函数回调depositAsset方法,导致curBalance被错误更新,从而在偿还闪电贷后提取超额资金。

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

资金流向

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

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

安全建议

为防止类似攻击,项目方应注意以下几点:

  1. 实现代币兑换功能时,需要考虑各种Token类型和兑换路径可能带来的安全风险。

  2. 遵循"检查-生效-交互"(Checks-Effects-Interactions)模式编写合约代码,即先进行条件检查,然后更新状态变量,最后才与外部合约交互。

  3. 在关键函数中使用重入锁或类似机制,防止重入攻击。

  4. 对于外部调用,特别是涉及资金转移的操作,应格外谨慎,并考虑使用pull payment模式代替push payment。

  5. 定期进行安全审计,及时发现并修复潜在漏洞。

通过采取这些措施,可以大大提高智能合约的安全性,降低遭受攻击的风险。在Web3生态系统中,安全始终应该是首要考虑因素。

TOKEN4.12%
ETH-0.6%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
Token Therapistvip
· 15小时前
又有人想不开了?
回复0
闪电清算人vip
· 15小时前
重入漏洞真的是Defi亏损第一杀手...
回复0
0xLuckboxvip
· 15小时前
这年头咋又被偷啊
回复0
TokenSherpavip
· 15小时前
*sigh* 又一个协议未能通过基本的重入检查... 从历史上看,这是可以预防的
查看原文回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)