← 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

Block #9,484,688
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/ETH36.76 ETH/WBTC
WBTC (USD)$10,420
ETH (USD)$283.49
⚠ 조작가 (After Pump)
WBTC/ETH109.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
차입 WBTC112 WBTC
Dump 수령6,871.41 ETH

2-5. Key Events

#EventFromToAmountDeviation
1LogWithdraw (Flashloan borrow)dYdX SoloMarginAttacker CA 10,000 ETH
2Mint (담보 예치)Attacker CACompound cETH 5,500 ETH
3BorrowCompound cWBTCAttacker CA 112 WBTC 49.11 ETH/WBTC
담보비 133.6% (정상)
4Mint (마진 개시)Attacker EOAbZx Fulcrum 1,300 ETH → sETHwBTC5x
6KyberTrade (Kyber→Uniswap)bZx Position TokenKyber/Uniswap 5,637.62 ETH → 51.35 WBTC 109.78 ETH/WBTC
+198.6% from 36.76
7EthPurchase (Uniswap Dump)Attacker CAUniswap WBTC/WETH 112 WBTC → 6,871.41 ETH 61.35 ETH/WBTC
+66.9% from 36.76
8LogDeposit (Flashloan repayment)Attacker CAdYdX SoloMargin 10,000 ETH
Net Profit (즉시 현금 + Compound 포지션 가치) ~1,271 ETH (~$355,880)

2-6. 유사 공격 비교표

공격날짜피해 프로토콜이익기법
bZx Hack I2020-02-15bZx (Fulcrum)~$355KFlash Loan + Margin Trade 슬리피지 우회
bZx Hack II2020-02-18bZx (Lending)~$633KFlash Loan + sUSD 오라클 조작
Harvest Finance2020-10-26Harvest~$34MFlash Loan + Curve 가격 조작
Mango Markets2022-10-11Mango~$114MMNGO 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
$10,420
공격 시점 시가
WBTC (Uniswap 조작 후)
~$31,120
109.78 ETH/WBTC × $283.49
iETH
$129.13
bZx 풀 토큰
💡 가격 조작 핵심: 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
ETH Balance
0
WBTC Balance
0
Status

4. ETH Balance Waterfall

Flash Loan 유입 Exploit 유입 (차입/매도) 유출 (예치/스왑/상환) Net Position