← Dashboard
BNB Smart ChainChain ID: 56
PMA Case #—

PancakeHunny

HunnyMinter 성과 수수료 계산 조작을 통한 HUNNY 토큰 과다 발행 — PancakeBunny 포크 취약점 재현 (×91 반복)
Performance Fee ManipulationMinting ExploitMulti-Tx (×91)

Block 1 — 프로토콜 의존성 구조도

All
Step 1: WBNB→CAKE
Step 2: CAKE→Minter
Step 3: 민팅
Step 4: 회수+덤핑
공격자 Main CA(0x3863)가 6 WBNB를 PCS에서 125.17 CAKE로 스왑, 절반(62.585 CAKE)을 HunnyMinter에 성과 수수료로 주입한다. Minter는 이 CAKE를 WBNB→HUNNY→LP 경로로 처리하며 19,518 HUNNY를 무에서 발행(mint). Child CA를 경유해 Main CA로 회수 후 HUNNY/BNB 풀에서 ~11.15 WBNB로 덤핑, 원금 6 WBNB를 복구하여 순이익 ~5.17 WBNB를 추출한다. 이 사이클이 91회 반복되었다.
단일 사이클 — Block #7,961,802 (×91 반복) Attacker (0x3863)Main CA + EOA PCS CAKE/BNBPancakeSwap HunnyMinter⚠ 0x109e HUNNY/BNBPancakeSwap Pool Child CAs0xed50 / 0x78e0 HUNNY Tokenmint() 발행 16 BNB→125 CAKE 262.5 CAKE 3mint 19,518 4HUNNY 덤핑6.018→6 BNB 원금 복구

Block 2 — 종합 대시보드

2-1. Transaction Info (대표 Tx)

Date / Time2021-06-03 01:57:58 UTC
총 실행 횟수91회 (Multi-Tx)
이 Tx 순이익~5.17 WBNB (~$2,084)
추정 총 피해~$1,100,000 (HUNNY −52%)
WBNB 시세$403.21

2-2. Attack Execution Flow (이벤트 검증 기반)

