De: echipa de securitate Jiujiu@slowmist

fundal

Potrivit informațiilor echipei de securitate SlowMist, pe 4 septembrie 2024, proiectul de venituri din lichidități descentralizate Penpie a fost atacat, iar atacatorul a obținut profit de aproape 30 de milioane de dolari. Echipa de securitate SlowMist a analizat incidentul și a împărtășit rezultatele după cum urmează:

(https://x.com/Penpiexyz_io/status/1831058385330118831)

cunoștințe pre-condiții

Pendle Finance este un protocol de tranzacționare a randamentului financiar descentralizat cu peste 4,5 miliarde USD în valoare totală blocată. Protocolul s-a integrat cu succes cu Magpie cu scopul de a optimiza oportunitățile de venituri și de a-și îmbunătăți modelul veTokenomics. Pe această bază, proiectul Penpie a introdus o funcție de extragere a lichidității pentru a permite pieței Pendle Finance să obțină venituri pasive.

Următoarele concepte importante sunt incluse în Pendle Finance:

  • PT (Principal Token): reprezintă principalul la un anumit moment în timp în viitor. Deținerea PT înseamnă că deții proprietatea asupra principalului și îl poți răscumpăra după scadență. De exemplu, dacă dețineți o opțiune PT-stETH care expiră într-un an, veți putea răscumpăra stETH în valoare de 1 ETH după 1 an.

  • YT (Yield Token): reprezintă câștigurile viitoare. Deținerea YT înseamnă că deții toate randamentele în timp real generate de activele de bază și poți revendica manual profiturile acumulate pe Pendle în orice moment. Dacă dețineți 1 YT-stETH și randamentul mediu pe stETH este de 5%, atunci la sfârșitul anului veți acumula 0,05 stETH.

  • SY (Simple Yield): Un contract folosit pentru a încheia orice simbol purtător de dobândă. Oferă o interfață standardizată pentru a interacționa cu mecanismul de generare a randamentului oricărui simbol purtător de dobândă.

  • LPT (Liquidity Provider Token): Reprezintă o piață de lichiditate ca un certificat care oferă lichiditate pentru activele suport.

  • PRT (Pool Reward Token): Reprezintă certificatul de depozit al jetoanelor LPT depuse de utilizatori în pool-ul Penpie.

cauza de bază

În centrul incidentului a fost presupunerea greșită a lui Penpie că toate piețele create de Pendle Finance erau legitime atunci când înregistrau noi piețe Pendle. Cu toate acestea, procesul de creare a pieței Pendle Finance este deschis, permițând oricui să creeze o piață, iar parametrii cheie, cum ar fi adresa contractului SY, pot fi personalizați de către utilizatori. Profitând de acest lucru, atacatorul a creat un contract de piață care conține un contract SY rău intenționat și a folosit mecanismul de care are nevoie grupul Penpie pentru a apela contractul extern SY atunci când obține recompense și a folosit împrumuturi flash pentru a adăuga o cantitate mare de lichiditate pe piață. și pool, amplificând artificial Creșteți suma recompensei și obțineți un profit.

Analiza etapelor de atac

Pregătirea pentru atac

Hash tranzacție: 0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1

1. Mai întâi, atacatorul creează contracte de venituri PT și YT prin funcția createYieldContract a contractului PendleYieldContractFactory, setează SY ca adresă contractului de atac și apelează funcția createNewMarket a contractului PendleMarketFactoryV3 pentru a crea contractul de piață corespunzător 0x5b6c_PENDLE-LPT.

2. În continuare, atacatorul folosește registerPenpiePool al contractului PendleMarketRegisterHelper pentru a înregistra pool-ul Penpie. În acest proces, sunt create contractul cu simbolul PRT al certificatului de depozit și contractul de recompensă aferent, iar informațiile grupului sunt înregistrate în Penpie.

3. Ulterior, atacatorul apelează funcția mintPY a contractului YT pentru a bate o cantitate mare de YT și PT, suma depinde de cursul de schimb returnat de contractul atacator (contract SY).​

4. Imediat după aceea, atacatorul depune PT pe piață 0x5b6c_PENDLE-LPT și bate jetoane LP.

5. În cele din urmă, atacatorul depune jetoane LP în pool-ul Penpie în schimbul jetoanelor PRT certificat de depozit.

atac formal

Hash tranzacție: 0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5

1. Atacatorul a împrumutat mai întâi o cantitate mare de jetoane agETH și rswETH prin împrumuturi flash.

2. Apelați funcția batchHarvestMarketRewards a grupului Penpie pentru a colecta recompense de pe piața specificată în loturi. Această operațiune declanșează funcția redeemRewards a contractului de piață 0x5b6c_PENDLE-LPT.

3. În funcția redeemRewards, funcția claimRewards a contractului SY (contract de atac) este apelată extern, timp în care atacatorul folosește fonduri de împrumut flash pentru a crește lichiditatea pentru jetoanele de recompensă (jetoanele de recompensă sunt setate în mod deliberat la două jetoane de piață în atacă contractul 0x6010_PENDLE-LPT și 0x038c_PENDLE-LPT) și depuneți jetoanele de piață obținute în pool-ul Penpie pentru a obține jetoanele de certificat de depozit corespunzătoare.

4. În continuare, aceste jetoane de piață nou depuse în pool-ul Penpie vor fi folosite ca recompense calculate, iar apoi aceste jetoane vor fi transferate în contractul Rewarder prin funcția queueNewRewards a contractului.

Deoarece atacatorul este singurul care depune pe piața 0x5b6c_PENDLE-LPT, funcția de revendicare multiplă a contractului MasterPenpie poate fi apelată imediat pentru a retrage această parte a jetoanelor LPT din contractul Rewarder.

5. În cele din urmă, atacatorul arde certificatul de depozit PRT obținut în a treia etapă prin funcția withdrawMarket a contractului PendleMarketDepositHelper, răscumpără jetoanele de piață, și înlătură lichiditatea acestor jetoane de piață împreună cu recompensele extrase în pasul anterior, iar în final obține jetoane de active de bază (agETH și rswETH) pentru a obține profituri.

Rezuma

Acest incident de securitate a expus problema verificării insuficiente în procesul de înregistrare a pieței Penpie și a dependenței excesive de logica de creare a pieței Pendle Finance, permițând atacatorilor să controleze mecanismul de distribuire a recompenselor prin contracte rău intenționate și să obțină recompense excesive. Echipa de securitate SlowMist recomandă părților din proiect să adauge un mecanism strict de verificare a listei albe atunci când se înregistrează pe piață, pentru a se asigura că numai piețele verificate pot fi acceptate. În plus, pentru logica de afaceri cheie care implică apeluri contractuale externe, auditul și testarea de securitate ar trebui consolidate pentru a evita ca incidente similare să se repete.