2,009,440 USDC + 1,237,995 USDT + 87,586 DAI + 2 ETH
≈ $3.34M
2-6. 유사 공격 비교
공격명
날짜
취약점
손실
Flash Loan
bZx Hack I
2020-02-15
Oracle Manipulation (Multi-DEX)
~$350K
dYdX
bZx Hack II
2020-02-18
Oracle Manipulation (Kyber/Synthetix)
~$600K
bZx iETH
Harvest Finance
2020-10-26
AMM Oracle Manipulation
~$34M
Aave V2
Akropolis
2020-11-12
Reentrancy + Flash Loan
~$2M
dYdX
★ Cheese Bank
2020-11-06
LP Collateral Oracle Manipulation
~$3.3M
dYdX
Value DeFi
2020-11-14
Oracle Manipulation (Curve)
~$6M
Aave
Origin Protocol
2020-11-17
Reentrancy + Rebasing
~$7M
dYdX
2-7. Root Causes & Lessons
🔴 근본 원인
AMM 스팟 가격 기반 단일 오라클: Cheese Bank가 Uniswap V2 풀의 WETH 잔고만으로 LP 토큰 가격을 산출하여, 대량 스왑 하나로 담보 가치를 수십 배 조작 가능
LP 가격 공식의 구조적 결함: totalValue = wETHBalance × 2 × ethPrice. WETH 잔고에 선형 비례하므로 자금 주입만으로 가격 왜곡이 직접 전달됨
Flash Loan 방어 부재: 같은 블록 내 담보 예치→가격 조작→차입이 가능. 시간 지연(Time-lock)이나 블록 간 검증 없음
차입 한도 미검증: balanceOf()로 잔액 조회 후 전액 차입 허용. 전체 TVL 대비 단일 차입 제한 없음
🟢 교훈 & 방어책
Chainlink 등 탈중앙 오라클 도입: 외부 가격 피드를 기본으로 사용하고, 온체인 AMM 가격은 보조 참조만
TWAP (Time-Weighted Average Price) 적용: Uniswap V2/V3 TWAP 오라클로 단일 블록 내 가격 조작을 무력화
LP 토큰 가격 산정: Alpha Homora식 공정 LP 가격 = 2 × √(r₀·r₁) / totalSupply — 단순 WETH 잔고 참조 대신 기하 평균 사용
단일 블록 차입 제한: 담보 예치와 차입 사이 최소 1블록 대기, 또는 Flash Loan 감지 시 차입 거부
2-8. 공격 당시 토큰 가격
ETH (WETH)
~$456
공격 시점 시가
USDC
$1.00
Stablecoin
USDT
$1.00
Stablecoin
DAI
$1.00
Stablecoin
CHEESE (조작 전)
~$0.000213
미소 시총 토큰
CHEESE (조작 후) ⚠
~$31.59
14,726% 펌프
💡 가격 조작 핵심: CHEESE 토큰의 시장 가격이 아닌, Uniswap V2 풀의 WETH 잔고가 Cheese Bank 오라클에 직접 투영됨. 20,000 ETH를 풀에 투입해 WETH 잔고를 ~94배 늘리면, LP 가격 공식(WETH×2×ethPrice÷totalSupply)에 따라 담보 가치도 ~94배 부풀려짐.