← Dashboard
Ethereum Mainnet
Chain ID: 1
PMA Case #—
Eminence Finance
본딩 커브 + eToken 순환 조작으로 ~$15M DAI를 탈취한 플래시론 공격 (Tx 3/3)
Bonding Curve Manipulation
Flash Loan (Uniswap V2)
Single Tx
Unaudited Contract
Block 1 — 프로토콜 의존성 구조도
All
Step 1: Flash Loan
Step 2: DAI→EMN Mint
Step 3: EMN→eAAVE Burn
Step 4: EMN→DAI Sell
Step 5: eAAVE→EMN Cycle
Step 6: Repay + Profit
전체 흐름: 공격자는 Uniswap V2에서 15M DAI를 플래시론으로 차입 → Eminence 본딩 커브에 예치하여 EMN 민팅 → EMN의 절반을 소각하여 eAAVE 민팅(EMN 공급 감소로 가격 상승) → 나머지 EMN을 높은 가격에 DAI로 판매 → eAAVE를 다시 EMN으로 교환 후 재판매. 이 사이클을 3회 반복하여 본딩 커브의 DAI를 연쇄적으로 추출.
Single atomic transaction — Block #10954411
Uniswap V2
WETH/DAI Pool
Attacker CA
0x3882...713f
Eminence (EMN)
DAI ↔ EMN 본딩 커브
Eminence AAVE
EMN ↔ eAAVE 커브
Attacker EOA
0x2230...1cA9
15M DAI
1
DAI → EMN
2
½ EMN burn
→ eAAVE mint
3
½ EMN → DAI
4
eAAVE→EMN→DAI
×3 라운드 반복
5
15.04M DAI
5.92M DAI
6
Block 2 — 종합 대시보드
2-1. Transaction Info
Date / Time (UTC)
2020-09-29 01:20:41
Attack Type
Bonding Curve Manipulation + Flash Loan
Attacker Profit (this tx)
+5,919,922 DAI (~$5.92M)
Total Victim Loss (3 txs)
~15,015,533 DAI (~$15M)
Returned by Attacker
8,000,000 DAI ($8M)
2-2. Attack Execution Flow
Step 1 — Flash Loan
Uniswap V2 Flash Swap으로 15,000,000 DAI 차입
Uniswap V2 WETH/DAI 풀에서 flash swap을 통해 대규모 DAI를 무담보로 차입. 동일 트랜잭션 내 상환 필수.
15,000,000 DAI
Step 2 — Round 1: DAI→EMN Mint
본딩 커브에 DAI 예치 → EMN 민팅
Eminence 본딩 커브(CashShopBuy)에 15M DAI를 예치하여 ~1.38B EMN을 민팅.
15,000,000 DAI → 1,383,650,487 EMN
Step 3 — Round 1: EMN→eAAVE (Supply 조작)
EMN 절반 소각 → eAAVE 민팅 (가격 펌핑 핵심)
EMN의 절반(~691M)을 eAAVE 본딩 커브에 소각. EMN 공급이 급감하면서 본딩 커브 상 EMN 가격이 대폭 상승. 이것이 공격의 핵심 — 소각 행위 자체가 가격 조작을 유발.
691,825,243 EMN → 572,431 eAAVE
Step 4 — Round 1: EMN→DAI Sell (Profit 1차)
나머지 EMN을 높아진 가격으로 DAI 회수
EMN 공급 감소로 올라간 가격에 나머지 EMN을 CashShopSell. 그 후 eAAVE를 다시 EMN으로 교환 후 재판매.
691M EMN → 10,024,579 DAI + (eAAVE→EMN→) 6,649,057 DAI = 16,673,636 DAI
Step 5 — Round 2: 재투입 (스케일 확대)
Round 1 수익 전액 재투입 → 더 큰 스케일로 반복
Round 1의 16.67M DAI를 그대로 재투입. 동일 Buy→Burn→Sell 패턴을 반복하여 18.65M DAI 추출.
16,673,637 DAI → 18,653,307 DAI (+1,979,670 순이익)
Step 6 — Round 3: 최종 라운드
Round 2 수익 전액 재투입 → 본딩 커브 잔여 DAI 모두 추출
18.65M DAI를 재투입하여 최종 20.96M DAI를 추출. 본딩 커브의 DAI 잔고가 사실상 소진됨.
18,653,308 DAI → 20,965,177 DAI (+2,311,869 순이익)
Step 7 — Flash Loan 상환 + 수익 이전
Uniswap에 15.04M DAI 상환, 5.92M DAI 순이익 확보
Flash Swap 원금 + 0.3% 수수료(45,255 DAI) 상환 후 잔여 DAI를 공격자 EOA로 이전.
NET PROFIT: +5,919,922 DAI (~$5.92M)
2-3. Involved Entities & PnL
ATTACKER EOA
공격자 외부 소유 계정
+5,919,922 DAI
ATTACKER CA
공격 실행 컨트랙트
중간 실행 역할
VICTIM — EMINENCE
Eminence (EMN) 본딩 커브
-~$15M DAI (전체 풀 소진)
INTERMEDIARY
Eminence AAVE (eAAVE) 커브
공급 조작 경유 컨트랙트
FLASH LOAN — UNISWAP V2
Uniswap V2 WETH/DAI Pool
+45,255 DAI (수수료)
2-4. Bonding Curve Manipulation Detail
Round 1 수익률
입금 15,000,000 DAI
회수 16,673,636 DAI
순이익 +1,673,636 DAI (+11.2%)
⚠ Round 3 수익률 (최종)
입금 18,653,308 DAI
회수 20,965,177 DAI
순이익 +2,311,869 DAI (+12.4%)
Burn 효과 (가격 조작)
R1 매입가 $0.01084/EMN
R1 매도가 (post-burn) $0.01449/EMN
가격 상승률 +33.7%
Flash Loan 비용
원금 15,000,000 DAI
수수료 (0.3%) 45,255 DAI
상환 총액 15,045,255 DAI
2-5. Key Events
# Event From To Amount Deviation
1 Swap (Flashloan borrow) Uniswap V2 Attacker CA 15,000,000 DAI
—
2 CashShopBuy Attacker CA Eminence 15,000,000 DAI → 1,383,650,487 EMN
$0.01084/EMN
기준가 설정 (R1)
3 CashShopBuy (eAAVE) Attacker CA Eminence AAVE 691,825,243 EMN → 572,431 eAAVE
—
4 CashShopSell Eminence Attacker CA 691,825,243 EMN → 10,024,579 DAI
$0.01449/EMN
+33.7% from $0.01084
5 CashShopSell (eAAVE→EMN→DAI) Eminence AAVE + Eminence Attacker CA 572,431 eAAVE → 691,825,243 EMN → 6,649,057 DAI
$0.00961/EMN
−11.4% (커브 소진 효과)
6 CashShopBuy (R2) Attacker CA Eminence 16,673,637 DAI → 1,734,440,732 EMN
$0.00961/EMN
R2 진입가
7 CashShopBuy (eAAVE, R2) Attacker CA Eminence AAVE 867,220,366 EMN → 665,997 eAAVE
—
8 CashShopSell (R2) Eminence Attacker CA 867,220,366 EMN → 11,578,029 DAI
$0.01335/EMN
+38.9% from R2 base
9 CashShopSell (eAAVE→EMN→DAI, R2) Eminence AAVE + Eminence Attacker CA 665,997 eAAVE → 867,220,366 EMN → 7,075,278 DAI
$0.00816/EMN
−15.1% (누적 소진)
10 CashShopBuy (R3) Attacker CA Eminence 18,653,308 DAI → 2,285,646,347 EMN
$0.00816/EMN
R3 진입가
11 CashShopBuy (eAAVE, R3) Attacker CA Eminence AAVE 1,142,823,173 EMN → 797,273 eAAVE
—
12 CashShopSell (R3) Eminence Attacker CA 1,142,823,173 EMN → 13,579,728 DAI
$0.01188/EMN
+45.6% from R3 base
13 CashShopSell (eAAVE→EMN→DAI, R3) Eminence AAVE + Eminence Attacker CA 797,273 eAAVE → 1,142,823,173 EMN → 7,385,449 DAI
$0.00646/EMN
−20.8% (풀 거의 소진)
14 Swap (Flashloan repayment) Attacker CA Uniswap V2 15,045,255 DAI
—
15 Profit Transfer Attacker CA Attacker EOA 5,919,922 DAI
NET PROFIT
2-6. 유사 공격 비교
공격명 날짜 피해 규모 기법 프로토콜
bZx Hack I 2020-02-15 ~$350K Flash Loan + Oracle Manip bZx / Fulcrum
bZx Hack II 2020-02-18 ~$600K Flash Loan + sUSD Pump bZx / Kyber / Synthetix
Harvest Finance 2020-10-26 ~$34M Flash Loan + AMM Manip Harvest / Curve
★ Eminence Finance 2020-09-29 ~$15M Flash Loan + Bonding Curve Eminence (Yearn)
Yam Finance 2020-08-13 ~$750K Rebase Bug Yam
2-7. Root Causes & Lessons
취약점 (Root Causes)
본딩 커브 간 상호작용에서 공급 감소 → 가격 상승의 순환적 차익이 통제되지 않음. EMN 소각이 eToken 커브를 경유해 즉시 재민팅 가능.
미감사 컨트랙트가 메인넷에 배포된 상태에서 접근 제한 없이 대규모 자금 유입을 허용. 프론트엔드조차 없는 알파 단계.
Flash Loan 방어 메커니즘 부재. 동일 블록 내 대량 mint/burn/sell 사이클에 대한 제한이 없었음.
본딩 커브 설계에서 대량 매수/소각 시 가격 영향(slippage)이 공격자에게 유리하게 작용하는 구조적 결함.
교훈 (Lessons Learned)
본딩 커브 기반 프로토콜은 다중 토큰 간 순환 차익 가능성을 반드시 검증해야 함. eToken 패밀리 간 mint/burn 재진입 방지 필요.
미완성 컨트랙트는 접근 제한(whitelist, cap) 없이 메인넷에 배포되어서는 안 됨. "Test in prod"의 위험성 증명.
Flash Loan 방어: 동일 블록 내 mint+burn 조합에 대한 딜레이 또는 재진입 가드 구현 필수.
프로젝트 창시자의 소셜 미디어 영향력이 FOMO를 유발할 수 있으므로, 미완성 프로젝트 홍보에 주의 필요.
2-8. 공격 당시 토큰 가격
EMN (조작 대상)
~$0.0108
본딩 커브 가격 (조작 전)
eAAVE
~$1.018
EMN 연동 파생 토큰
💡 가격 조작 핵심: 공격자가 EMN의 절반을 eAAVE로 소각하면 EMN 공급이 줄어 본딩 커브 상 가격이 급등(R1: +33.7%, R2: +38.9%, R3: +45.6%). 이 가격 차이가 각 라운드에서 DAI 순이익을 생성. 커브가 소진될수록 라운드별 수익률은 증가(11.2% → 11.9% → 12.4%).
Block 3 — Fund Flow
Step 1: Flash Loan
Step 2: Buy EMN
Step 3: Burn→eAAVE
Step 4: Sell EMN
Step 5: Cycle eAAVE
Step 6: ×3 Rounds
Step 7: Repay + Profit
Uniswap V2
WETH/DAI Pool
Attacker CA
0x3882...713f
Eminence (EMN)
DAI↔EMN Curve
Eminence AAVE
EMN↔eAAVE Curve
Attacker EOA
0x2230...1cA9
15M DAI
DAI → EMN
½ EMN burn
½ EMN→DAI
eAAVE→EMN→DAI
×3 라운드
Steps 2~5 반복
CYCLE ×3
15.04M DAI repay
5.92M DAI
DAI flow
Token flow
Repay / Sell
Burn flow
Step 1: Uniswap V2 WETH/DAI 풀에서 15,000,000 DAI를 flash swap으로 차입. 동일 트랜잭션 내에 원금 + 0.3% 수수료를 상환해야 함.
Block 4 — DAI Balance Waterfall
Flash Loan 유입
유출 (커브 매수)
Exploit 유입 (매도 회수)
상환
Net profit