
해킹으로 약 2700만 달러 상당의 암호화 자산을 도난당한 Penpie, 왜 해커에게 '피터졌는가'?
글: Beosin
2024년 9월 4일, Beosin Alert 모니터링에 따르면 Pendle 기반 DeFi 프로토콜 Penpie가 해커의 공격을 받아 약 2700만 달러 상당의 암호화 자산이 유출되었습니다. 이에 대해 Beosin 보안 팀은 즉각적으로 분석을 진행하였으며 그 결과는 아래와 같습니다.
Penpie는 Pendle Finance와 통합된 DeFi 플랫폼으로, PENDLE 토큰을 스테이킹하여 Pendle Finance 내에서 거버넌스 권한과 수익률 증대를 제공하는 데 중점을 두고 있습니다. Penpie는 Pendle Finance 사용자에게 수익성 및 veTokenomics 개선 서비스를 제공하는 것을 목표로 하고 있습니다.
사건 관련 정보
● 공격 트랜잭션
0x56e09abb35ff12271fdb38ff8a23e4d4a7396844426a94c4d3af2e8b7a0a2813
● 공격자 주소
0xc0Eb7e6E2b94aA43BDD0c60E645fe915d5c6eb84
● 공격 계약
0x4aF4C234B8CB6e060797e87AFB724cfb1d320Bb7
● 피해를 입은 계약
0x6e799758cee75dae3d84e09d40dc416ecf713652
취약점 분석
본 사건은 공격자가 market 계약의 claimRewards 함수 내에서 재진입(Reentrancy) 공격을 통해 staking 계약의 잔액을 인위적으로 증가시키고, 이후 staking 계약에서 초과된 토큰과 스테이킹 자산을 인출함으로써 이득을 취한 것입니다.
공격 과정
공격 준비 단계:
1. 공격자는 공격용 스마트 계약을 통해 Penpie 프로토콜의 Factory 계약을 호출하여 새로운 market과 Yield를 생성하였으며, 여기서 SY(Syndicate)를 공격용 계약으로 설정하였습니다.
0xfda0dde38fa4c5b0e13c506782527a039d3a87f93f9208c104ee569a642172d2

2. 공격자는 네 종류의 토큰을 플래시론 형태로 대출받아 향후 담보 자금을 마련하였으며, staking 계약의 batchHarvestMarketRewards 함수를 호출하여 새로 생성된 market의 보상 정보를 갱신했습니다.

3. batchHarvestMarketRewards 함수 내에서 market의 보상을 업데이트하는 과정에서 market 계약의 redeemRewards 함수가 호출되며, 해당 함수 전후의 잔고 변화가 기록됩니다.

4. market 계약의 redeemRewards 함수는 다시 SY 계약의 claimReward 함수를 호출하게 되는데, 이 SY 계약은 바로 공격자의 계약입니다. 공격 계약은 이 함수를 통해 Staking 계약에 대해 재진입을 수행하며, 총 4회에 걸쳐 플래시론 자금을 staking 계약에 담보로 예치합니다.


5. 이후 Staking 계약으로 돌아오게 되며, redeemRewards 함수 전후의 잔고 차이가 크기 때문에 _sendRewards 함수가 실행됩니다. 이 함수는 최종적으로 _queueRewarder를 호출하여 초과된 토큰을 market 계약에 승인하고 이를 보상으로 기록합니다.

6. 공격자는 기록된 보상을 인출합니다.

7. 공격자는 withdraw 함수를 통해 담보로 맡긴 자산을 인출하고 플래시론을 상환함으로써 이득을 실현합니다.

Pendle은 이후 공격 분석 보고서를 발표하며, 취약점을 발견하는 즉시 계약을 일시 정지시켜 추가적인 1.05억 달러 규모의 자산 손실을 방지했다고 밝혔습니다.
자금 추적
기사 작성 시점 기준, 유출된 자금은 약 2700만 달러이며, Beosin Trace 분석 결과 공격자는 모든 유출 자금을 ETH로 전환한 후, 우선 0x2f2dDE668e5426463E05D795f5297dB334f61C39 주소에 보관하였습니다.

현재까지 Penpie 공격자는 Tornado Cash로 약 2,900 ETH(약 690만 달러 상당)를 점차적으로 송금한 것으로 확인되었습니다.
현재 Penpie 프로젝트 팀은 블록체인 상에서 공격자에게 직접 메시지를 전달하며, 도난 자금의 반환을 요청하고 있으며, 반환 시 인센티브를 지급할 용의가 있음을 밝히고 연락처도 함께 제공하였습니다.
요약
본 사건에 대해 Beosin 보안 팀은 다음과 같은 조치를 제안합니다. 첫째, 계약 내 관련 함수에 재진입 방지 수정자(Reentrancy Guard)를 추가할 것. 둘째, 토큰의 화이트리스트 검증을 사용하지 않을 경우, 통일된 wrapper 계약을 통해 토큰을 재생성하는 것이 바람직함. 셋째, 프로젝트 출시 전에는 반드시 전문 보안 감사 회사에 의뢰하여 포괄적인 보안 감사를 실시하여 보안 리스크를 사전에 방지할 것을 강력히 권고합니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News