Step 1 — Swap (Event #19)
6 WBNB → 125.17 CAKE (PCS CAKE/BNB)
Main CA(0x3863)가 PancakeRouter를 통해 원금 6 WBNB를 125.17 CAKE로 스왑.
6.000000 WBNB → 125.170666 CAKE
Step 2 — Fee Injection (Event #20)
62.585 CAKE → HunnyMinter (성과 수수료 위장)
Main CA가 CAKE의 절반(62.585)을 HunnyMinter(0x109e)에 직접 전송. CakeFlipVault의 getReward() → mintFor() 체인을 트리거한다.
62.585333 CAKE → HunnyMinter
Step 3 — Minter Internal (Events #40,43 / #97,100)
HunnyMinter 내부: CAKE → WBNB → HUNNY → LP
Minter가 수신한 CAKE를 두 사이클로 처리: 31.29 CAKE → 1.4925 WBNB → 2,588 HUNNY (×2). 이 HUNNY+WBNB로 HUNNY/BNB LP를 민팅하고 HunnyPool에 전달.
2×31.29 CAKE → 2×1.49 WBNB → 2×~2,590 HUNNY → LP Mint (Events #61,#118)
Step 4 — EXPLOIT MINT ⚠ (Events #66,#123)
HUNNY 신규 발행: 9,868 + 9,650 = 19,518 HUNNY
핵심 취약점. HunnyMinter가 LP 생성 과정에서 산출한 hunnyBnbAmount를 기반으로 과도한 HUNNY를 mint()한다. 두 사이클에서 총 19,518 HUNNY가 무에서 신규 발행되어 각각 Child CA(0xed50, 0x78e0)에 전달된다.
mint(9,868.04 HUNNY) + mint(9,650.85 HUNNY) = 19,518.89 HUNNY
Step 5 — Recovery (Events #74,#131)
Child CAs → Main CA로 HUNNY 전량 회수
Child CA들이 RewardPaid를 통해 수령한 HUNNY를 Main CA(0x3863)로 전송.
9,868 + 9,650 = 19,518 HUNNY → Main CA
Step 6 — Dump & Profit (Events #80,#137,#142)
19,518 HUNNY → 11.15 WBNB 덤핑 → 원금 복구
HUNNY/BNB 풀에서 1차 9,868 → 5.65 WBNB, 2차 9,650 → 5.50 WBNB 덤핑. 최종 6.018 WBNB를 CAKE/BNB 풀 경유로 원금 6 WBNB 복구. 순이익 ~5.17 WBNB (~$2,084).
순이익: 5.649 + 5.501 − 6.018 + 6.000 − 6.000 = ~5.13 WBNB (~$2,070)

2-3. Involved Entities & PnL

Attacker EOAATTACKER
+~$1.1M (91 tx 누적 추정)
Main Attack CAATTACKER
메인 실행 컨트랙트
HunnyMinterVICTIM
⚠ 과다 민팅 발생원
CakeFlipVaultVICTIM
getReward() 트리거 경로
Child CA #1INTERMEDIARY
사이클 1 HUNNY 중계
Child CA #2INTERMEDIARY
사이클 2 HUNNY 중계

2-4. Minting Mechanism Detail

정상 토큰 가격 (tokenPriceCache)
WBNB$403.21
CAKE$19.31
HUNNY$0.1558
ETH$2,717.15
⚠ 민팅 비대칭 (핵심)
CAKE 투입62.585 ($1,209)
HUNNY 발행19,518 ($3,041)
발행 배율×2.52
덤핑 수익11.15 BNB ($4,496)
HUNNY 덤핑 실효 환율
1차 (Event #80)9,868→5.65 BNB
실효가 1차$0.231/HUNNY
2차 (Event #137)9,650→5.50 BNB
실효가 2차$0.230/HUNNY
단일 Tx 경제성
원금6 WBNB ($2,419)
총 수령~11.15+6 WBNB
총 지출6+6.018 WBNB
순이익~5.13 BNB ($2,070)

2-5. Key Events (온체인 이벤트 기반)

#EventFromToAmountDeviation
1Swap #19
(Flashloan borrow)
Attacker CAPCS CAKE/BNB 6.000000 WBNB → 125.170666 CAKE $403.21/BNB
$2,419 → $2,417
2Withdraw #26PancakeSwapPancakeHunny0.000000 Cake
3Deposit #31PancakeHunnyPancakeSwap0.000003 Cake
4Swap #40HunnyMinterPCS CAKE/BNB 31.292666 Cake → 1.492516 WBNB $19.31/CAKE
$604 → $602
5Swap #43PCS HUNNY/BNBHunnyMinter 1.492516 WBNB → 2,588.098331 HUNNY $0.232/HUNNY
+49.3% from $0.156
6Swap #50HunnyMinterPCS CAKE/BNB 31.292666 Cake → 1.492511 WBNB $19.31/CAKE
$604 → $602
7Mint #61PancakeRouterHUNNY/BNB LP 2,588.098331 HUNNY + 1.489951 WBNB
8Swap #80 ⚠PCS HUNNY/BNBHunnyMinter 9,868.040418 HUNNY → 5.649992 WBNB $0.156/HUNNY
$1,537 → $2,278 (+48%)
9Withdraw #85PancakeSwapPancakeHunny0.000000 Cake
10Deposit #88PancakeHunnyPancakeSwap0.000000 Cake
11Swap #97HunnyMinterPCS CAKE/BNB 31.292666 Cake → 1.492506 WBNB $19.31/CAKE
$604 → $602
12Swap #100PCS HUNNY/BNBHunnyMinter 1.492506 WBNB → 2,599.418299 HUNNY $0.232/HUNNY
+48.7% from $0.156
13Swap #107HunnyMinterPCS CAKE/BNB 31.292666 Cake → 1.492502 WBNB $19.31/CAKE
$604 → $602
14Mint #118PancakeRouterHUNNY/BNB LP 2,599.418299 HUNNY + 1.489943 WBNB
15Swap #137 ⚠PCS HUNNY/BNBHunnyMinter 9,650.847346 HUNNY → 5.501949 WBNB $0.156/HUNNY
$1,504 → $2,218 (+48%)
16Swap #142
(Flashloan repayment)
Attacker CAPCS CAKE/BNB 6.018054 WBNB → 6.000000 WBNB 원금 환원
fee: 0.018 BNB ($7.3)

2-6. 유사 공격 비교표

프로젝트날짜체인손실공격 기법
PancakeBunny2021-05-19BSC~$45MFlash Loan + Minting Manipulation
AutoShark2021-05-24BSC~$0.82MPerformance Fee Minting (포크)
Merlin Labs2021-05-26BSC~$0.68MPerformance Fee Minting (포크)
★ PancakeHunny2021-06-03BSC~$1.1MantiWhale 우회 + Minting (×91)
PancakeHunny (2차)2021-10-20BSC~$1.9MFlash Loan + TUSD 경로 조작

2-7. Root Causes & Lessons

근본 원인
HunnyMinter.mintFor()가 외부에서 전달된 CAKE(62.585)를 WBNB→HUNNY→LP 경로로 처리하면서 산출한 hunnyBnbAmount를 기반으로 19,518 HUNNY를 신규 발행. 투입 $1,209 대비 발행 $3,041 — 2.52배 초과 민팅.
antiWhale 메커니즘이 단일 Transfer의 크기만 제한하므로, Child Contract를 경유한 다단계 전송/회수 패턴으로 완벽히 우회됨.
PancakeBunny(5/19), AutoShark(5/24), Merlin Labs(5/26) 공격이 동일 취약점으로 발생한 후에도 14일간 패치하지 않고 운영.
교훈
민팅 수량은 외부 입력(전달된 CAKE 금액)의 시장가 기준으로 상한을 검증해야 한다. LP 생성 과정의 내부 hunnyBnbAmount를 신뢰하면 조작 가능.
포크 프로젝트는 원본의 보안 사고 발생 시 동일 함수를 즉시 감사하고 패치해야 한다. 2주 이상의 대응 기회를 놓친 것은 운영 실패.
민팅 함수에 블록당/에포크당 최대 발행량, 타임락, 거버넌스 멀티시그 승인 등 다층 방어 필요.

2-8. 공격 당시 토큰 가격 (tokenPriceCache)

WBNB
$403.21
tokenPriceCache
CAKE
$19.31
tokenPriceCache
HUNNY
$0.1558
tokenPriceCache
HUNNY (공격 후)
~$0.075
−52% 가격 폭락
ETH
$2,717.15
참고 (tokenPriceCache)
HUNNY/BNB LP
$17,008
per LP token
💡 가격 조작 핵심: 공격자는 AMM 가격을 직접 조작하지 않았다. HunnyMinter의 성과 수수료 → LP 생성 → hunnyBnbAmount 산출 → mint() 경로에서, 외부 주입된 CAKE가 과도한 HUNNY 민팅으로 이어지는 비대칭 구조를 악용. HUNNY/BNB 풀의 실효 환율($0.231)이 정상가($0.156) 대비 +48% 높은 것은, 공격 전 풀에 유동성이 충분했기 때문이며 91회 반복 덤핑으로 점진적으로 하락했다.

Block 3 — 인터랙티브 Fund Flow

Step 1: CAKE 스왑
Step 2: Minter 주입
Step 3: 민팅
Step 4: 회수+덤핑
Main CA(0x3863)가 6 WBNB를 PancakeSwap CAKE/BNB 풀에서 125.17 CAKE로 스왑한다.
Attacker (0x3863) Main CA PCS CAKE/BNB PancakeSwap HunnyMinter ⚠ 0x109e HUNNY mint() HUNNY/BNB PancakeSwap Child CAs (0xed50/0x78e0) 6 BNB→125 CAKE 62.5 CAKE mint 19,518 19.5K dump11.15 BNB → 원금 복구 BNB flowMintDumpRecovery
BNB Balance
−6 WBNB
CAKE Balance
+125.17
HUNNY Balance
0
Status
CAKE 확보

Block 4 — 단일 Tx 가치 흐름 (Waterfall)

초기 투입비용 / 수수료민팅 수익Net profit