扫码下载
BTC $66,964.57 -5.77%
ETH $1,881.91 -5.52%
BNB $653.86 -5.26%
XRP $1.21 -5.76%
SOL $74.83 -7.13%
TRX $0.3351 -2.48%
DOGE $0.0932 -6.55%
ADA $0.2146 -6.26%
BCH $279.91 -3.28%
LINK $8.44 -5.92%
HYPE $68.48 -6.16%
AAVE $74.02 -7.06%
SUI $0.8179 -5.72%
XLM $0.2185 -9.35%
ZEC $599.62 +9.62%
BTC $66,964.57 -5.77%
ETH $1,881.91 -5.52%
BNB $653.86 -5.26%
XRP $1.21 -5.76%
SOL $74.83 -7.13%
TRX $0.3351 -2.48%
DOGE $0.0932 -6.55%
ADA $0.2146 -6.26%
BCH $279.91 -3.28%
LINK $8.44 -5.92%
HYPE $68.48 -6.16%
AAVE $74.02 -7.06%
SUI $0.8179 -5.72%
XLM $0.2185 -9.35%
ZEC $599.62 +9.62%

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