33.7M DAI + 134M USDC를 Curve 3pool에 예치하여 165.4M 3CRV 취득. 이후 163.5M USDT를 인출하여 풀을 DAI/USDC 과잉 상태로 만듦.
3CRV LP 포지션 확보 + 163.5M USDT
Step 4 — yDAI 볼트 착취 (×5 사이클)
반복적 예금/인출로 볼트 가치 탈취
① 93M DAI를 yDAI 볼트에 예치 (볼트가 불균형 3pool에 불리한 환율로 예금) → ② 163.5M USDT를 3pool에 재투입 (부분 균형 회복) → ③ yDAI 인출 (볼트가 손실 상태에서 DAI 반환) → ④ USDT 재인출. 각 사이클마다 ~$700K씩 볼트 가치 감소.
5 사이클 × ~$700K = ~$3.5M 볼트 손실 (이 Tx)
Step 5 — 정리 및 상환
3CRV 환매 → Compound 상환 → 플래시론 반환
잔여 3CRV를 37.2M DAI + 134M USDC로 환매. Compound 차입금(DAI+USDC) 전액 상환 후 214,847 ETH 회수. 잔여 USDT 153K를 Uniswap V2에서 93 WETH로 스왑하여 Aave 프리미엄(88 ETH) 충당.
Aave premium: 88 ETH ($146K)
Step 6 — 이익 실현
127,856 3CRV + 11,017 USDT → 공격자 EOA 전송
잔여 3CRV 및 USDT를 공격자 EOA(0x14EC...)로 전송. 플래시론 정확히 상환 완료.
33,702,311 DAI + 134,000,000 USDC → 165,439,038 3CRV 수령
—
6
RemoveLiquidityImbalance
Curve 3pool
Attacker CA
163,505,563 USDT → 풀: DAI/USDC 과잉, USDT 부족
—
▸ Cycle 1 — 볼트 손실 −709,228 DAI
7
AddLiquidity (yDAI→전략)
Yearn Strategy
Curve 3pool
92,096,074 DAI
—
8
AddLiquidity (USDT 재투입)
Attacker CA
Curve 3pool
163,505,563 USDT
—
9
Withdraw (Gauge)
Curve Gauge
Yearn Strategy
175,629 3CRV
—
10–11
RemoveLiquidityOne
Curve 3pool
Yearn Strategy
90,223,780 3CRV → 91,386,846 DAI
—
12
RemoveLiquidityImbalance
Curve 3pool
Attacker CA
163,505,563 USDT
—
▸ Cycle 2 — 볼트 손실 −703,138 DAI
13
AddLiquidity (yDAI→전략)
Yearn Strategy
Curve 3pool
91,393,938 DAI
—
14
AddLiquidity (USDT 재투입)
Attacker CA
Curve 3pool
163,505,563 USDT
—
15
Withdraw (Gauge)
Curve Gauge
Yearn Strategy
176,629 3CRV
—
16–17
RemoveLiquidityOne
Curve 3pool
Yearn Strategy
89,528,850 3CRV → 90,690,800 DAI
—
18
RemoveLiquidityImbalance
Curve 3pool
Attacker CA
163,505,563 USDT
—
▸ Cycle 3 — 볼트 손실 −699,384 DAI
19
AddLiquidity (yDAI→전략)
Yearn Strategy
Curve 3pool
90,697,831 DAI
—
20
AddLiquidity (USDT 재투입)
Attacker CA
Curve 3pool
163,505,563 USDT
—
21
Withdraw (Gauge)
Curve Gauge
Yearn Strategy
175,338 3CRV
—
22–23
RemoveLiquidityOne
Curve 3pool
Yearn Strategy
88,837,708 3CRV → 89,998,447 DAI
—
24
RemoveLiquidityImbalance
Curve 3pool
Attacker CA
163,505,563 USDT
—
▸ Cycle 4 — 볼트 손실 −695,637 DAI
25
AddLiquidity (yDAI→전략)
Yearn Strategy
Curve 3pool
90,005,441 DAI
—
26
AddLiquidity (USDT 재투입)
Attacker CA
Curve 3pool
163,505,563 USDT
—
27
Withdraw (Gauge)
Curve Gauge
Yearn Strategy
174,046 3CRV
—
28–29
RemoveLiquidityOne
Curve 3pool
Yearn Strategy
88,150,366 3CRV → 89,309,804 DAI
—
30
RemoveLiquidityImbalance
Curve 3pool
Attacker CA
163,505,563 USDT
—
▸ Cycle 5 — 볼트 손실 −691,744 DAI
31
AddLiquidity (yDAI→전략)
Yearn Strategy
Curve 3pool
89,316,760 DAI
—
32
AddLiquidity (USDT 재투입)
Attacker CA
Curve 3pool
163,341,032 USDT
—
33
Withdraw (Gauge)
Curve Gauge
Yearn Strategy
172,766 3CRV
—
34–35
RemoveLiquidityOne
Curve 3pool
Yearn Strategy
87,466,827 3CRV → 88,625,016 DAI
—
▸ Phase 3 — 정리 및 상환
36–37
RemoveLiquidityImbalance (3CRV 환매)
Curve 3pool
Attacker CA
37,201,153 DAI + 134,000,000 USDC 초기 대비 +3,498,842 DAI
—
38
RepayBorrow
Attacker CA
Compound cDAI
126,717,145 DAI
—
39
RepayBorrow
Attacker CA
Compound cUSDC
134,000,000 USDC
—
40
Redeem
Compound cETH
Attacker CA
214,847.309 WETH
—
41–42
Swap
Attacker CA
Uniswap V2
153,512 USDT → 93.134 WETH
$1,648/ETH −0.9% from $1,664
43–44
FlashLoan (Flashloan repayment) (상환)
Attacker CA
Aave V2
97,926.912 WETH + 88.134 premium
—
45
LogDeposit (Flashloan repayment) (상환)
Attacker CA
dYdX SoloMargin
116,920.396 WETH
—
▸ 이익 실현
—
Transfer (잔여 자산 → EOA)
Attacker CA
Attacker EOA
127,856 3CRV ($129,527) + 11,017 USDT ($11,017)
$140,544
사이클 요약 (5회)
C1: 92,096,074 → 91,386,846 = −709,228 DAI
C2: 91,393,938 → 90,690,800 = −703,138 DAI
C3: 90,697,831 → 89,998,447 = −699,384 DAI
C4: 90,005,441 → 89,309,804 = −695,637 DAI
C5: 89,316,760 → 88,625,016 = −691,744 DAI 총 볼트 손실: −3,499,131 DAI (이 Tx)
2-6. 유사 공격 비교
사건
날짜
기법
피해 규모
공격자 수익
★
Yearn v1 yDAI Vault
2021-02-04
Curve 3pool 조작 + 슬리피지
$11.1M
~$2.8M
Harvest Finance
2020-10-26
Curve Y pool 조작
$33.8M
~$33.8M
Pickle Finance
2020-11-22
pDAI Jar (Curve 기반)
$19.7M
~$19.7M
bZx Hack II
2020-02-18
Kyber/Synthetix 오라클 조작
~$600K
~$600K
Eminence Finance
2020-09-29
본딩 커브 플래시론
$15M
~$15M
2-7. 근본 원인 및 교훈
근본 원인
슬리피지 보호가 1%로 너무 느슨하게 설정됨 — 대규모 조작에 대한 방어 불충분
v2 마이그레이션 장려를 위해 0.5% 출금 수수료를 0%로 설정 — 반복 출금 비용 제거
💡 공격 핵심: 공격자가 Curve 3pool에 대규모 단일 자산(USDT) 인출/예치를 반복하여 풀 균형을 의도적으로 왜곡. yDAI 볼트의 StrategyDAI3pool이 이 불균형 상태에서 DAI를 예치/인출하면서 매번 ~1% 슬리피지 손실이 발생. 공격자는 3CRV LP 보유자로서 이 손실분을 흡수.