扫码下载
BTC $60,531.11 +1.50%
ETH $1,554.39 -0.27%
BNB $573.91 +1.38%
XRP $1.08 -0.79%
SOL $61.68 -2.30%
TRX $0.3220 +0.60%
DOGE $0.0808 +0.09%
ADA $0.1574 -0.71%
BCH $213.62 -0.68%
LINK $7.31 +1.27%
HYPE $56.78 -0.42%
AAVE $60.62 -1.27%
SUI $0.7072 +2.68%
XLM $0.2080 +7.48%
ZEC $356.51 +9.22%
BTC $60,531.11 +1.50%
ETH $1,554.39 -0.27%
BNB $573.91 +1.38%
XRP $1.08 -0.79%
SOL $61.68 -2.30%
TRX $0.3220 +0.60%
DOGE $0.0808 +0.09%
ADA $0.1574 -0.71%
BCH $213.62 -0.68%
LINK $7.31 +1.27%
HYPE $56.78 -0.42%
AAVE $60.62 -1.27%
SUI $0.7072 +2.68%
XLM $0.2080 +7.48%
ZEC $356.51 +9.22%

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