扫码下载
BTC $74,961.48 +0.32%
ETH $2,345.32 -0.52%
BNB $634.46 +1.96%
XRP $1.44 +3.35%
SOL $88.79 +4.59%
TRX $0.3269 +0.08%
DOGE $0.0987 +4.10%
ADA $0.2582 +5.33%
BCH $456.47 +3.65%
LINK $9.52 +2.87%
HYPE $44.14 -0.62%
AAVE $115.43 +9.12%
SUI $0.9999 +4.30%
XLM $0.1681 +6.43%
ZEC $340.87 -1.64%
BTC $74,961.48 +0.32%
ETH $2,345.32 -0.52%
BNB $634.46 +1.96%
XRP $1.44 +3.35%
SOL $88.79 +4.59%
TRX $0.3269 +0.08%
DOGE $0.0987 +4.10%
ADA $0.2582 +5.33%
BCH $456.47 +3.65%
LINK $9.52 +2.87%
HYPE $44.14 -0.62%
AAVE $115.43 +9.12%
SUI $0.9999 +4.30%
XLM $0.1681 +6.43%
ZEC $340.87 -1.64%

orion

慢雾:Orion Protocol 被攻击是因合约兑换功能的函数没有做重入保护所致

ChainCatcher 消息,今晨 Orion Protocol 项目的 ETH 和 BSC 链上的合约遭到攻击,攻击者获利约 302.7 万美元,对此次攻击过程和原因慢雾安全团队分析如下: 1. 攻击者首先调用 ExchangeWithAtomic 合约的 depositAsset 函数进行存款,存入 0.5 个 USDC 代币为下面的攻击作准备; 2. 攻击者闪电贷出 284.47 万枚 USDT 代币,接着调用 ExchangeWithAtomic 合约的 doSwapThroughOrionPool 函数兑换代币,兑换路径是 [USDC -> ATK(攻击者创建的恶意代币)-> USDT]; 3. 因为兑换出来的结果是通过兑换后 ExchangeWithAtomic 合约里的 USDT 代币余额减去兑换前该合约里的 USDT 代币余额(284.47 万枚),但问题就在兑换 USDC -> ATK 后,会调用 ATK 代币的转账函数,该函数由攻击恶意构造会通过攻击合约调用 ExchangeWithAtomic 合约的 depositAsset 函数来将闪电贷来的 284.4 万 USDT 代币存入 ExchangeWithAtomic 合约中。此时攻击合约在 ExchangeWithAtomic 合约里的存款被成功记账为 284.47 万枚并且 ExchangeWithAtomic 合约里的 USDT 代币余额为 568.9 万枚,使得攻击者兑换出的 USDT 代币的数量被计算为兑换后的 568.9 万减去兑换前的 284.47 万等于 284.47 万; 4. 之后兑换后的 USDT 代币最后会通过调用库函数 creditUserAssets 来更新攻击合约在 ExchangeWithAtomic 合约里的使用的账本,导致攻击合约最终在 ExchangeWithAtomic 合约里 USDT 代币的存款记账为 568.9 万枚; 5. 最后攻击者调用 ExchangeWithAtomic 合约里的 withdraw 函数将 USDT 提取出来,归还闪电贷后将剩余的 283.6 万枚 USDT 代币换成 WETH 获利。攻击者利用一样的手法在 BSC 链上的也发起了攻击,获利 19.1 万美元; 此次攻击的根本原因在于合约兑换功能的函数没有做重入
2023-02-03
app_icon
ChainCatcher 与创新者共建Web3世界