OrionProtocol遭重入攻击 损失290万美元 安全建议解析

robot
摘要生成中

OrionProtocol遭遇重入攻击事件分析

2023年2月2日,以太坊和币安智能链上的OrionProtocol因合约漏洞遭受重入攻击,总计损失约290万美元,其中包括以太坊上2,844,766 USDT和BSC上191,606 BUSD。

攻击过程分析

攻击者首先部署了一个特制的Token合约,并对其进行了转移和授权操作,为后续攻击做准备。随后,攻击者通过某DEX的swap方法进行借贷,并调用ExchangeWithAtomic.swapThroughOrionPool方法进行代币兑换。兑换路径设置为USDC → 攻击者Token → USDT。

在ExchangeWithAtomic.swapThroughOrionPool方法执行过程中,由于攻击者Token合约中存在回调函数,导致在Token.Transfer过程中再次调用ExchangeWithAtomic.depositAsset方法,从而实现了重入攻击。这使得存款金额被多次累加,最终攻击者通过取款操作获取超额利润。

OrionProtocol 重入攻击分析附PoC

资金流向

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

OrionProtocol 重入攻击分析附PoC

漏洞分析

核心漏洞存在于doSwapThroughOrionPool和_doSwapTokens函数中。关键问题在于,合约在进行代币转账后才更新curBalance变量,这为重入攻击创造了条件。攻击者通过在自定义Token的transfer函数中添加回调逻辑,使其在转账过程中再次调用depositAsset函数,导致curBalance被错误更新。

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

漏洞复现

研究人员提供了部分POC代码,模拟了攻击过程。测试结果显示,攻击者成功利用漏洞获取了额外的USDT。

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

OrionProtocol 重入攻击分析附PoC

安全建议

  1. 合约开发时应严格遵循"检查-生效-交互"(Checks-Effects-Interactions)模式,即先进行状态检查,然后更新合约状态,最后才与外部合约交互。

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

  3. 对于涉及资金操作的关键函数,应实施重入锁或使用OpenZeppelin的ReentrancyGuard等安全库。

  4. 定期进行代码审计和安全评估,及时发现并修复潜在漏洞。

  5. 考虑引入交易金额限制或时间锁等机制,降低单次攻击可能造成的损失。

通过采取这些措施,项目方可以有效提高智能合约的安全性,降低遭受类似攻击的风险。

TOKEN-5.41%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
ZkProofPuddingvip
· 08-01 07:33
重入又来 呵~
回复0
合约自由人vip
· 07-29 23:53
又是重入攻击 烦死了
回复0
GasFeeCryvip
· 07-29 23:52
又白给黑客送钱咯
回复0
JustHereForAirdropsvip
· 07-29 23:40
又是290w没了 悲
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)