← Dashboard
Ethereum Mainnet
Chain ID: 1
PMA Case #—
bZx
Flash Loan + Margin Trade 슬리피지 보호 미비를 이용한 WBTC 가격 조작 공격 (~$355K 이익)
Margin Trade Exploit
Flash Loan
Single Tx
Price Manipulation
1. 프로토콜 의존성 구조도
Single atomic transaction — Block #9,484,688
Attacker
EOA + Contracts
dYdX
Flash Loan
Compound
Lending
bZx Fulcrum
Margin Trading
Kyber Network
DEX Aggregator
Uniswap V1
WBTC/WETH Pool
iETH Pool
bZx Lending Pool
10,000 ETH
1
5,500 ETH
112 WBTC
2
1,300 ETH
4,698 ETH
5,637 ETH
→ Uniswap
51.3 WBTC
⚠ PRICE PUMPED 3×
3
112 WBTC
6,871 ETH
4
10,000 ETH
5
2. 종합 대시보드
2-1. Transaction Info
Date / Time (UTC)
2020-02-15 01:38:57
Attack Type
Flash Loan + Margin Trade Exploit
Attacker Profit
~1,271 ETH (~$355,880)
Victim Loss (bZx)
~4,698 ETH (~$1,331,876)
2-2. Attack Execution Flow
Step 1 — Flash Loan Borrow
dYdX에서 10,000 ETH Flash Loan 차입
dYdX SoloMargin의 Flash Loan 기능을 이용해 초기 자금 10,000 ETH를 무담보로 차입한다. 같은 트랜잭션 내에서 반드시 상환해야 한다.
+10,000 ETH
Step 2 — Hoard (매집)
Compound에 5,500 ETH 담보 예치 → 112 WBTC 차입
Compound cETH 시장에 5,500 ETH를 담보로 예치하고, cWBTC 시장에서 112 WBTC를 차입한다. 이 WBTC는 Step 4에서 가격이 부풀려진 Uniswap에 매도할 물량이다.
-5,500 ETH / +112 WBTC
Step 3 — Margin Pump (가격 펌핑)
bZx Fulcrum에서 5x 숏 ETH/WBTC 마진 포지션 개시
1,300 ETH를 증거금으로 예치하여 sETHwBTC5x (5배 레버리지 숏 ETH/롱 WBTC) 포지션을 개시한다. Fulcrum은 iETH 풀에서 4,698 ETH를 추가 차입하고, 총 5,637.62 ETH를 Kyber→Uniswap WBTC/WETH 풀을 통해 51.35 WBTC로 스왑한다. 이 대규모 매수로 Uniswap의 WBTC 가격이 정상 대비 약 3배로 급등한다.
-1,300 ETH → 5,637.62 ETH swapped → 51.35 WBTC (rate: 109.78 ETH/WBTC)
Step 4 — Dump (매도)
Compound에서 차입한 112 WBTC를 Uniswap에서 고가 매도
Step 3에서 WBTC 가격이 부풀려진 Uniswap WBTC/WETH 풀에 112 WBTC를 매도하여 6,871.41 ETH를 획득한다. 정상 환율(36.76 ETH/WBTC) 대비 61.35 ETH/WBTC로 약 67% 프리미엄에 매도했다.
-112 WBTC → +6,871.41 ETH (rate: 61.35 ETH/WBTC)
Step 5 — Flash Loan Repay + 이익 실현
dYdX Flash Loan 상환 후 순이익 확보
10,000 ETH를 dYdX에 상환하고, 잔여 71 ETH + Compound 포지션 순가치(5,500 ETH 담보 − 112 WBTC 부채) ≈ 1,200 ETH를 이익으로 확보한다. bZx의 마진 포지션은 심각한 부실 상태로 방치한다.
Net profit: ~1,271 ETH (~$355,880)
2-3. Involved Entities & PnL
ATTACKER (EOA)
공격자 EOA
+1,271 ETH (~$355,880)
ATTACKER CONTRACT
공격자 CA (메인)
메인 공격 로직 실행
VICTIM
bZx (iETH Pool)
−4,698 ETH (부실 대출)
FLASH LOAN
dYdX SoloMargin
10,000 ETH Flash Loan 제공
INTERMEDIARY
Compound (cETH/cWBTC)
담보 대출 중개 (정상 운영)
DEX
Uniswap V1 (WBTC/WETH)
가격 조작 대상 풀
2-4. Oracle/Price Manipulation Detail
정상가 (Before Pump)
WBTC/ETH 36.76 ETH/WBTC
WBTC (USD) $10,420
ETH (USD) $283.49
⚠ 조작가 (After Pump)
WBTC/ETH 109.78 ETH/WBTC
펌핑 배율 ×2.99 (약 3배)
Dump 시 실효 환율 61.35 ETH/WBTC
Pump Cost (가격 조작 비용)
마진 증거금 1,300 ETH
bZx 차입 (iETH) 4,698 ETH
총 스왑 금액 5,637.62 ETH
Hoard Cost (매집 비용)
Compound 담보 5,500 ETH
차입 WBTC 112 WBTC
Dump 수령 6,871.41 ETH
2-5. Key Events
# Event From To Amount Deviation
1 LogWithdraw (Flashloan borrow) dYdX SoloMargin Attacker CA
10,000 ETH
—
2 Mint (담보 예치) Attacker CA Compound cETH
5,500 ETH
—
3 Borrow Compound cWBTC Attacker CA
112 WBTC
49.11 ETH/WBTC
담보비 133.6% (정상)
4 Mint (마진 개시) Attacker EOA bZx Fulcrum
1,300 ETH → sETHwBTC5x
—
6 KyberTrade (Kyber→Uniswap) bZx Position Token Kyber/Uniswap
5,637.62 ETH → 51.35 WBTC
109.78 ETH/WBTC
+198.6% from 36.76
7 EthPurchase (Uniswap Dump) Attacker CA Uniswap WBTC/WETH
112 WBTC → 6,871.41 ETH
61.35 ETH/WBTC
+66.9% from 36.76
8 LogDeposit (Flashloan repayment) Attacker CA dYdX SoloMargin
10,000 ETH
—
Net Profit (즉시 현금 + Compound 포지션 가치)
~1,271 ETH (~$355,880)
2-6. 유사 공격 비교표
공격 날짜 피해 프로토콜 이익 기법
★ bZx Hack I 2020-02-15 bZx (Fulcrum) ~$355K Flash Loan + Margin Trade 슬리피지 우회
bZx Hack II 2020-02-18 bZx (Lending) ~$633K Flash Loan + sUSD 오라클 조작
Harvest Finance 2020-10-26 Harvest ~$34M Flash Loan + Curve 가격 조작
Mango Markets 2022-10-11 Mango ~$114M MNGO Perp 가격 조작 + 담보 대출
2-7. Root Causes & Lessons
취약점 (Vulnerabilities)
bZx의 takeOrderFromiToken() 함수에서 shouldLiquidate() 건전성 검증이 특정 조건(sentAmounts[6] == sentAmounts[1])에서 건너뛰어짐
마진 트레이드의 슬리피지 보호 부재 — 5,637 ETH로 51 WBTC만 수령(정상 대비 1/3)해도 실행 허용
단일 DEX(Uniswap V1)에 의존하는 가격 발견 — 저유동성 풀의 대규모 스왑으로 가격 3배 조작 가능
DeFi 프로토콜 간 Composable Liquidity의 공유가 교차 프로토콜 공격 벡터를 생성
교훈 (Lessons Learned)
마진 트레이드 실행 전후에 포지션 건전성 검증(collateralization check)을 반드시 강제해야 함
DEX 스왑에 최대 슬리피지 한도(max slippage) 파라미터를 필수 적용
가격 오라클을 Chainlink 같은 분산형 오라클로 다각화하여 단일 DEX 의존도 제거
Flash Loan을 통한 대규모 자본 활용 시나리오를 위협 모델링에 포함시켜야 함
2-8. 공격 당시 토큰 가격
ETH (WETH)
$283.49
공격 시점 시가
WBTC (Uniswap 조작 후)
~$31,120
109.78 ETH/WBTC × $283.49
💡 가격 조작 핵심: bZx Fulcrum의 5x 마진 트레이드가 5,637 ETH를 Uniswap V1 WBTC/WETH 풀에 한꺼번에 투입하여 WBTC 가격을 정상(36.76 ETH) 대비 약 3배(109.78 ETH)로 끌어올렸다. 공격자는 이 부풀려진 가격에 Compound에서 차입한 112 WBTC를 매도하여 차익을 실현했다.
3. 인터랙티브 Fund Flow
Attacker
EOA + Contracts
dYdX
Compound
bZx Fulcrum
iETH Pool
Kyber Network
Uniswap WBTC/ETH
10,000 ETH
5,500 ETH
112 WBTC
1,300 ETH
4,698 ETH
5,637 ETH
51.35 WBTC
⚠ 3× PUMP
112 WBTC
6,871 ETH
10,000 ETH
ETH flow
WBTC flow
Repay / Return
4. ETH Balance Waterfall
Flash Loan 유입
Exploit 유입 (차입/매도)
유출 (예치/스왑/상환)
Net Position