扫码下载
BTC $71,339.38 -2.98%
ETH $1,983.60 -0.77%
BNB $687.29 -3.11%
XRP $1.30 -2.32%
SOL $80.70 -1.12%
TRX $0.3451 -1.00%
DOGE $0.0998 +0.55%
ADA $0.2302 -1.06%
BCH $289.74 -2.76%
LINK $9.02 +0.09%
HYPE $72.48 +5.43%
AAVE $80.18 -1.24%
SUI $0.8762 +0.29%
XLM $0.2557 +3.99%
ZEC $550.54 +0.89%
BTC $71,339.38 -2.98%
ETH $1,983.60 -0.77%
BNB $687.29 -3.11%
XRP $1.30 -2.32%
SOL $80.70 -1.12%
TRX $0.3451 -1.00%
DOGE $0.0998 +0.55%
ADA $0.2302 -1.06%
BCH $289.74 -2.76%
LINK $9.02 +0.09%
HYPE $72.48 +5.43%
AAVE $80.18 -1.24%
SUI $0.8762 +0.29%
XLM $0.2557 +3.99%
ZEC $550.54 +0.89%

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