扫码下载
BTC $60,915.68 -1.79%
ETH $1,565.89 -5.89%
BNB $575.05 -3.12%
XRP $1.09 -3.17%
SOL $62.71 -5.55%
TRX $0.3201 -1.78%
DOGE $0.0818 -2.94%
ADA $0.1584 -3.18%
BCH $217.05 -2.86%
LINK $7.37 -3.00%
HYPE $59.07 -5.37%
AAVE $62.00 -5.12%
SUI $0.7158 -0.45%
XLM $0.1996 +4.87%
ZEC $369.71 +17.16%
BTC $60,915.68 -1.79%
ETH $1,565.89 -5.89%
BNB $575.05 -3.12%
XRP $1.09 -3.17%
SOL $62.71 -5.55%
TRX $0.3201 -1.78%
DOGE $0.0818 -2.94%
ADA $0.1584 -3.18%
BCH $217.05 -2.86%
LINK $7.37 -3.00%
HYPE $59.07 -5.37%
AAVE $62.00 -5.12%
SUI $0.7158 -0.45%
XLM $0.1996 +4.87%
ZEC $369.71 +17.16%

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世界